# Consultative Committee for Space Data Systems (CCSDS) Space Packet Defenition # Primary Header + Raw Payload # Ref: https://public.ccsds.org/Pubs/133x0b2e1.pdfa # # Example Packet: # [0x12, 0x01, 0xc0, 0x00, 0x00, 0x05, 0x01, 0x02, 0x03, 0x04, 0x05] # # Output: # Version Number: 0 # Packet Type: 1 # Secondary Header Flag: 0 # APID: 0x201 # Sequence Flags: 3 # Packet Sequence Count: 0 # Data Length: 5 # Data: [1, 2, 3, 4, 5] # CCSDS packet w/ primary header + payload [[formats]] name = "ccsds" bit_flip = false [[formats.fields]] name = "Version Number" field_type = {type = "UInt", bit_width = 3, endianness = "BigEndian"} [[formats.fields]] name = "Packet Type" field_type = {type = "UInt", bit_width = 1, endianness = "BigEndian"} [[formats.fields]] name = "Secondary Header Flag" field_type = {type = "UInt", bit_width = 1, endianness = "BigEndian"} [[formats.fields]] name = "APID" print_type = {print = "Base", base = 16} field_type = {type = "UInt", bit_width = 11, endianness = "BigEndian"} [[formats.fields]] name = "Sequence Flags" field_type = {type = "UInt", bit_width = 2, endianness = "BigEndian"} [[formats.fields]] name = "Packet Sequence Count" field_type = {type = "UInt", bit_width = 14, endianness = "BigEndian"} [[formats.fields]] name = "Data Length" field_type = {type = "UInt", bit_width = 16, endianness = "BigEndian"} [[formats.fields]] name = "Data" # Allow payloads up to the max size that can be specfied in "Data Length" field_type = {type = "Bytes", max_len = 65535, endianness = "BigEndian"} # CCSDS packet w/ primary header + secondary header + payload [[formats]] name = "ccsds_sec" bit_flip = false [[formats.fields]] name = "Version Number" field_type = {type = "UInt", bit_width = 3, endianness = "BigEndian"} [[formats.fields]] name = "Packet Type" field_type = {type = "UInt", bit_width = 1, endianness = "BigEndian"} [[formats.fields]] name = "Secondary Header Flag" field_type = {type = "UInt", bit_width = 1, endianness = "BigEndian"} [[formats.fields]] name = "APID" print_type = {print = "Base", base = 16} field_type = {type = "UInt", bit_width = 11, endianness = "BigEndian"} [[formats.fields]] name = "Sequence Flags" field_type = {type = "UInt", bit_width = 2, endianness = "BigEndian"} [[formats.fields]] name = "Packet Sequence Count" field_type = {type = "UInt", bit_width = 14, endianness = "BigEndian"} [[formats.fields]] name = "Data Length" field_type = {type = "UInt", bit_width = 16, endianness = "BigEndian"} [[formats.fields]] name = "Data" # Allow payloads up to the max size that can be specfied in "Data Length" field_type = {type = "Bytes", max_len = 65535, endianness = "BigEndian"} [[formats.fields]] name = "Secondary header" field_type = {type = "Bytes", max_len = 6, endianness = "BigEndian"} [[formats.fields]] name = "data" # allow payloads up to the max size that can be specfied in "data length" field_type = {type = "Bytes", max_len = 65535, endianness = "BigEndian"}