Struct ccsds_tm_frame_spec_t¶
ClassList > ccsds_tm_frame_spec_t
A framed waveform's choices, before they become a description. More...
#include <ccsds_tm_frame.h>
Public Attributes¶
| Type | Name |
|---|---|
| int | attach_asm |
| int | convolutional |
| int | crc |
| unsigned | interleave_depth |
| unsigned | interleave_unit_bits |
| const uint8_t * | payload |
| size_t | payload_len |
| const uint8_t * | preamble |
| size_t | preamble_len |
| size_t | preamble_reps |
| int | randomise |
| unsigned | rs_depth |
| const uint8_t * | sync |
| size_t | sync_len |
Detailed Description¶
The wider family ccsds_tm_frame_describe is the CADU case of: a frame that may open with a marker, may carry a preamble and a sync word a receiver FINDS, carries a payload, and applies some subset of this standard's four stages to it.
The fields are the caller's; the COVERS are the standard's, which is the whole reason this lives here rather than in wfm/wfm_frame.h. That header knows what a field and a stage are and nothing about which covers which — a general description cannot, because the answer is a specification's: The middle row is 10.3.4 generalised: the randomiser does not cover the ASM, and the reason the standard gives — a marker a receiver correlates against must not vary between frames — is exactly as true of a preamble and a sync word.
A receiver does NOT hold one of these. It stops at hard and soft decisions; the frame is undone one layer up, by whoever holds the description.
Public Attributes Documentation¶
variable attach_asm¶
Non-zero: the frame opens with the ASM (0x1ACFFC1D).
variable convolutional¶
Non-zero: the K=7 rate-1/2 inner code, over the whole frame.
variable crc¶
Non-zero: a CRC-16 trailer over the payload group.
variable interleave_depth¶
A BLOCK INTERLEAVER over the data group; 0 = none.
Not a CCSDS pick, and here for the reason crc and sync are: this spec is the one frame description every doppler face reaches, and 131.0-B-6's own choices are a CONFIGURATION of it rather than the whole of its vocabulary.
Applied AFTER the outer code and the randomiser and before the inner code, which is the only order that buys anything: an interleaver exists so a burst on the CHANNEL arrives spread across the outer code's codewords, so it must be the last thing between them and the wire.
variable interleave_unit_bits¶
Bits per permuted unit; 0 reads as 1. Match it to the outer code's symbol — 8 for Reed-Solomon over GF(256), because permuting bits inside a symbol that is already wrong buys nothing.
variable payload¶
The payload. May be NULL when only the geometry is wanted.
variable payload_len¶
variable preamble¶
Preamble, repeated preamble_reps times; NULL for none.
variable preamble_len¶
variable preamble_reps¶
variable randomise¶
Randomiser generator: 0 = off, else 10.4.1 (1) or 10.4.2 (2).
variable rs_depth¶
Outer-code interleaving depth; 0 = no outer code.
variable sync¶
Frame-sync word — what a receiver correlates to find the payload.
variable sync_len¶
The documentation for this class was generated from the following file native/inc/ccsds_tm/ccsds_tm_frame.h