Skip to content

File specan_core.h

File List > doppler > specan > specan_core.h

Go to the documentation of this file

#ifndef DP_SPECAN_CORE_H
#define DP_SPECAN_CORE_H

#include "doppler/ddc/ddc_core.h"
#include "doppler/psd/psd_core.h"
#include "doppler/dp_state.h"
#include "doppler/dp_complex.h"
#include <stddef.h>
#include "doppler/lo/lo_core.h"
#include "doppler/RateConverter/RateConverter_core.h"
#include "doppler/resamp/resamp_core.h"
#include "doppler/hbdecim/hbdecim_core.h"
#include "doppler/cic/cic_core.h"
#include "doppler/fir/fir_core.h"
#include "doppler/resample/resample_core.h"
#include "doppler/acc_trace/acc_trace_core.h"
#include "doppler/fft/fft_core.h"
#include "doppler/spectral/spectral_core.h"
#include "doppler/agc/agc_core.h"
#include "doppler/dp_tlm/dp_tlm_core.h"

#ifdef __cplusplus
extern "C"
{
#endif

  typedef struct
  {
    dp_ddc_state_t   *ddc;      
    dp_psd_state_t *psd;      
    float _Complex *scratch;  
    size_t scratch_cap;      
    float _Complex *pend;     
    size_t         pend_len; 
    size_t         pend_cap; 
    float         *pwr;   
    double         fs_in; 
    double src_center;    
    double center;        
    double span;          
    double rbw;           
    double offset_db;     
    double fs_out;        
    double beta;          
    size_t n;             
    size_t nfft;          
    size_t navg;          
    size_t disp_n;        
    size_t disp_lo;       
  } dp_specan_state_t;

  dp_specan_state_t *dp_specan_create (double fs, double span, double rbw,
                                 double src_center, double center,
                                 double offset_db, double full_scale,
                                 size_t bits, size_t navg);

  void dp_specan_destroy (dp_specan_state_t *state);

  void dp_specan_reset (dp_specan_state_t *state);

  size_t dp_specan_execute_max_out (dp_specan_state_t *state);

  size_t dp_specan_execute (dp_specan_state_t *state, const float _Complex *x,
                         size_t x_len, float *out, size_t max_out);

  void dp_specan_retune (dp_specan_state_t *state, double center);

/* ── Serializable state (standard bytes interface; see dp_state.h) ──────────
 * ddc + psd children + the pending decimated samples (sized to n*navg);
 * display/rate config restored by create. */
#define SPECAN_STATE_MAGIC DP_FOURCC ('S','P','A','N')
#define SPECAN_STATE_VERSION 1u
size_t dp_specan_state_bytes (const dp_specan_state_t *state);
void dp_specan_get_state (const dp_specan_state_t *state, void *blob);
int dp_specan_set_state (dp_specan_state_t *state, const void *blob);

#ifdef __cplusplus
}
#endif

#endif /* SPECAN_CORE_H */