Skip to content

Struct async_dsss_receiver_state_t

ClassList > async_dsss_receiver_state_t

Composed receiver state. More...

  • #include <async_dsss_receiver_core.h>

Public Attributes

Type Name
acq_state_t * acq
uint64_t both_down_samples
carrier_acq_state_t * ca
costas_state_t car
float _Complex * car_carry_buf
size_t car_carry_len
costas_state_t car_frozen
float _Complex * car_wiped_buf
double carrier_freq_hz
double chip_rate
double cn0_dbhz
double cn0_dbhz_est
uint8_t * code
size_t code_len
int differential
dll_state_t * dll
double doppler_hz_est
double lock_alpha
double lock_den
double lock_metric
double lock_num
double lost_confirm_s
uint64_t lost_confirm_samples
int m
int n
double pd
double pfa
RateConverter_state_t * rc
double refine_design_margin_db
dll_state_t * refine_dll
float _Complex * refine_dll_out_buf
size_t refine_dll_out_cap
double refine_max_error_db
size_t refine_max_n_blocks
size_t refine_min_blocks
size_t refine_n_fft
RateConverter_state_t * refine_rc
float _Complex * refine_rc_out_buf
size_t refine_rc_out_cap
uint64_t refine_samples_fed
size_t refine_samples_per_symbol
size_t refine_segments
bool refine_sequential
size_t refine_zero_pad
mpsk_receiver_state_t * rx
uint64_t samples_fed
double seed_chip_phase
double seed_doppler_hz_est
size_t segments
size_t spc
size_t sps
int state
uint64_t state_samples
lockdet_state_t sym_lockdet
double symbol_rate
float _Complex * track_dll_out_buf
size_t track_dll_out_cap
float _Complex * track_rc_out_buf
size_t track_rc_out_cap
size_t tsamps

Detailed Description

Every child (acq, both refine-stage children, both track-stage children) is allocated at create() with a placeholder seed (phase 0, no Doppler) and REBUILT (not freed to NULL) on every real transition a fixed shape, independent of state, matching DsssReceiver's own serialization-simplicity rationale. Treat all fields as internal (use the getters).

Public Attributes Documentation

variable acq

acq_state_t* async_dsss_receiver_state_t::acq;

The embedded search; NULL in hand-off mode (async_dsss_receiver_create_handoff()), where the seed comes from outside.


variable both_down_samples

uint64_t async_dsss_receiver_state_t::both_down_samples;

Running: consecutive samples fed while tracking with BOTH lock flags down the release clock; lost keeps it counting.


variable ca

carrier_acq_state_t* async_dsss_receiver_state_t::ca;

variable car

costas_state_t async_dsss_receiver_state_t::car;

variable car_carry_buf

float _Complex* async_dsss_receiver_state_t::car_carry_buf;

variable car_carry_len

size_t async_dsss_receiver_state_t::car_carry_len;

variable car_frozen

costas_state_t async_dsss_receiver_state_t::car_frozen;

variable car_wiped_buf

float _Complex* async_dsss_receiver_state_t::car_wiped_buf;

variable carrier_freq_hz

double async_dsss_receiver_state_t::carrier_freq_hz;

nominal RF carrier, Hz; > 0 enables the carrier->code rate aiding, 0 = off (config, not running state restored by create).


variable chip_rate

double async_dsss_receiver_state_t::chip_rate;

variable cn0_dbhz

double async_dsss_receiver_state_t::cn0_dbhz;

Design C/N0 feeds both Acquisition's own sizing and (derated) CarrierAcquisition's design_snr on every refine-chain (re)build.


variable cn0_dbhz_est

double async_dsss_receiver_state_t::cn0_dbhz_est;

Cached from the winning acquisition hit.


variable code

uint8_t* async_dsss_receiver_state_t::code;

variable code_len

size_t async_dsss_receiver_state_t::code_len;

variable differential

int async_dsss_receiver_state_t::differential;

variable dll

dll_state_t* async_dsss_receiver_state_t::dll;

variable doppler_hz_est

double async_dsss_receiver_state_t::doppler_hz_est;

Current best estimate: == seed_ doppler_hz_est while refining, the CarrierAcquisition-refined value once tracking.


variable lock_alpha

double async_dsss_receiver_state_t::lock_alpha;

EMA coeff = 1/dwell (dwell >= 30).


variable lock_den

double async_dsss_receiver_state_t::lock_den;

variable lock_metric

double async_dsss_receiver_state_t::lock_metric;

variable lock_num

double async_dsss_receiver_state_t::lock_num;

variable lost_confirm_s

double async_dsss_receiver_state_t::lost_confirm_s;

Config: both flags down for longer than this is "gone"; 0 = never.


variable lost_confirm_samples

