48 def unpack(cls, header: bytes) ->
'PacketHeader':
50 @brief Unpacks bytes into a PacketHeader.
52 @details Extracts each field from the header byte using bitwise operations.
54 @param header The packed header as bytes.
55 @return The unpacked PacketHeader object.
57 header_form = int.from_bytes(header,
"big") & Constants.FORM_MASK
58 fixed_bit = int.from_bytes(header,
"big") & Constants.FIXED_MASK
59 spin_bit = int.from_bytes(header,
"big") & Constants.SPIN_MASK
60 reserved_bits = int.from_bytes(header,
"big") & Constants.RES_MASK
61 key_phase = int.from_bytes(header,
"big") & Constants.KEY_MASK
62 packet_number_length = int.from_bytes(header,
'big') & Constants.PACKET_NUMBER_LENGTH_MASK
63 return PacketHeader(header_form=bool(header_form), fixed_bit=bool(fixed_bit), spin_bit=bool(spin_bit),
64 reserved_bits=reserved_bits, key_phase=bool(key_phase),
65 packet_number_length=packet_number_length)