Struct dp_acq_state_t¶
Streaming acquisition-engine state. More...
#include <acq_core.h>
Public Attributes¶
Detailed Description¶
Allocate with dp_acq_create_burst() or dp_acq_create_continuous(); never stack-allocate.
Public Attributes Documentation¶
variable band_mask¶
n_surf; 1 = outside the searched band
variable blk¶
window_bins * coherent_bins * code_bins: the block's per-tile epoch correlations; NULL unless both exceed 1.
variable blk_epoch¶
Epochs gathered in the current block (0 … coherent_bins-1).
variable blk_raw¶
coherent_bins * code_bins: the block's raw epochs as pushed, for the tile-edge test of acq_resolve_tile_alias(); NULL unless blk is.
variable burst¶
1 for an engine built by dp_acq_create_burst(), 0 for dp_acq_create_continuous(). Config.
variable carrier_freq_hz¶
RF carrier the Doppler is physically coupled to, Hz (dp_acq_set_carrier_freq_hz()); 0 = uncoupled: no code-rate hypothesis per tile, no dwell advance in the hand-off.
variable chip_rate¶
Chip rate (Hz).
variable cn0_dbhz¶
Design C/N0 the search is sized for (dB-Hz); NaN (ACQ_CN0_NONE) means none was given.
variable code_bins¶
One segment in samples = sf*spc.
variable code_only_epochs¶
Whole code-only epochs a waveform's code-only window holds at any chip phase (§2.1); 1 = no window, D = 1.
variable coherent_bins¶
Coherent depth = slow-time FFT length (<= reps on a burst engine). In wideband mode the block depth D inside every tile (file doc); 1 = one epoch, the continuous engine's default.
variable colbuf¶
Gathered column scratch (coherent_bins).
variable colout¶
FFT'd column scratch (coherent_bins).
variable consumed¶
Input samples the last push took.
variable corr¶
Single-row-ref correlator (dwell=1).
variable doppler_rate¶
Doppler rate the depth is bounded against (Hz/s); 0 = no bound from the rate.
variable doppler_res_hz¶
Doppler bin width = chip_rate/(sf*coherent_bins).
variable doppler_span_hz¶
Native Doppler half-range = chip_rate/(2*sf).
variable doppler_uncertainty¶
One-sided Doppler search half-range (Hz); 0 = full native span.
variable dsl_ready¶
1 once acq_shape_t::dsl holds its value: it is computed on its first read, dp_acq_dsl_db(), not by the constructor a sweep of the ambiguity that only a peak-list consumer reads.
variable dsl_window_bins¶
The tiles of the grid the engine was BUILT with, which acq_shape_t::dsl is defined on; a grid pinned later does not move it.
variable dwells¶
dwells decided since create/reset
variable epochs_per_symbol¶
(chip_rate/sf)/symbol_rate; 0 when symbol_rate <= 0.
variable eta¶
Raw per-cell Rayleigh amplitude threshold.
variable eta_nc¶
Non-coherent CFAR threshold (order-N_nc Marcum).
variable frame_n¶
Raw samples consumed from the ring per iteration: == n natively; == code_bins in wideband mode (one epoch's worth — window_bins hypotheses come from ONE shared epoch, not from consuming more input).
variable framer¶
Any chunk in, frame_n-sample frames out.
variable fs¶
Sample rate (Hz) = chip_rate * spc.
variable interp¶
Doppler-axis interpolation factor of the inverse (1 = none). Zero-padding the product in frequency is exact band-limited interpolation, so a peak landing between two slow-time bins is no longer attenuated by the scalloping loss that made a half-bin burst invisible at any SNR (gh-1002). It adds resolution to the SURFACE only: the reported bin is mapped back to the native grid, so no consumer's arithmetic changes.
variable keep_surface¶
1 = normalise every decided dwell into stat_surface for acq_surface(); set by a caller or by dp_acq_set_surface_sink()
variable mag_buf¶
|out_buf| (n).
variable max_peaks¶
list capacity per dwell (1 = the maximum)
variable n¶
NATIVE grid size in samples: coherent_bins * window_bins * code_bins (both may exceed 1: D rows inside each tile). This is the INPUT frame and the count of statistically independent cells it is what the threshold ladder is sized from, and it is what doppler_bin is reported on.
variable n_held¶
the last dwell's picks held as twins (§7.1)
variable n_noncoh¶
Non-coherent looks per detection (1 = coherent).
variable n_peaks¶
picks in the last dwell, held ones too
variable n_surf¶
Cells in the correlation SURFACE = interp * n. The inverse transform is evaluated on a finer Doppler grid, so the buffers, the peak search and the CFAR reference span this and not n.
variable n_twins¶
picks carried over from the last dwell
variable nc_count¶
Coherent dumps in the current look (0…n_noncoh-1).
variable nc_surface¶
Non-coherent |·|² accumulator (n); NULL unless n_noncoh > 1.
variable noise_est¶
variable noise_hi¶
Last CFAR reference bin (inclusive).
variable noise_lo¶
First CFAR reference bin (inclusive).
variable noise_mode¶
CFAR aggregation mode.
variable noise_scratch¶
Scratch for the median sort (n).
variable out_buf¶
corr2d dump output (n) — also the wideband mode's (window_bins, code_bins) grid.
variable parts¶
window_bins partial slots of the decided surface's per-tile passes
variable pd¶
Target detection probability.
variable pd_burst¶
Predicted Pd of one BURST of reps repetitions at cn0_dbhz: the dwells are aligned to the stream, so the preamble lands at a uniform offset and spans about reps/D of them, whole or partial; the burst is detected when any one is. Averaged over that alignment and the same straddle nodes as pd_predicted (one node for every dwell of a burst: they share its Doppler and delay). What a burst engine sizes on and sets underpowered from (doppler#1498). Assumes the preamble is exactly reps periods. NAN on a continuous engine, with n_noncoh > 1, or with no design C/N0.
variable pd_predicted¶
Predicted Pd at cn0_dbhz and the chosen grid of ONE dwell lying wholly inside the signal (a burst engine's is judged on pd_burst instead): the AVERAGE Pd over the straddle priors (slow-time scalloping over the INTERPOLATED bin the peak search samples, intra-segment rotation, code sample offset — quadrature over uniform priors), not the on-grid best case, and not Pd at the mean amplitude (which Jensen makes optimistic). Conservative by construction: the engine takes the maximum over an interpolated surface, which the Marcum form does not credit (doppler#1183, #1064). NAN when no design C/N0 was given.
variable peak_col¶
variable peak_conc¶
the strongest pick's column concentration
variable peak_mag¶
variable peak_mask¶
n_surf; the working mask
variable peak_row¶
variable peaks¶
max_peaks: the last dwell's picks
variable pfa¶
Target system false-alarm probability (stored for configure_search_raw's threshold re-derivation).
variable pfa_cell¶
Sidak per-cell false-alarm probability, split over the cells a dwell's maximum ranges over: the in-band rows of the interpolated surface, times code_bins, times the rate hypotheses.
variable pool¶
NULL or one thread = serial
variable rate_best¶
n_surf cells: the best hypothesis' surface while the others are searched.
variable rate_best_cap¶
Cells rate_best holds.
variable rate_best_h¶
Winning hypothesis of the last dwell.
variable rate_chirp¶
rate_hyps * rate_chirp_d slow-time de-chirp phasors; NULL while rate_hyps == 1. Rebuilt lazily when coherent_bins moves.
variable rate_chirp_d¶
The coherent_bins rate_chirp was built for.
variable rate_hyps¶
Doppler-rate hypotheses searched (>= 1); 1 = none: the engine as it ran without them. dp_acq_create_burst()'s rate_hypotheses.
variable ref¶
Single-row reference (n), owned.
variable reps¶
Max coherent code repetitions (the ceiling); always 1 for an engine built via dp_acq_create_continuous().
variable ring¶
The carry's storage: bound to framer, freed by destroy.
variable ring_cap¶
Ring capacity in complex samples.
variable samples_consumed¶
Total framed samples (the state's offset).
variable searched_bins¶
Doppler bins scanned (<= coherent_bins; du prior).
variable sf¶
Chips per PN segment (= len(code)).
variable shape¶
The preamble's correlation shape (zone, delay straddle); config, filled by the constructor.
variable sink¶
NULL = none
variable sink_ctx¶
variable sink_decim¶
the sink sees every sink_decim-th dwell
variable slow_fft¶
Length-coherent_bins forward FFT (slow time).
variable spc¶
Samples per chip (chip-rate oversample factor).
variable stat_surface¶
n_surf: the last decided dwell in the gate's units; allocated on the first dwell decided with keep_surface set
variable straddle_loss¶
Mean AMPLITUDE derating from grid straddle — a diagnostic summary (~20*log10 of it in dB); sizing and pd_predicted average Pd itself over the priors. Derived config, recomputed by create().
variable surface_at¶
samples_consumed of that dwell; 0 = none
variable symbol_rate¶
Continuous data-symbol rate (Hz); 0 = no known data-modulation clock. Diagnostic only on an engine built via dp_acq_create_continuous() (which always forces coherent_bins=1 regardless) — informational, doesn't feed sizing.
variable test_stat¶
variable threads¶
workers the pool runs on, the caller included; 1 without a pool
variable threshold¶
CFAR gate on test_stat (theta); coherent path.
variable tile_col¶
window_bins column scratch: a chunk of ACQ_COL_CHUNK columns of D*interp (zero tails) in, then out; NULL at D == 1
variable tile_inv¶
window_bins inverse plans (code_bins)
variable tile_prod¶
window_bins product buffers
variable tile_rows¶
window_bins tables of D*interp: the surface row of each slow-time row of the tile (acq_block_row), once per grid rather than per cell; NULL at D == 1
variable tile_slow¶
window_bins slow-time plans (D*interp), NULL at D == 1
variable tlm¶
telemetry attachment; ctx NULL = detached
variable twin_col¶
max_peaks: last dwell's picks, code phases
variable twin_row¶
max_peaks: last dwell's picks, native rows
variable underpowered¶
1 when the Pd the engine is judged on falls short of pd: pd_burst on a burst engine, pd_predicted where pd_burst is NAN. Never without a design C/N0 there is no target to be under.
variable wide_fwd¶
Forward FFT, length code_bins.
variable wide_inv¶
Inverse FFT, length code_bins.
variable wide_prod¶
Rolled-spectrum * wide_ref_spec product, length code_bins; reused per hypothesis.
variable wide_ref_spec¶
conj(FFT(replica row)), length code_bins.
variable wide_spec¶
FFT(raw epoch), length code_bins; once/epoch.
variable window_bins¶
Wideband frequency-window hypotheses (1 = disabled/native — see the file doc comment).
variable yframe¶
Slow-time-FFT'd frame (n) fed to corr.
The documentation for this class was generated from the following file native/inc/doppler/acq/acq_core.h