uint64_t async_dsss_receiver_state_t::lost_confirm_samples;

lost_confirm_s at the input rate.


variable m

int async_dsss_receiver_state_t::m;

variable n

int async_dsss_receiver_state_t::n;

MpskReceiver's own carrier-arm count.


variable pd

double async_dsss_receiver_state_t::pd;

Also CarrierAcquisition's own pd.


variable pfa

double async_dsss_receiver_state_t::pfa;

Also CarrierAcquisition's own pfa.


variable rc

RateConverter_state_t* async_dsss_receiver_state_t::rc;

variable refine_design_margin_db

double async_dsss_receiver_state_t::refine_design_margin_db;

variable refine_dll

dll_state_t* async_dsss_receiver_state_t::refine_dll;

variable refine_dll_out_buf

float _Complex* async_dsss_receiver_state_t::refine_dll_out_buf;

variable refine_dll_out_cap

size_t async_dsss_receiver_state_t::refine_dll_out_cap;

variable refine_max_error_db

double async_dsss_receiver_state_t::refine_max_error_db;

variable refine_max_n_blocks

size_t async_dsss_receiver_state_t::refine_max_n_blocks;

variable refine_min_blocks

size_t async_dsss_receiver_state_t::refine_min_blocks;

floor on the refine's dwell, blocks: the detection sizing above needs fewer blocks the higher the C/N0, but the estimate the carrier chain must pull in from does not sharpen with it (design section 12.16, #1265). Config; set_refine_min_blocks().


variable refine_n_fft

size_t async_dsss_receiver_state_t::refine_n_fft;

variable refine_rc

RateConverter_state_t* async_dsss_receiver_state_t::refine_rc;

variable refine_rc_out_buf

float _Complex* async_dsss_receiver_state_t::refine_rc_out_buf;

variable refine_rc_out_cap

size_t async_dsss_receiver_state_t::refine_rc_out_cap;

variable refine_samples_fed

uint64_t async_dsss_receiver_state_t::refine_samples_fed;

Raw samples fed into the refine pipeline since it was last (re)built the running counter the give-up cap and the tail computation on refine->track transition both use.


variable refine_samples_per_symbol

size_t async_dsss_receiver_state_t::refine_samples_per_symbol;

variable refine_segments

size_t async_dsss_receiver_state_t::refine_segments;

dll_lookback_segments() result, cached at the hit that (re)built the refine chain config for refine_dll's own layout, needed again by set_state's check.


variable refine_sequential

bool async_dsss_receiver_state_t::refine_sequential;

variable refine_zero_pad

size_t async_dsss_receiver_state_t::refine_zero_pad;

variable rx

mpsk_receiver_state_t* async_dsss_receiver_state_t::rx;

variable samples_fed

uint64_t async_dsss_receiver_state_t::samples_fed;

Running total handed to acq_push() so far diffed against acq->samples_consumed right after a hit, same technique DsssReceiver's own steps() uses.


variable seed_chip_phase

double async_dsss_receiver_state_t::seed_chip_phase;

Original handoff chip phase reused verbatim to seed the FRESH live-tracking Dll, not wherever the refine-stage Dll drifted to.


variable seed_doppler_hz_est

double async_dsss_receiver_state_t::seed_doppler_hz_est;

Original (unrefined) handoff Doppler estimate.


variable segments

size_t async_dsss_receiver_state_t::segments;

Live-tracking Dll's own segments distinct from refine_segments above (see the module docstring / dll_lookback_segments()'s own doc on the WINDOWS vs TRACK_WINDOWS split).


variable spc

size_t async_dsss_receiver_state_t::spc;

variable sps

size_t async_dsss_receiver_state_t::sps;

MpskReceiver's own samples/symbol.


variable state

int async_dsss_receiver_state_t::state;

One of the ASYNC_DSSS_RX_SEARCHING .. _LOST values.


variable state_samples

uint64_t async_dsss_receiver_state_t::state_samples;

Running: samples fed since the current state was entered.


variable sym_lockdet

lockdet_state_t async_dsss_receiver_state_t::sym_lockdet;

variable symbol_rate

double async_dsss_receiver_state_t::symbol_rate;

variable track_dll_out_buf

float _Complex* async_dsss_receiver_state_t::track_dll_out_buf;

variable track_dll_out_cap

size_t async_dsss_receiver_state_t::track_dll_out_cap;

variable track_rc_out_buf

float _Complex* async_dsss_receiver_state_t::track_rc_out_buf;

variable track_rc_out_cap

size_t async_dsss_receiver_state_t::track_rc_out_cap;

variable tsamps

size_t async_dsss_receiver_state_t::tsamps;

code_len*spc one code period, samples.



The documentation for this class was generated from the following file native/inc/async_dsss_receiver/async_dsss_receiver_core.h