Skip to content

4 Packet Format Details

Mark Jessop edited this page Jun 16, 2023 · 9 revisions

We are currently working on upgrades to the underlying FSK modem which will provide a more robust and flexible telemetry system. As part of these changes, it will be possible to use either 16 or 32 byte packets (though not at the same time!). This page documents the proposed telemetry format structure.

Payload IDs

All of the Horus Binary packet formats use a numerical payload ID instead of a textual callsign. These payload IDs are decoded to a textual callsign during the decoding process through the payload ID list. Users can request their own payload ID by either raising an issue on this repository, or raising a pull request with the required changes.

Payload IDs are shared between the v1 and 16-byte modes, which only have a single-byte payload ID field. The v2 32-byte mode enables a large number of payload IDs, and so payloads using this mode will be allocated IDs > 256 to enable the 0-255 range priority for v1 and 16-byte v2 payloads.

Packet Formats

Horus Binary v1 (22 bytes)

Note: This packet format has now been retired, and the Horus v2 format is now in use.

Byte No. Data Type Size (bytes) Description
0 uint8 1 Payload ID (0-255)
1 uint16 2 Sequence Number
3 uint8 1 Time-of-day (Hours)
4 uint8 1 Time-of-day (Minutes)
5 uint8 1 Time-of-day (Seconds)
6 float 4 Latitude
10 float 4 Longitude
14 uint16 2 Altitude (m)
16 uint8 1 Speed (kph)
17 uint8 1 Satellites
18 int8 1 Temperature (deg C)
19 uint8 1 Battery Voltage
20 uint16 2 CRC16-CCITT Checksum

Horus Binary v2 - 32 byte format

The 32-byte format is proposed to become the new 'standard' HorusBinary telemetry format. It is based on the 22-byte format above, but with an expanded payload ID field to allow for more unique callsigns, and additional space is available for custom data.

Byte No. Data Type Size (bytes) Description
0 uint16 2 Payload ID (0-65535)
2 uint16 2 Sequence Number
4 uint8 1 Time-of-day (Hours)
5 uint8 1 Time-of-day (Minutes)
6 uint8 1 Time-of-day (Seconds)
7 float 4 Latitude
11 float 4 Longitude
15 uint16 2 Altitude (m)
17 uint8 1 Speed (kph)
18 uint8 1 Satellites
19 int8 1 Temperature (deg C)
20 uint8 1 Battery Voltage
21 ??? 9 Custom data
30 uint16 2 CRC16-CCITT Checksum

The custom data fields must be described in this json file which will need a new entry added for each new callsign.

Horus Binary v2 - 16-byte Format - NOT YET IMPLEMENTED

The 16-byte format is intended to be used as a 'last-resort' telemetry mode, for cases where SNR is expected to be extremely low, and is hence not expected to be required for all flights. As such, the data which can be transmitted through it is fairly limited. Single-byte payload IDs are retained, but the resolution of the sequence number, time, and lat/lon fields are decreased.

Byte No. Data Type Size (bytes) Description
0 uint8 1 Payload ID (0-255)
1 uint8 1 Sequence Number
2 uint16 2 Seconds-in-day/2
4 Q9.15 3 Latitude
7 Q9.15 3 Longitude
10 uint16 2 Altitude (m)
12 uint8 1 Battery Voltage
13 uint8 1 Flags Byte
14 uint16 2 CRC16-CCITT Checksum