[1e781ba] | 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
|
---|