pub trait FrameLayout:
Copy
+ Default
+ 'static {
const N_DATA: u32;
const N_SYNC: u32;
const N_SYMBOLS: u32;
const N_RAMP: u32;
const SYNC_MODE: SyncMode;
const T_SLOT_S: f32;
const TX_START_OFFSET_S: f32;
}Expand description
Frame structure: data / sync symbol counts, the ordered list of sync blocks, and the TX-side nominal start offset.
Required Associated Constants§
Sourceconst N_SYMBOLS: u32
const N_SYMBOLS: u32
Total channel symbols per frame (= N_DATA + N_SYNC). Excludes any GFSK ramp-up / ramp-down symbols that are a shaping artifact.
Sourceconst N_RAMP: u32
const N_RAMP: u32
Extra symbol slots on each side of the frame reserved for amplitude ramp (FT4 has 1 each side = 2; FT8 has 0 — ramp absorbed into the first/last data symbol envelope). Applied at the transmitter.
Sourceconst SYNC_MODE: SyncMode
const SYNC_MODE: SyncMode
Sync-symbol layout. Most WSJT protocols use SyncMode::Block with
dedicated Costas blocks (FT8/FT4/FST4); WSPR uses SyncMode::Interleaved
with a per-symbol sync bit. Callers that only support block sync should
read SYNC_MODE.blocks() and treat an empty slice as “unsupported”.
Sourceconst T_SLOT_S: f32
const T_SLOT_S: f32
Nominal TX/RX slot length in seconds (informational — used by schedulers and UI, not by the DSP pipeline). FT8 = 15 s, FT4 = 7.5 s.
Sourceconst TX_START_OFFSET_S: f32
const TX_START_OFFSET_S: f32
Time (seconds) from the start of the slot-audio buffer to the start of the first frame symbol — the “dt = 0” reference point used by sync, signal subtraction, and DT reporting. FT8 = 0.5, FT4 = 0.5.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.