1 | import struct
|
---|
2 |
|
---|
3 |
|
---|
4 | class AmmosGlobalFrameHeader():
|
---|
5 |
|
---|
6 | MAGIC_WORD = "726574fb"
|
---|
7 |
|
---|
8 | @classmethod
|
---|
9 | def from_bytes(cls, bytes):
|
---|
10 |
|
---|
11 | elements = struct.unpack('4s4s4s4s4s4s', bytes)
|
---|
12 |
|
---|
13 | magic_word = elements[0].hex()
|
---|
14 |
|
---|
15 | frame_length = (int.from_bytes(elements[1], byteorder='little')*4)
|
---|
16 |
|
---|
17 | running_frame_number = (int.from_bytes(elements[2], byteorder='little'))
|
---|
18 |
|
---|
19 | frame_type = (int.from_bytes(elements[3], byteorder='little'))
|
---|
20 |
|
---|
21 | data_header_length = 4 * int.from_bytes(elements[4], byteorder='little')
|
---|
22 |
|
---|
23 | reserved = elements[5]
|
---|
24 |
|
---|
25 | return AmmosGlobalFrameHeader(magic_word, frame_length, running_frame_number,
|
---|
26 | frame_type, data_header_length, reserved)
|
---|
27 |
|
---|
28 | def __init__(self, magic_word, frame_length, running_frame_number, frame_type, data_header_length, reserved):
|
---|
29 |
|
---|
30 | if magic_word != self.MAGIC_WORD:
|
---|
31 | print("Wrong magic word")
|
---|
32 | self.magic_word = magic_word
|
---|
33 | return None
|
---|
34 | else:
|
---|
35 | self.magic_word = magic_word
|
---|
36 | self.frame_length = frame_length
|
---|
37 | self.running_frame_number = running_frame_number
|
---|
38 | self.frame_type = frame_type
|
---|
39 | self.data_header_length = data_header_length
|
---|
40 | self.reserved = reserved
|
---|
41 |
|
---|
42 | def __str__(self):
|
---|
43 | output = ("Global frame header info\n" +
|
---|
44 | "------------------------\n" +
|
---|
45 | "Magic word:" + str(self.magic_word) + "\n" +
|
---|
46 | "Frame length:" + str(self.frame_length) + "\n" +
|
---|
47 | "Running frame:" + str(self.running_frame_number) + "\n" +
|
---|
48 | "Frame Type:" + str(self.frame_type) + "\n" +
|
---|
49 | "Data header length:" + str(self.data_header_length) + "\n")
|
---|
50 | return output
|
---|
51 |
|
---|
52 | def size(self):
|
---|
53 | return 24
|
---|