File nprmeas_core.h¶
File List > doppler > nprmeas > nprmeas_core.h
Go to the documentation of this file
#ifndef DP_NPRMEAS_CORE_H
#define DP_NPRMEAS_CORE_H
#include "doppler/clib_common.h"
#include "doppler/jm_perf.h"
#include "doppler/measure/measure_core.h"
#include "doppler/psd/psd_core.h"
#include "doppler/dp_complex.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
dp_psd_state_t *psd; /* shared averaging PSD core (window+FFT+avg) */
float *pwr; /* metric working buffer, one-sided power */
double enbw; /* window equivalent noise bandwidth (bins) */
double beta; /* auto-selected Kaiser shape (from DR target) */
size_t spur_guard_bins; /* min notch keep-out (bins) from window skirt */
size_t n;
size_t nfft;
double fs;
} dp_nprmeas_state_t;
dp_nprmeas_state_t *dp_nprmeas_create(size_t n, double fs, double full_scale,
size_t bits, double dynamic_range_db);
void dp_nprmeas_destroy(dp_nprmeas_state_t *state);
void dp_nprmeas_reset(dp_nprmeas_state_t *state);
npr_meas_t dp_nprmeas_analyze(dp_nprmeas_state_t *state, const float *x, size_t n_in,
double active_lo, double active_hi, double notch_lo,
double notch_hi, double guard_hz);
size_t dp_nprmeas_spectrum_dbfs_max_out(dp_nprmeas_state_t *state);
size_t dp_nprmeas_spectrum_dbfs(dp_nprmeas_state_t *state, const float *x,
size_t x_len, float *out, size_t max_out);
#ifdef __cplusplus
}
#endif
#endif /* NPRMEAS_CORE_H */