File burst_demod_core.h¶
File List > burst_demod > burst_demod_core.h
Go to the documentation of this file
#ifndef DP_BURST_DEMOD_CORE_H
#define DP_BURST_DEMOD_CORE_H
#include "doppler/clib_common.h"
#include "doppler/jm_perf.h"
#include "doppler/ppe/ppe_core.h"
#include "doppler/fft/fft_core.h"
#include "doppler/spectral/spectral_core.h"
#include "doppler/dp_complex.h"
#include "doppler/conv/conv_core.h"
#include "doppler/rs/rs_core.h"
#include "doppler/pn/pn_core.h"
#include "doppler/gold/gold_core.h"
#include "doppler/wfm/wfm_frame.h"
#include "doppler/mpsk/mpsk_core.h"
#include "doppler/cvt/cvt_core.h"
#ifdef __cplusplus
extern "C"
{
#endif
typedef struct
{
/* ── configuration ── */
uint8_t *data_code;
size_t data_sf;
uint8_t *acq_code;
size_t acq_sf;
size_t acq_reps;
int8_t *sync;
size_t sync_len;
size_t spc;
double chip_rate;
double carrier_hz;
double max_rate;
size_t frame_syms;
size_t est_segments;
double f0_prior;
size_t start;
/* ── engine ── */
dp_ppe_state_t *ppe;
float _Complex *part;
size_t n_part;
/* ── read-backs (after demod) ── */
float *llr;
size_t n_llr;
float _Complex *sym;
size_t n_sym;
double est_n0;
size_t frame_offset;
size_t n_symbols;
double est_freq_hz;
double est_rate_hz;
double est_cn0_dbhz;
double est_timing_chips;
} dp_burst_demod_state_t;
dp_burst_demod_state_t *dp_burst_demod_create_frame (
const uint8_t *data_code, size_t data_code_len,
const wfm_frame_desc_t *frame, size_t spc, double chip_rate,
double carrier_hz, double max_rate, size_t est_segments);
dp_burst_demod_state_t *dp_burst_demod_create_desc (
const uint8_t *data_code, size_t data_code_len,
const wfm_frame_desc_t *frame, size_t spc, double chip_rate,
double carrier_hz, double max_rate, size_t est_segments,
const char **why);
void dp_burst_demod_destroy (dp_burst_demod_state_t *state);
void dp_burst_demod_reset (dp_burst_demod_state_t *state);
void dp_burst_demod_set_preamble (dp_burst_demod_state_t *state,
const uint8_t *acq_code, size_t acq_code_len,
size_t reps);
size_t dp_burst_demod_llrs (dp_burst_demod_state_t *state, size_t n, float *out,
size_t max_out);
size_t dp_burst_demod_llrs_max_out (dp_burst_demod_state_t *state, size_t n);
size_t dp_burst_demod_symbols (dp_burst_demod_state_t *state, size_t n,
float _Complex *out, size_t max_out);
size_t dp_burst_demod_symbols_max_out (dp_burst_demod_state_t *state, size_t n);
void dp_burst_demod_set_prior (dp_burst_demod_state_t *state, double f0_coarse,
size_t start);
size_t dp_burst_demod_demod_max_out (dp_burst_demod_state_t *state);
size_t dp_burst_demod_demod (dp_burst_demod_state_t *state, const float _Complex *x,
size_t x_len, uint8_t *out, size_t max_out);
#ifdef __cplusplus
}
#endif
#endif /* BURST_DEMOD_CORE_H */