File psd_core.h¶
File List > inc > psd > psd_core.h
Go to the documentation of this file
#ifndef PSD_CORE_H
#define PSD_CORE_H
#include "clib_common.h"
#include "dp_state.h"
#include "jm_perf.h"
#include "fft/fft_core.h"
#include "acc_trace/acc_trace_core.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
fft_state_t *fft;
acc_trace_state_t *avg;
float *w;
float complex *frame;
float complex *spec;
float *pwr;
float *dbbuf;
double cg;
double s2;
double enbw;
size_t n;
size_t nfft;
double fs;
double full_scale;
size_t bits;
} psd_state_t;
psd_state_t *psd_create(size_t n, double fs, int window, float beta,
size_t pad, double full_scale, size_t bits,
int mode, double alpha);
void psd_destroy(psd_state_t *state);
void psd_reset(psd_state_t *state);
void psd_accumulate(psd_state_t *state, const float complex *x,
size_t x_len);
void psd_accumulate_real(psd_state_t *state, const float *x, size_t x_len);
size_t psd_power_twosided_max_out(psd_state_t *state);
size_t psd_power_twosided(psd_state_t *state, size_t cap, float *out);
size_t psd_power_onesided_max_out(psd_state_t *state);
size_t psd_power_onesided(psd_state_t *state, size_t cap, float *out);
size_t psd_psd_db_max_out(psd_state_t *state);
size_t psd_psd_db(psd_state_t *state, size_t n, float *out);
size_t psd_psd_dbhz_max_out(psd_state_t *state);
size_t psd_psd_dbhz(psd_state_t *state, size_t n, float *out);
size_t psd_band_power_max_out(psd_state_t *state);
size_t psd_band_power(psd_state_t *state, const double *bands,
size_t bands_len, float *out);
double psd_total_band_power(psd_state_t *state, const double *bands,
size_t bands_len);
double psd_occupied_bw(psd_state_t *state, double fraction);
double psd_noise_floor(psd_state_t *state);
double psd_snr(psd_state_t *state, double lo_hz, double hi_hz);
double psd_sfdr(psd_state_t *state, float min_db);
/* ── Serializable state (standard bytes interface; see dp_state.h) ──────────
* delegates to the acc_trace power averager; window/plan/scratch
* are config, rebuilt by create. */
#define PSD_STATE_MAGIC DP_FOURCC ('P','S','D',' ')
#define PSD_STATE_VERSION 1u
size_t psd_state_bytes (const psd_state_t *state);
void psd_get_state (const psd_state_t *state, void *blob);
int psd_set_state (psd_state_t *state, const void *blob);
#ifdef __cplusplus
}
#endif
#endif /* PSD_CORE_H */