The packet format used within the PicSat mission is largely based on the CCSDS (Consultative Comitee for Space Data Systems) standard. However, the standard has been modified for the particular needs of a small CubeSat mission.
A CCSDS packet is made of three parts: a primary header, a secondary header, and a data section. In most cases (but not all), the information contained in the data section of the PicSat packets can be read bytewise. However, the fields of the primary and secondary headers are not bytes-aligned, and should be read bitwise.
Field: | Primary Header | Secondary Header TM | Data Section | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
- | - | Auxiliary header | Datapoints | |||||||||
Byte: | 0 | ... | 5 | 6 | ... | 11 | 12 | ... | X | X+1 | ... | Y |
All PicSat CCSDS packets have an absolute size limit (set by hardware) of 235 bytes.
To extract data from one of the PicSat CCSDS Telemetry (TM) packets, it is suggested to follow at least these steps and verificatons:
The primary header starts at byte 0 (first byte) of the packet, and ends at byte 7. It is 6 byte long. The following Table describes its content.
Name | Start bit | Length (in bits) | Type | Description | Conversion |
---|---|---|---|---|---|
ccsds_version | 0 | 3 | uint | Version of CCSDS used. Always set to 0. | - |
packet_type | 3 | 1 | uint | 0 is telemetry, 1 is telecommand | - |
secondary_header_flag | 4 | 1 | bool | True if secondary header is present. Always true for PicSat | - |
process_id | 5 | 4 | uint | Identifies source or destination process | - |
level_flag | 9 | 1 | bool | True if packet source of destination is in Level 1 software | - |
payload_flag | 10 | 1 | bool | True if payload packet. False if OBC packet. | - |
packet_category | 11 | 5 | uint | Defines the structure of TM packet. Unused and set to 0 for TCs. | - |
sequence_flag | 16 | 2 | uint | Unused for PicSat. Set to 0b11. | - |
packet_id | 18 | 14 | uint | A counter incremented at each new packet emitted. | - |
data_length | 32 | 16 | uint | Length (in octets) of data field (sec header + opt. aux header + data). | - |
payload_flag | level_flag | pid | Process name | Description |
---|---|---|---|---|
0 | 0 | 0 | L0ComManager | Communication Manager for the Level 0 software |
0 | 0 | 1 | L0MemoryManager | Memory manager for the Level 0 software |
0 | 0 | 2 | L0Housekeeper | Monitoring sensor manager for the Level 0 software |
0 | 0 | 4 | L0EpsManager | Electric and Power System manager |
0 | 0 | 5 | L0AdcsManager | Attitude Determniation and Control System Manager at Level 0 (detumbling) |
0 | 0 | 6 | L0SdCardManager | SD Memory card manager |
0 | 1 | 0 | L1ComManager | Communication manager for the Level 1 software |
0 | 1 | 1 | L1EventManager | Event management and reporting for the Level 1 software |
0 | 1 | 2 | L1AdcsManager | Attitude Determniation and Control System Manager at Level 1 (science pointing) |
0 | 1 | 3 | ModeManager | State machine management |
0 | 1 | 4 | EventManager | Event management and reporting for the Level 1 software |
1 | 1 | 0 | Bootloader | Payload bootloader and software updater |
1 | 1 | 1 | BoardDirector | Payload state machine and subsystem management |
1 | 1 | 2 | HkManager | Payload monitoring sensor management |
1 | 1 | 3 | AcquisitionManager | Payload science data acquisition management |
1 | 1 | 4 | PacketsManager | Payload communication packet creation and management |
1 | 1 | 5 | ObcInterfaceManager | Communication with the OBC |
1 | 1 | 6 | BeaconManager | Automated beacon transmission management |
The secondary header of telemetries starts at byte 6 of the packet, and ends at byte 11. It is 6 byte long. The following Table describes its content.
Name | Start bit | Length (in bits) | Type | Description | Conversion |
---|---|---|---|---|---|
days_since_ref | 0 | 16 | uint | Number of fully elapsed days since January, 1, 2000, 00:00:00 (UTC) | - |
ms_since_today | 16 | 32 | uint | Number of fully elapsed ms since beginning of day (UTC) | - |
The secondary header of telecommands starts at byte 6 of the packet, and ends at byte 21. It is 16 byte long. The following Table describes its content.
Name | Start bit | Length (in bits) | Type | Description | Conversion |
---|---|---|---|---|---|
req_ack_reception | 0 | 1 | bool | True if a reception acknowledgement is requested. | - |
req_fmt_reception | 1 | 1 | bool | True if a format acknowledgement is requested. | - |
req_exe_reception | 2 | 1 | bool | True if an execution acknowledgement is requested. | - |
telecommand_id | 3 | 10 | uint | The telecommand number (identifies the TC). | - |
emitter_id | 13 | 3 | uint | The id of the emitter of the TC. | - |
emitter_id | 16 | 128 | uint | Cryptographic signature to authorize execution of TC. | - |
In a telemetry packet, the section after the primary and secondary headers contains the optional auxiliary header, and the data themselves. These are highly mission specific. Each packet category (defined by the combination of the payload_flag and the packet_category from the primary CCSDS header) has its own auxiliary header and data format. In the following two tables, you will find links to all the packet format descriptions, when they are realeased. The "repeat" column indicate if the data format shall be read repeatedly until the end of packet (multiple data points in one packet, see unpacking procedure above).
If you click on the name of the category, you can also get an example CCSDS packet (no KISS, no AX.25), to test your software.
Category | Name | Description | Aux header format | Data format | Repeat |
---|---|---|---|---|---|
0 | ReceptionAcknowledgement | Emitted when a tc is received (if requsted) | No auxiliary header | Data format | False |
1 | Beacon | Automated beacon telemetry emitted every 10 s | No auxiliary header | Data format | False |
2 | BootErrorReport | Emitted at boot up | Auxiliary header format | Data format | False |
3 | EventReport | Signals the occurence of an event | Auxiliary header format | Data format | False |
4 | HouseKeeping | Data from on-board monitoring sensors | Auxiliary header format | Data part 1, Data part 2 | False |
5 | DumpAnswerData | Replo to a TC when many data must be sent | Auxiliary header format | Data format | False |
6 | PatchListSegments | The list of sofwtare segments for update | Auxiliary header format | Data format | False |
7 | Science | Science data from payload | Auxiliary header format | Data format | False |
8 | ScienceReduced | Science data reduced | Auxiliary header format | Data format | False |
9 | UNUSED | - | - | - | - |
10 | ScienceFluxMean | Science data reduced by OBC (mean values of flux) | Auxiliary header format | Data format | False |
11 | ScienceFluxVariance | Science data reduced by OBC (variance-covariance matrix) | Auxiliary header format | Data format | False |
12 | ListOfFilesOnSdCard | Reply to space 'ls' | Auxiliary header format | Data format | False |
13 | ListOfCounters | Counters of packets stored on-board | Auxiliary header format | Data format | False |
14 | counters | - | Auxiliary header format | Data format | False |
15 | HkAdcsStandard | Standard telemetry from ADCS | No auxiliary header | Data format | False |
16 | HkAdcsActuator | Actuator telemetry from ADCS | No auxiliary header | Data format | False |
17 | HkAdcsSensor | Sensor telemetry from ADCS | No auxiliary header | Data format | False |
18 | HkAdcsAttitude | Attitude telemetry from ADCS | No auxiliary header | Data format | False |
19 | HkL1 | L1 Software monitoring data | No auxiliary header | Data format | False |
20 | SchedulerFifoList | On-board scheduler programmed activities | No auxiliary header | Data format | False |
21-28 | RESERVED | - | - | - | - |
29 | TcAnswer | Answer to a telecommand sent from ground | Auxiliary header format | Data format | False |
30 | FormatAcknowledgement | Acknowledge the format of the TC received (if requested) | Auxiliary header format | Data format | False |
31 | ExecutionAcknowledgement | Acknowledge the execution of the TC received (if requested) | Auxiliary header format | Data format | False |
Category | Name | Description | Aux header format | Data format | Repeat |
---|---|---|---|---|---|
0 - 3 | RESERVED | - | - | - | - |
4 | House-Keeping | Data from monitoring sensors on the payload board | Auxiliary header format | Data format | True |
5 | HF Science | High frequency (1 kHz) raw science data from science instrument | Auxiliary header format | Data format | True |
6 | UNUSED | - | - | - | - |
7 | Payload Beacon | Automated beacon emitted by the payload board | No auxiliary header | Data format | False |
8-28 | RESERVED | - | - | - | - |
29 | TcAnswer | Answer to a telecommand sent from ground | Auxiliary header format | Data format | False |
30 | FormatAcknowledgement | Acknowledge the format of the TC received (if requested) | Auxiliary header format | Data format | False |
31 | ExecutionAcknowledgement | Acknowledge the execution of the TC received (if requested) | Auxiliary header format | Data format | False |