Skip to content

File wfm_core.h

File List > doppler > wfm > wfm_core.h

Go to the documentation of this file

#ifndef DP_WFM_CORE_H
#define DP_WFM_CORE_H

#include "doppler/clib_common.h"
#include "doppler/wfm/wfm_frame.h" /* dp_wfm_field_bits, field_bits()'s size */

#ifdef __cplusplus
extern "C" {
#endif

void dp_bpsk_map(const uint8_t *bits, size_t bits_len, float _Complex *out);

void dp_qpsk_map(const uint8_t *syms, size_t syms_len, float _Complex *out);

float dp_wfm_awgn_amplitude(float snr_db, float signal_power);

float dp_wfm_ebno_to_snr_db(float ebno_db, int bits_per_symbol, float samples_per_symbol);

uint64_t dp_mls_poly(uint32_t n);

uint16_t dp_crc16(const uint8_t *bits, size_t bits_len);
void dp_rrc_taps(double beta, int sps, int span, float *out);
void dp_dsss_spread(const float _Complex *syms, size_t syms_len, const uint8_t *code, size_t code_len, int sf, float _Complex *out);
void dp_rrc_h(const double *t, size_t t_len, double *out, double beta);
void dp_rc_h(const double *t, size_t t_len, double *out, double beta);
size_t dp_field_bits(const char * spec, uint8_t *out, const char **why);
void dp__sweep_ends(double fs, double f_mid, double rate, size_t n, double center, double *out);
#ifdef __cplusplus
}
#endif

#endif /* WFM_CORE_H */