Skip to content

Struct dp_dsss_burst_receiver_state_t

ClassList > dp_dsss_burst_receiver_state_t

DsssBurstReceiver state. More...

  • #include <dsss_burst_receiver_core.h>

Public Attributes

Type Name
uint8_t * acq_code
size_t acq_code_len
size_t burst_len
dp_burst_capture_state_t * cap
double chip_rate
double cn0_dbhz_est
size_t code_period
uint8_t * data_code
size_t data_code_len
dp_burst_demod_state_t * demod
double demod_cn0_dbhz
double demod_timing_chips
double doppler_hz_est
double doppler_res_hz
double est_freq_hz
double est_rate_hz
dsss_br_event_t * ev
size_t ev_cap
size_t ev_len
wfm_frame_desc_t * frame
size_t frame_syms
int frame_valid
float * llr
size_t llr_cap
size_t llr_len
uint64_t n_bursts
uint64_t preamble_start
size_t reps
size_t spc

Detailed Description

Allocate with dp_dsss_burst_receiver_create_desc().

Public Attributes Documentation

variable acq_code

uint8_t* dp_dsss_burst_receiver_state_t::acq_code;

Preamble code, owned copy.


variable acq_code_len

size_t dp_dsss_burst_receiver_state_t::acq_code_len;

Preamble code length, chips.


variable burst_len

size_t dp_dsss_burst_receiver_state_t::burst_len;

Preamble + spread frame, in samples.


variable cap

dp_burst_capture_state_t* dp_dsss_burst_receiver_state_t::cap;

Search, refine, retain, emit. Owns the acquisition engine, the history ring and the claim rule everything about FINDING a burst. This object owns what to DO with one.


variable chip_rate

double dp_dsss_burst_receiver_state_t::chip_rate;

Chip rate, Hz.


variable cn0_dbhz_est

double dp_dsss_burst_receiver_state_t::cn0_dbhz_est;

C/N0 lower bound, dB-Hz (saturating).


variable code_period

size_t dp_dsss_burst_receiver_state_t::code_period;

One preamble repetition, in SAMPLES. The modulus acq's code_phase is a residue of, so every epoch ambiguity in this object is stated against it.


variable data_code

uint8_t* dp_dsss_burst_receiver_state_t::data_code;

Payload spreading code, owned copy.


variable data_code_len

size_t dp_dsss_burst_receiver_state_t::data_code_len;

Data code length, chips.


variable demod

dp_burst_demod_state_t* dp_dsss_burst_receiver_state_t::demod;

Demod stage, re-seeded per burst.


variable demod_cn0_dbhz

double dp_dsss_burst_receiver_state_t::demod_cn0_dbhz;

Demod's own C/N0, dB-Hz, referred to the CHANNEL and corrected for the sub-chip start error demod_timing_chips reports. Named for its STAGE rather than est_-prefixed like its siblings, because cn0_dbhz_est above is acquisition's and two fields differing only by word order is a reader's trap. The two are not the same measurement: acquisition's is a saturating lower bound from the hit, this one is measured on the decoded symbols. Replaces est_snr_db, which was never an SNR (doppler#1304).


variable demod_timing_chips

double dp_dsss_burst_receiver_state_t::demod_timing_chips;

Burst-start error the demod measured, in chips, signed. Whole samples were removed before despreading; the fraction that remains is taken out of demod_cn0_dbhz.


variable doppler_hz_est

double dp_dsss_burst_receiver_state_t::doppler_hz_est;

Signed coarse Doppler, Hz.


variable doppler_res_hz

double dp_dsss_burst_receiver_state_t::doppler_res_hz;

Width of that estimate.


variable est_freq_hz

double dp_dsss_burst_receiver_state_t::est_freq_hz;

Demod's own residual estimate, Hz.


variable est_rate_hz

double dp_dsss_burst_receiver_state_t::est_rate_hz;

Demod's own chirp-rate estimate.


variable ev

dsss_br_event_t* dp_dsss_burst_receiver_state_t::ev;

One record per burst returned.


variable ev_cap

size_t dp_dsss_burst_receiver_state_t::ev_cap;

Allocated records.


variable ev_len

size_t dp_dsss_burst_receiver_state_t::ev_len;

Records the last push() wrote.


variable frame

wfm_frame_desc_t* dp_dsss_burst_receiver_state_t::frame;

The frame description this receiver was built from, an owned copy whose sequences are NOT kept (the verdict reads only the layout).


variable frame_syms

size_t dp_dsss_burst_receiver_state_t::frame_syms;

Symbols the frame occupies, sync word included the description's layout length, so bits per burst out of push() and the row stride of llrs(). What they MEAN is the frame description's business (doppler#1022).


variable frame_valid

int dp_dsss_burst_receiver_state_t::frame_valid;

The last window's frame passed its error detection THIS receiver's frame carries a CRC-16 trailer. The verdict the capture cannot reach: a window that failed is given back with dp_burst_capture_release(), so a decoy cannot own the span of a real burst behind it (doppler#1181, doppler#1004). The verdict is the description's own (dp_wfm_frame_desc_crc_ok), so a frame with no CRC stage is never valid its bits are still returned, and every window is released (doppler#1769; decision D3 of docs/design/rx-frame-description.md).


variable llr

float* dp_dsss_burst_receiver_state_t::llr;

The soft bits of every burst the last push returned, concatenated: burst i starts at i*frame_syms. Scratch, like ev it describes one call and is never serialized.


variable llr_cap

size_t dp_dsss_burst_receiver_state_t::llr_cap;

Allocated floats.


variable llr_len

size_t dp_dsss_burst_receiver_state_t::llr_len;

Floats written by the last push.


variable n_bursts

uint64_t dp_dsss_burst_receiver_state_t::n_bursts;

Bursts DEMODULATED, lifetime. Distinct from the capture's own count, which is windows EMITTED: they differ by any window the demodulator refused, and that difference is the thing worth seeing.


variable preamble_start

uint64_t dp_dsss_burst_receiver_state_t::preamble_start;

Stream-absolute preamble start. Never late.


variable reps

size_t dp_dsss_burst_receiver_state_t::reps;

Preamble code repetitions.


variable spc

size_t dp_dsss_burst_receiver_state_t::spc;

Samples per chip.



The documentation for this class was generated from the following file native/inc/doppler/dsss_burst_receiver/dsss_burst_receiver_core.h