The spacecraft Command & Data Handling (C&DH) system collects telemetry from the imagers over the 1553 bus as non-packetized housekeeping and as CCSDS packets.
The C&DH system picks up a 16-byte non-packetized housekeeping record every second. The contents can be incorporated into C&DH autonomy processing. The C&DH system also assembles the data into a housekeeping packet. The format of the non- packetized housekeeping record is imager-specific.
The C&DH system collects up to one packet from each imager every
second. All CONTOUR packets are 244 bytes long including the CCSDS
headers (see Reference 2). The CCSDS primary header is six bytes long
and the CCSDS secondary header is 4 bytes long, leaving 234 bytes for
the data payload.
| Name | Length (bits) | Value | Description |
|---|---|---|---|
| Version | 3 | 000 | Designates a source packet |
| Type | 1 | 0 | Designates a telemetry packet |
| Secondary? | 1 | 1 | Secondary header is present |
| Application Process ID | 11 | 101 1xxx xxxx 110 0xxx xxxx | CFI CRISP |
| Grouping | 2 | 01 = First 00 = Continuation 10 = Last 11 = None | Grouping flags |
| Sequence Count | 14 | Unsigned integer | Continuous sequence count for each Application Process ID |
| Length | 16 | 237 | Number of bytes in packet |
| Name | Length (bits) | Value | Description |
|---|---|---|---|
| Secondary Header | 32 | Unsigned integer | Spacecraft MET at time of packet transmission |
| Name | Length (bits) | Value | Description |
|---|---|---|---|
| Headers | 80 | See Tables 1 and 2 | CCSDS primary & secondary |
| Data | 234 * 8 |   | Data payload |
The application process id in the primary header identifies the type of
packet. On CONTOUR, the eleven-bit id is divided into a four-bit
source and a seven-bit data id. This gives each source up to 128
possible packet types that can be produced. The packet types produced
by both imagers are described below.
| Product | Data Id (binary) | When Sent |
|---|---|---|
| Memory Dump | 000 0000 | On demand |
| Subpacket | 000 0001 | As needed |
Memory dump packets consist of CONTOUR CCSDS headers, a dump start
address, dump length, and 228 bytes of dump data. The 32-bit address
field accommodates the possible range of addresses for both 16-bit and
32-bit processors.
| Name | Length (bits) | Value | Description |
|---|---|---|---|
| Headers | 80 | See Tables 1 and 2 | CCSDS primary & secondary |
| Address | 32 | Unsigned integer | Starting address |
| Length | 16 | Unsigned integer | Number of 32-bit words of data |
| Data | 57 * 32 |   | Dump data |
Instead of coercing imager data to fit into the fixed size CONTOUR
packets, the imagers use variable-sized subpackets that "float" through
fixed-size packets. A specific packet apid indicates that the packet
contains subpackets. Each subpacket is loaded into one or more
packets. Each packet data field starts with a byte containing an
offset to the first subpacket in the packet; if no subpacket begins in
the packet, an invalid offset of 0xff is used. The remaining bytes in
the packet data field are from subpackets. Subpacket packets are sent
at a higher priority than dump packets.
| Name | Length (bits) | Value | Description |
|---|---|---|---|
| Headers | 80 | See Tables 1 and 2 | CCSDS primary & secondary |
| First Offset | 8 | Unsigned integer | Offset in data to first subpacket |
| Data | 233 * 8 |   | Subpacket(s) |
Each subpacket has a header containing an id, length, grouping flags,
and time-tag. The subpacket id identifies the type of subpacket. The
grouping flags allow multiple subpackets to be treated as a unit in
ground processing. The time tag in the subpacket corresponds to when
the subpacket data was sampled. The length is the number of bytes in
the data portion of the subpacket.
| Name | Length (bits) | Value | Description |
|---|---|---|---|
| Time Tag | 32 | Unsigned integer | Spacecraft MET |
| Grouping | 2 | 01 = First 00 = Continuation 10 = Last 11 = None | Grouping flags |
| Subpacket Id | 14 | See Table 8 | Identifies subpacket type |
| Length | 16 | 0 - 65535 | Number of data bytes in subpacket |
Ground software can use the "first offset" field from the packet and the length field in the subpacket headers to extract a stream of subpackets. Initially, the ground software can synchronize by waiting for a subpacket packet that has a "first offset" that is not equal to 0xff. It can use this offset to find the first subpacket. The subsequent subpacket can be found by adding the length of the subpacket to the offset. The next subpacket may begin in the current packet, in the following packet, or many packets later.
The subpacket types produced by both imagers are described below.
| Product | Subpacket Id (hex) | When Generated |
|---|---|---|
| Boot Status | 0x0000 | Commandable interval |
| Status | 0x0001 | Commandable interval |
| Command Echo | 0x0002 | As needed |
| Alarm | 0x0003 | As needed |
| Memory Checksum | 0x0004 | On demand |
| Monitor Limits | 0x0005 | On demand |
| Flush | 0x3fff | As needed |
The DPU generates a status subpacket periodically. The rate is controlled by a command (see CXX_STAT_INT). The actual format of the subpacket is imager specific.
Each
command
received by the DPU is echoed in a subpacket. Each echo
subpacket consists of a subpacket header and command data. The command's
opcode and first nine argument bytes are included, followed by a
macro bit (set to 1 if the command was executed as part of a macro) and
a code summarizing the command's result. If the command has fewer than
nine argument bytes, the unused echo bytes are filled with zeroes. The
result codes are defined in
Appendix 1.
| Name | Length (bits) | Value | Description |
|---|---|---|---|
| Time Tag | 32 | Unsigned integer | Spacecraft MET |
| Grouping | 2 | 11 = None | Grouping flags |
| Subpacket Id | 14 | 0x0002 | Identifies subpacket type |
| Length | 16 | 12 | Number of bytes in data subpacket |
| Opcode | 16 | Unsigned integer | Command opcode |
| Arguments | 9 * 8 |   | First nine argument bytes |
| Macro? | 1 | 0 = Real-time 1 = Macro | Set if executed in a macro |
| Result | 7 | See Table 22 | Result code |
Alarm
subpackets report problems. Each subpacket consists of a
subpacket header and alarm data. The alarm data consists of a byte
identifying the alarm's cause and two value bytes with additional
information. For
monitoring
alarms, the first byte is the out-of-limit
value and the second byte is the associated limit. The type
indicates transient or persistent alarms. See
Appendix 1
for a list of the alarm ids.
| Name | Length (bits) | Value | Description |
|---|---|---|---|
| Time Tag | 32 | Unsigned integer | Spacecraft MET |
| Grouping | 2 | 11 = None | Grouping flags |
| Subpacket Id | 14 | 0x0003 | Identifies subpacket type |
| Length | 16 | 4 | Number of data bytes in subpacket |
| Alarm Id | 8 | See Table 21 | Alarm identifier |
| Type | 8 | 0 = Persistent 1 = Transient | Alarm type |
| Value | 8 |   | Value associated with alarm |
| Auxiliary | 8 |   | Another value associated with alarm |
Memory checksum subpackets consist of a subpacket header and checksum
data. The checksum is the 16-bit two's complement sum of the indicated
memory region.
| Name | Length (bits) | Value | Description |
|---|---|---|---|
| Time Tag | 32 | Unsigned integer | Spacecraft MET |
| Grouping | 2 | 11 = None | Grouping flags |
| Subpacket Id | 14 | 0x0004 | Identifies subpacket type |
| Length | 16 | 8 | Number of data bytes in subpacket |
| Address | 32 | Unsigned integer | Address of region checked |
| Length | 16 | Unsigned integer | Length of region checked in bytes |
| Checksum | 16 | Unsigned integer | Computed checksum |
The DPU generates a monitor limits subpacket on demand (see CXX_MEM_STR_READ). The actual format of the subpacket is imager specific.
A flush subpacket consists of a subpacket header and enough pad data to
fill the end of a packet. Flush subpackets are used to flush out a
packet that is partially filled with subpackets.
| Name | Length (bits) | Value | Description |
|---|---|---|---|
| Time Tag | 32 | Unsigned integer | Spacecraft MET |
| Grouping | 2 | 11 = none | Grouping flags |
| Subpacket Id | 14 | 0x3fff | Identifies subpacket type |
| Length | 16 | 0 - 223 | Number of data bytes in subpacket |
| Fill | N * 8 |   | Fill out the rest of the packet |
Return to Common Software User's Guide.
Report problems to John Hayes.