# 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)