Packet Overview
CCSDS Space Packet Standard
Extended information can be found in CCSDS 727.0-B-5. A space packet consists of a packet primary header and a packet data field. The packet data field consists of a packet secondary header and a user data field. PUS packets are a type of space packets and have been explained in great detail in the chapter below. You can also find a concrete example of a Space Packet in form of a ping telecommand there.
ECSS Packet Utilisation Standard (PUS)
All packet 16-bit checksums for Telecommands (TCs) and Telemetry (TMs) are
calculated with CRC-CCITT. In Python, the pre-defined crc-ccitt-false
function from the crcmod package can be used to calculate this checksum.
Telecommands
This chapter contains some high level information about the
spacepackets.ecss.tc.PusTelecommand class. Extended information can be found
in ECSS-E-70-41A on p.42 or in ECSS-ST-E-70-41C starting at page 442.
The structure is shown as follows for a ping telecommand using the PUS service 17 with the subervice ID 1. This can also be denoted more briefly as TC[17,1]. The first part of the packet is always the the Space Packet Header because PUS packets are a subtype of space packets. The packet length is an unsigned integer C = Number of Octets in Packet Data Field - 1. The example below has a source sequence count of 25 and an APID of 0x73.
o = optional, Srv = Service
------------------------------------------------------------------------------------------------------------------
/ ------------------------------------------Packet Header(48)------------------------------------------ | Packet \
|----------------Packet ID(16)-----------------------|Packet Sequence Control (16) | Packet Length (16)| Data Field |
|Version | Type(1) |Data Field |APID(11) | SequenceFlags(2) |Sequence | | (Variable) |
|Number(3) | |Header Flag(1)| | |Count(14)| | |
h| 0x18 | 0x73 | 0xc0 | 0x19 | 0x00 | 0x04 | |
b| 000 1 1 000| 01110011 | 11 000000 | 00011001|00000000 | 0000100 | |
d| 0 | 1 | 1 | 115(ASCII s) | 3 | 25 | 0 | 4 | |
---------------------------------------------------------------------------------------------------------------------
The second part is the packet data field which also includes a PUS data field header.
PUS C
o = optional, Srv = Service
-------------------------------------------------------------------------------------------------------
/ -----------------------------------------------Packet Data Field--------------------------------------- \
| --------------------------------Data Field Header ------------------ | --------User Data Field--------- |
|TC PUS Ver.(4)|Ack(4)|SrvType (8)|SrvSubtype(8)|Source ID(16)|Spare(o)|AppData|Spare(o)|PacketErrCtr (16)|
h| 0x2F | 0x11 | 0x01 | 0x00 | 0x00 | | | | 0xA0 | 0xB8 |
b| 0010 1111 | 00010001 | 00000001 | 0..0 | 0..0 | | | | | |
d| 2 15 | 17 | 1 | 0 | 0 | | | | | |
----------------------------------------------------------------------------------------------------------
PUS A
PUS A is not supported anymore starting at version v0.12.0.
o = optional, Srv = Service
-----------------------------------------------------------------------------------------------------------------
/ -----------------------------------------------Packet Data Field------------------------------------------------- \
| --------------------------------Data Field Header ---------------------------|AppData|Spare| PacketErrCtr |
|CCSDS(1)|TC PUS Ver.(3)|Ack(4)|SrvType (8)|SrvSubtype(8)|Source ID(o)|Spare(o)| (var)|(var)| (16) |
h| 0x11 (0x1F) | 0x11 | 0x01 | | | | | 0xA0 | 0xB8 |
b| 0 001 1111 |00010001 | 00000001 | | | | | | |
d| 0 1 1111 | 17 | 1 | | | | | | |
--------------------------------------------------------------------------------------------------------------------
Telemetry
This chapter contains some high level information about the
spacepackets.ecss.tm.PusTelemetry class. Extended information can be found
in ECSS-E-70-41A on p.42 or in ECSS-ST-E-70-41C starting at page 442.
The structure is shown as follows for a ping reply using the PUS service 17 with the subervice ID 2. This can also be denoted more briefly as TM[17,2]. The first part of the packet is always the the Space Packet Header because PUS packets are a subtype of space packets. The packet length is an unsigned integer C = Number of Octets in Packet Data Field - 1.
------------------------------------------------------------------------------------------------------------------
/ ------------------------------------------Packet Header(48)------------------------------------------ | Packet \
| ---------------Packet ID(16)----------------------- | Packet Sequence Control (16)| Packet Length (16)| Data Field |
| Version | Type(1) |Data Field |APID(11) | SequenceFlags(2) |Sequence | | (Variable) |
| Number(3) | |Header Flag(1)| | |Count(14) | | |
h| 0x08 | 0x73 | 0xc0 | 0x19 | 0x00 | 0x04 | |
b| 000 0 1 000| 01110011 | 11 000000 | 00011001 |00000000 | 0000100 | |
d| 0 | 0 | 1 | 115(ASCII s) | 3 | 25 | 0 | 4 | |
---------------------------------------------------------------------------------------------------------------------
The second part is the packet data field which also includes a PUS data field header.
PUS C
---------------------------------------------------------------------------------------------------------------------
/------------------------------------------------Packet Data Field---------------------------------------------------- \
|---------------------------------Data Field Header -------------------------------------------- | --User Data Field-- |
|TM PUS Ver.(4)|TimeRef(4)|SrvType (8)|SrvSubtype(8)|Subcounter(16)|DestId(16)|Time(var)|Spare(o)|Data|Spare| CRC(16) |
h| 0x20 | 0x11 | 0x02 | 0x00 | 0x00 |0x00|0x00 | | | | | Calc. |
b| 0010 0000 |00010001 | 00000010 | 0..0 | 0..0 |0..0|0..0 | | | | | Calc. |
d| 2 0 | 17 | 2 | 0 | 0 | | | | | Calc. |
----------------------------------------------------------------------------------------------------------------------
PUS A
PUS A is not supported anymore starting at version v0.12.0.
---------------------------------------------------------------------------------------------------------------------
/------------------------------------------------Packet Data Field--------------------------------------------------- \
|---------------------------------Data Field Header ---------------------------------------|AppData|Spare|PacketErrCt |
|Spare(1)|TM PUS Ver.(3)|Spare(4)|SrvType(8)|SrvSubtype(8)|Subcounter(8,o)|Time(var)|Spare(o)|(var) |(var)| (16) |
h| 0x11 (0x1F) | 0x11 | 0x02 | 0x00 | | | | | Calc. |
b| 0 001 0000 |00010001 | 00000010 | 0..0 | | | | | |
d| 0 1 0 | 17 | 2 | 0 | | | | | |
----------------------------------------------------------------------------------------------------------------------