Module ammosreader.AmmosGlobalFrameHeader
I provide an AMMOS global frame header.
Expand source code
"""I provide an AMMOS global frame header."""
import struct
import logging
logging.basicConfig(filename='ammos.log', level=logging.DEBUG)
class AmmosGlobalFrameHeader:
"""I implement an AMMOS global frame header."""
MAGIC_WORD = "726574fb"
HEADER_SIZE = 24
@classmethod
def from_bytes(cls, bytes):
"""I create a new AmmosGlobalFrameHeader from bytes."""
assert len(bytes) == cls.HEADER_SIZE
elements = struct.unpack('<4s4s4s4s4s4s', bytes)
magic_word = elements[0].hex()
if magic_word != cls.MAGIC_WORD:
return None
frame_length = (int.from_bytes(elements[1], byteorder='little')*4)
running_frame_number = (int.from_bytes(elements[2], byteorder='little'))
frame_type = (int.from_bytes(elements[3], byteorder='little'))
data_header_length = 4 * int.from_bytes(elements[4], byteorder='little')
reserved = elements[5]
return AmmosGlobalFrameHeader(magic_word, frame_length, running_frame_number,
frame_type, data_header_length, reserved)
def __init__(self, magic_word, frame_length, running_frame_number, frame_type, data_header_length, reserved):
"""I return a new instance of myself initialized with above parameters."""
if magic_word != type(self).MAGIC_WORD:
logging.error("Wrong magic word found")
self.magic_word = magic_word
else:
self.magic_word = magic_word
self.frame_length = frame_length
self.running_frame_number = running_frame_number
self.frame_type = frame_type
self.data_header_length = data_header_length
self.reserved = reserved
def __str__(self):
"""I return the string representation of myself."""
output = ("Global frame header info\n" +
"------------------------\n" +
"Magic word:" + str(self.magic_word) + "\n" +
"Frame length:" + str(self.frame_length) + "\n" +
"Running frame:" + str(self.running_frame_number) + "\n" +
"Frame Type:" + str(self.frame_type) + "\n" +
"Data header length:" + str(self.data_header_length) + "\n")
return output
Classes
class AmmosGlobalFrameHeader (magic_word, frame_length, running_frame_number, frame_type, data_header_length, reserved)
-
I implement an AMMOS global frame header.
I return a new instance of myself initialized with above parameters.
Expand source code
class AmmosGlobalFrameHeader: """I implement an AMMOS global frame header.""" MAGIC_WORD = "726574fb" HEADER_SIZE = 24 @classmethod def from_bytes(cls, bytes): """I create a new AmmosGlobalFrameHeader from bytes.""" assert len(bytes) == cls.HEADER_SIZE elements = struct.unpack('<4s4s4s4s4s4s', bytes) magic_word = elements[0].hex() if magic_word != cls.MAGIC_WORD: return None frame_length = (int.from_bytes(elements[1], byteorder='little')*4) running_frame_number = (int.from_bytes(elements[2], byteorder='little')) frame_type = (int.from_bytes(elements[3], byteorder='little')) data_header_length = 4 * int.from_bytes(elements[4], byteorder='little') reserved = elements[5] return AmmosGlobalFrameHeader(magic_word, frame_length, running_frame_number, frame_type, data_header_length, reserved) def __init__(self, magic_word, frame_length, running_frame_number, frame_type, data_header_length, reserved): """I return a new instance of myself initialized with above parameters.""" if magic_word != type(self).MAGIC_WORD: logging.error("Wrong magic word found") self.magic_word = magic_word else: self.magic_word = magic_word self.frame_length = frame_length self.running_frame_number = running_frame_number self.frame_type = frame_type self.data_header_length = data_header_length self.reserved = reserved def __str__(self): """I return the string representation of myself.""" output = ("Global frame header info\n" + "------------------------\n" + "Magic word:" + str(self.magic_word) + "\n" + "Frame length:" + str(self.frame_length) + "\n" + "Running frame:" + str(self.running_frame_number) + "\n" + "Frame Type:" + str(self.frame_type) + "\n" + "Data header length:" + str(self.data_header_length) + "\n") return output
Class variables
var HEADER_SIZE
var MAGIC_WORD
Static methods
def from_bytes(bytes)
-
I create a new AmmosGlobalFrameHeader from bytes.
Expand source code
@classmethod def from_bytes(cls, bytes): """I create a new AmmosGlobalFrameHeader from bytes.""" assert len(bytes) == cls.HEADER_SIZE elements = struct.unpack('<4s4s4s4s4s4s', bytes) magic_word = elements[0].hex() if magic_word != cls.MAGIC_WORD: return None frame_length = (int.from_bytes(elements[1], byteorder='little')*4) running_frame_number = (int.from_bytes(elements[2], byteorder='little')) frame_type = (int.from_bytes(elements[3], byteorder='little')) data_header_length = 4 * int.from_bytes(elements[4], byteorder='little') reserved = elements[5] return AmmosGlobalFrameHeader(magic_word, frame_length, running_frame_number, frame_type, data_header_length, reserved)