mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2026-06-09 09:24:57 -04:00
Updated Windows liquid-dsp binaries to master using GCC 9.30
This commit is contained in:
+153
-113
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2007 - 2019 Joseph Gaeddert
|
||||
* Copyright (c) 2007 - 2020 Joseph Gaeddert
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -50,7 +50,7 @@ extern "C" {
|
||||
|
||||
//
|
||||
// Compile-time version numbers
|
||||
//
|
||||
//
|
||||
// LIQUID_VERSION = "X.Y.Z"
|
||||
// LIQUID_VERSION_NUMBER = (X*1000000 + Y*1000 + Z)
|
||||
//
|
||||
@@ -75,7 +75,7 @@ int liquid_libversion_number(void);
|
||||
#define LIQUID_CONCAT(prefix, name) prefix ## name
|
||||
#define LIQUID_VALIDATE_INPUT
|
||||
|
||||
/*
|
||||
/*
|
||||
* Compile-time complex data type definitions
|
||||
*
|
||||
* Default: use the C99 complex data type, otherwise
|
||||
@@ -95,7 +95,7 @@ int liquid_libversion_number(void);
|
||||
LIQUID_DEFINE_COMPLEX(float, liquid_float_complex);
|
||||
LIQUID_DEFINE_COMPLEX(double, liquid_double_complex);
|
||||
|
||||
//
|
||||
//
|
||||
// MODULE : agc (automatic gain control)
|
||||
//
|
||||
|
||||
@@ -781,7 +781,7 @@ LIQUID_DOTPROD_DEFINE_API(LIQUID_DOTPROD_MANGLE_CRCF,
|
||||
float,
|
||||
liquid_float_complex)
|
||||
|
||||
//
|
||||
//
|
||||
// sum squared methods
|
||||
//
|
||||
|
||||
@@ -1098,7 +1098,7 @@ typedef enum {
|
||||
LIQUID_FEC_HAMMING74, // Hamming (7,4) block code, r1/2 (really 4/7)
|
||||
LIQUID_FEC_HAMMING84, // Hamming (7,4) with extra parity bit, r1/2
|
||||
LIQUID_FEC_HAMMING128, // Hamming (12,8) block code, r2/3
|
||||
|
||||
|
||||
LIQUID_FEC_GOLAY2412, // Golay (24,12) block code, r1/2
|
||||
LIQUID_FEC_SECDED2216, // SEC-DED (22,16) block code, r8/11
|
||||
LIQUID_FEC_SECDED3932, // SEC-DED (39,32) block code
|
||||
@@ -1202,7 +1202,7 @@ void fec_decode_soft(fec _q,
|
||||
unsigned char * _msg_enc,
|
||||
unsigned char * _msg_dec);
|
||||
|
||||
//
|
||||
//
|
||||
// Packetizer
|
||||
//
|
||||
|
||||
@@ -1362,8 +1362,8 @@ typedef enum {
|
||||
LIQUID_FFT_UNKNOWN = 0, // unknown transform type
|
||||
|
||||
// regular complex one-dimensional transforms
|
||||
LIQUID_FFT_FORWARD = +1, // complex one-dimensional FFT
|
||||
LIQUID_FFT_BACKWARD = -1, // complex one-dimensional inverse FFT
|
||||
LIQUID_FFT_FORWARD = +1, // complex one-dimensional FFT
|
||||
LIQUID_FFT_BACKWARD = -1, // complex one-dimensional inverse FFT
|
||||
|
||||
// discrete cosine transforms
|
||||
LIQUID_FFT_REDFT00 = 10, // real one-dimensional DCT-I
|
||||
@@ -1469,7 +1469,7 @@ LIQUID_FFT_DEFINE_API(LIQUID_FFT_MANGLE_FLOAT,float,liquid_float_complex)
|
||||
// int _flags);
|
||||
|
||||
|
||||
//
|
||||
//
|
||||
// spectral periodogram
|
||||
//
|
||||
|
||||
@@ -1516,8 +1516,8 @@ void SPGRAM(_reset)(SPGRAM() _q); \
|
||||
/* Print internal state of the object to stdout */ \
|
||||
void SPGRAM(_print)(SPGRAM() _q); \
|
||||
\
|
||||
/* Set the forgetting factor (filter bandwidth) for accumulating */ \
|
||||
/* independent transform squared magnitude outputs. */ \
|
||||
/* Set the filter bandwidth for accumulating independent transform */ \
|
||||
/* squared magnitude outputs. */ \
|
||||
/* This is used to compute a running time-average power spectral */ \
|
||||
/* density output. */ \
|
||||
/* The value of _alpha determines how the power spectral estimate is */ \
|
||||
@@ -1534,6 +1534,10 @@ void SPGRAM(_print)(SPGRAM() _q); \
|
||||
int SPGRAM(_set_alpha)(SPGRAM() _q, \
|
||||
float _alpha); \
|
||||
\
|
||||
/* Get the filter bandwidth for accumulating independent transform */ \
|
||||
/* squared magnitude outputs. */ \
|
||||
float SPGRAM(_get_alpha)(SPGRAM() _q); \
|
||||
\
|
||||
/* Set the center frequency of the received signal. */ \
|
||||
/* This is for display purposes only when generating the output image. */ \
|
||||
/* _q : spectral periodogram object */ \
|
||||
@@ -1569,9 +1573,6 @@ unsigned long long int SPGRAM(_get_num_transforms)(SPGRAM() _q); \
|
||||
/* Get number of transforms processed since object was created */ \
|
||||
unsigned long long int SPGRAM(_get_num_transforms_total)(SPGRAM() _q); \
|
||||
\
|
||||
/* Get forgetting factor (filter bandwidth) */ \
|
||||
float SPGRAM(_get_alpha)(SPGRAM() _q); \
|
||||
\
|
||||
/* Push a single sample into the object, executing internal transform */ \
|
||||
/* as necessary. */ \
|
||||
/* _q : spgram object */ \
|
||||
@@ -1623,7 +1624,7 @@ LIQUID_SPGRAM_DEFINE_API(LIQUID_SPGRAM_MANGLE_FLOAT,
|
||||
liquid_float_complex,
|
||||
float)
|
||||
|
||||
//
|
||||
//
|
||||
// asgram : ascii spectral periodogram
|
||||
//
|
||||
|
||||
@@ -1709,7 +1710,7 @@ LIQUID_ASGRAM_DEFINE_API(LIQUID_ASGRAM_MANGLE_FLOAT,
|
||||
liquid_float_complex,
|
||||
float)
|
||||
|
||||
//
|
||||
//
|
||||
// spectral periodogram waterfall
|
||||
//
|
||||
|
||||
@@ -2495,7 +2496,7 @@ FIRFILT() FIRFILT(_create_kaiser)(unsigned int _n, \
|
||||
float _As, \
|
||||
float _mu); \
|
||||
\
|
||||
/* Create object from square-root Nyquist prototype */ \
|
||||
/* Create object from square-root Nyquist prototype. */ \
|
||||
/* The filter length will be \(2 k m + 1 \) samples long with a delay */ \
|
||||
/* of \( k m + 1 \) samples. */ \
|
||||
/* _type : filter type (e.g. LIQUID_FIRFILT_RRC) */ \
|
||||
@@ -2509,6 +2510,14 @@ FIRFILT() FIRFILT(_create_rnyquist)(int _type, \
|
||||
float _beta, \
|
||||
float _mu); \
|
||||
\
|
||||
/* Create object from Parks-McClellan algorithm prototype */ \
|
||||
/* _h_len : filter length, _h_len > 0 */ \
|
||||
/* _fc : cutoff frequency, 0 < _fc < 0.5 */ \
|
||||
/* _As : stop-band attenuation [dB], _As > 0 */ \
|
||||
FIRFILT() FIRFILT(_create_firdespm)(unsigned int _h_len, \
|
||||
float _fc, \
|
||||
float _As); \
|
||||
\
|
||||
/* Create rectangular filter prototype; that is */ \
|
||||
/* \( \vec{h} = \{ 1, 1, 1, \ldots 1 \} \) */ \
|
||||
/* _n : length of filter [samples], 0 < _n <= 1024 */ \
|
||||
@@ -3183,7 +3192,7 @@ LIQUID_FIRPFB_DEFINE_API(LIQUID_FIRPFB_MANGLE_CCCF,
|
||||
liquid_float_complex,
|
||||
liquid_float_complex)
|
||||
|
||||
//
|
||||
//
|
||||
// Interpolators
|
||||
//
|
||||
|
||||
@@ -3231,6 +3240,16 @@ FIRINTERP() FIRINTERP(_create_prototype)(int _type, \
|
||||
float _beta, \
|
||||
float _dt); \
|
||||
\
|
||||
/* Create linear interpolator object */ \
|
||||
/* _M : interpolation factor, _M > 1 */ \
|
||||
FIRINTERP() FIRINTERP(_create_linear)(unsigned int _M); \
|
||||
\
|
||||
/* Create window interpolator object */ \
|
||||
/* _M : interpolation factor, _M > 1 */ \
|
||||
/* _m : filter semi-length, _m > 0 */ \
|
||||
FIRINTERP() FIRINTERP(_create_window)(unsigned int _M, \
|
||||
unsigned int _m); \
|
||||
\
|
||||
/* Destroy firinterp object, freeing all internal memory */ \
|
||||
void FIRINTERP(_destroy)(FIRINTERP() _q); \
|
||||
\
|
||||
@@ -3392,7 +3411,7 @@ LIQUID_IIRINTERP_DEFINE_API(LIQUID_IIRINTERP_MANGLE_CCCF,
|
||||
liquid_float_complex,
|
||||
liquid_float_complex)
|
||||
|
||||
//
|
||||
//
|
||||
// Decimators
|
||||
//
|
||||
|
||||
@@ -3597,7 +3616,7 @@ LIQUID_IIRDECIM_DEFINE_API(LIQUID_IIRDECIM_MANGLE_CCCF,
|
||||
|
||||
|
||||
|
||||
//
|
||||
//
|
||||
// Half-band resampler
|
||||
//
|
||||
#define LIQUID_RESAMP2_MANGLE_RRRF(name) LIQUID_CONCAT(resamp2_rrrf,name)
|
||||
@@ -3707,7 +3726,7 @@ LIQUID_RESAMP2_DEFINE_API(LIQUID_RESAMP2_MANGLE_CCCF,
|
||||
liquid_float_complex)
|
||||
|
||||
|
||||
//
|
||||
//
|
||||
// Rational resampler
|
||||
//
|
||||
#define LIQUID_RRESAMP_MANGLE_RRRF(name) LIQUID_CONCAT(rresamp_rrrf,name)
|
||||
@@ -3856,7 +3875,7 @@ LIQUID_RRESAMP_DEFINE_API(LIQUID_RRESAMP_MANGLE_CCCF,
|
||||
liquid_float_complex)
|
||||
|
||||
|
||||
//
|
||||
//
|
||||
// Arbitrary resampler
|
||||
//
|
||||
#define LIQUID_RESAMP_MANGLE_RRRF(name) LIQUID_CONCAT(resamp_rrrf,name)
|
||||
@@ -3975,7 +3994,7 @@ LIQUID_RESAMP_DEFINE_API(LIQUID_RESAMP_MANGLE_CCCF,
|
||||
liquid_float_complex)
|
||||
|
||||
|
||||
//
|
||||
//
|
||||
// Multi-stage half-band resampler
|
||||
//
|
||||
|
||||
@@ -4055,7 +4074,7 @@ LIQUID_MSRESAMP2_DEFINE_API(LIQUID_MSRESAMP2_MANGLE_CCCF,
|
||||
liquid_float_complex)
|
||||
|
||||
|
||||
//
|
||||
//
|
||||
// Multi-stage arbitrary resampler
|
||||
//
|
||||
#define LIQUID_MSRESAMP_MANGLE_RRRF(name) LIQUID_CONCAT(msresamp_rrrf,name)
|
||||
@@ -4122,7 +4141,7 @@ LIQUID_MSRESAMP_DEFINE_API(LIQUID_MSRESAMP_MANGLE_CCCF,
|
||||
liquid_float_complex)
|
||||
|
||||
|
||||
//
|
||||
//
|
||||
// Symbol timing recovery (symbol synchronizer)
|
||||
//
|
||||
#define LIQUID_SYMSYNC_MANGLE_RRRF(name) LIQUID_CONCAT(symsync_rrrf,name)
|
||||
@@ -4618,6 +4637,7 @@ void qpilotsync_execute(qpilotsync _q,
|
||||
float qpilotsync_get_dphi(qpilotsync _q);
|
||||
float qpilotsync_get_phi (qpilotsync _q);
|
||||
float qpilotsync_get_gain(qpilotsync _q);
|
||||
float qpilotsync_get_evm (qpilotsync _q);
|
||||
|
||||
|
||||
//
|
||||
@@ -4640,8 +4660,8 @@ void framegen64_print(framegen64 _q);
|
||||
|
||||
// generate frame
|
||||
// _q : frame generator object
|
||||
// _header : 8-byte header data
|
||||
// _payload : 64-byte payload data
|
||||
// _header : 8-byte header data, NULL for random
|
||||
// _payload : 64-byte payload data, NULL for random
|
||||
// _frame : output frame samples [size: LIQUID_FRAME64_LEN x 1]
|
||||
void framegen64_execute(framegen64 _q,
|
||||
unsigned char * _header,
|
||||
@@ -4678,6 +4698,10 @@ void framesync64_debug_enable(framesync64 _q);
|
||||
void framesync64_debug_disable(framesync64 _q);
|
||||
void framesync64_debug_print(framesync64 _q, const char * _filename);
|
||||
|
||||
// frame data statistics
|
||||
void framesync64_reset_framedatastats(framesync64 _q);
|
||||
framedatastats_s framesync64_get_framedatastats (framesync64 _q);
|
||||
|
||||
#if 0
|
||||
// advanced modes
|
||||
void framesync64_set_csma_callbacks(framesync64 _q,
|
||||
@@ -4815,7 +4839,7 @@ void flexframesync_debug_print(flexframesync _q,
|
||||
// bpacket : binary packet suitable for data streaming
|
||||
//
|
||||
|
||||
//
|
||||
//
|
||||
// bpacket generator/encoder
|
||||
//
|
||||
typedef struct bpacketgen_s * bpacketgen;
|
||||
@@ -4860,7 +4884,7 @@ void bpacketgen_encode(bpacketgen _q,
|
||||
unsigned char * _msg_dec,
|
||||
unsigned char * _packet);
|
||||
|
||||
//
|
||||
//
|
||||
// bpacket synchronizer/decoder
|
||||
//
|
||||
typedef struct bpacketsync_s * bpacketsync;
|
||||
@@ -5070,7 +5094,7 @@ void dsssframesync_debug_enable(dsssframesync _q);
|
||||
void dsssframesync_debug_disable(dsssframesync _q);
|
||||
void dsssframesync_debug_print(dsssframesync _q, const char * _filename);
|
||||
|
||||
//
|
||||
//
|
||||
// OFDM flexframe generator
|
||||
//
|
||||
|
||||
@@ -5147,7 +5171,7 @@ int ofdmflexframegen_write(ofdmflexframegen _q,
|
||||
liquid_float_complex * _buf,
|
||||
unsigned int _buf_len);
|
||||
|
||||
//
|
||||
//
|
||||
// OFDM flex frame synchronizer
|
||||
//
|
||||
|
||||
@@ -5194,6 +5218,10 @@ float ofdmflexframesync_get_rssi(ofdmflexframesync _q);
|
||||
// query the received carrier offset estimate
|
||||
float ofdmflexframesync_get_cfo(ofdmflexframesync _q);
|
||||
|
||||
// frame data statistics
|
||||
void ofdmflexframesync_reset_framedatastats(ofdmflexframesync _q);
|
||||
framedatastats_s ofdmflexframesync_get_framedatastats (ofdmflexframesync _q);
|
||||
|
||||
// set the received carrier offset estimate
|
||||
void ofdmflexframesync_set_cfo(ofdmflexframesync _q, float _cfo);
|
||||
|
||||
@@ -5448,7 +5476,7 @@ int detector_cccf_correlate(detector_cccf _q,
|
||||
float * _gamma_hat);
|
||||
|
||||
|
||||
//
|
||||
//
|
||||
// symbol streaming for testing (no meaningful data, just symbols)
|
||||
//
|
||||
#define LIQUID_SYMSTREAM_MANGLE_CFLOAT(name) LIQUID_CONCAT(symstreamcf,name)
|
||||
@@ -5507,7 +5535,7 @@ float SYMSTREAM(_get_gain)(SYMSTREAM() _q); \
|
||||
void SYMSTREAM(_write_samples)(SYMSTREAM() _q, \
|
||||
TO * _buf, \
|
||||
unsigned int _buf_len); \
|
||||
|
||||
|
||||
LIQUID_SYMSTREAM_DEFINE_API(LIQUID_SYMSTREAM_MANGLE_CFLOAT, liquid_float_complex)
|
||||
|
||||
|
||||
@@ -5680,13 +5708,13 @@ int MSOURCE(_get_frequency)(MSOURCE() _q, \
|
||||
void MSOURCE(_write_samples)(MSOURCE() _q, \
|
||||
TO * _buf, \
|
||||
unsigned int _buf_len); \
|
||||
|
||||
|
||||
LIQUID_MSOURCE_DEFINE_API(LIQUID_MSOURCE_MANGLE_CFLOAT, liquid_float_complex)
|
||||
|
||||
|
||||
|
||||
|
||||
//
|
||||
//
|
||||
// Symbol tracking: AGC > symsync > EQ > carrier recovery
|
||||
//
|
||||
#define LIQUID_SYMTRACK_MANGLE_RRRF(name) LIQUID_CONCAT(symtrack_rrrf,name)
|
||||
@@ -5772,7 +5800,7 @@ void SYMTRACK(_execute_block)(SYMTRACK() _q, \
|
||||
unsigned int _nx, \
|
||||
TO * _y, \
|
||||
unsigned int * _ny); \
|
||||
|
||||
|
||||
LIQUID_SYMTRACK_DEFINE_API(LIQUID_SYMTRACK_MANGLE_RRRF,
|
||||
float,
|
||||
float,
|
||||
@@ -5851,11 +5879,11 @@ unsigned int liquid_nextpow2(unsigned int _x);
|
||||
// (n choose k) = n! / ( k! (n-k)! )
|
||||
float liquid_nchoosek(unsigned int _n, unsigned int _k);
|
||||
|
||||
//
|
||||
//
|
||||
// Windowing functions
|
||||
//
|
||||
|
||||
// Modulation schemes available
|
||||
// number of window functions available, including "unknown" type
|
||||
#define LIQUID_WINDOW_NUM_FUNCTIONS (10)
|
||||
|
||||
// prototypes
|
||||
@@ -5882,73 +5910,85 @@ void liquid_print_windows();
|
||||
// returns window type based on input string
|
||||
liquid_window_type liquid_getopt_str2window(const char * _str);
|
||||
|
||||
// Kaiser-Bessel derived window (single sample)
|
||||
// _n : index (0 <= _n < _N)
|
||||
// _N : length of filter (must be even)
|
||||
// _beta : Kaiser window parameter (_beta > 0)
|
||||
float liquid_kbd(unsigned int _n, unsigned int _N, float _beta);
|
||||
|
||||
// Kaiser-Bessel derived window (full window)
|
||||
// _n : length of filter (must be even)
|
||||
// _beta : Kaiser window parameter (_beta > 0)
|
||||
// _w : resulting window
|
||||
void liquid_kbd_window(unsigned int _n, float _beta, float * _w);
|
||||
// generic window function given type
|
||||
// _type : window type, e.g. LIQUID_WINDOW_KAISER
|
||||
// _i : window index, _i in [0,_wlen-1]
|
||||
// _wlen : length of window
|
||||
// _arg : window-specific argument, if required
|
||||
float liquid_windowf(liquid_window_type _type,
|
||||
unsigned int _i,
|
||||
unsigned int _wlen,
|
||||
float _arg);
|
||||
|
||||
// Kaiser window
|
||||
// _n : window index
|
||||
// _N : full window length
|
||||
// _i : window index, _i in [0,_wlen-1]
|
||||
// _wlen : full window length
|
||||
// _beta : Kaiser-Bessel window shape parameter
|
||||
// _dt : fractional sample offset
|
||||
float kaiser(unsigned int _n,
|
||||
unsigned int _N,
|
||||
float _beta,
|
||||
float _dt);
|
||||
float liquid_kaiser(unsigned int _i,
|
||||
unsigned int _wlen,
|
||||
float _beta);
|
||||
|
||||
// Hamming window
|
||||
// _n : window index
|
||||
// _N : full window length
|
||||
float hamming(unsigned int _n,
|
||||
unsigned int _N);
|
||||
// _i : window index, _i in [0,_wlen-1]
|
||||
// _wlen : full window length
|
||||
float liquid_hamming(unsigned int _i,
|
||||
unsigned int _wlen);
|
||||
|
||||
// Hann window
|
||||
// _n : window index
|
||||
// _N : full window length
|
||||
float hann(unsigned int _n,
|
||||
unsigned int _N);
|
||||
// _i : window index, _i in [0,_wlen-1]
|
||||
// _wlen : full window length
|
||||
float liquid_hann(unsigned int _i,
|
||||
unsigned int _wlen);
|
||||
|
||||
// Blackman-harris window
|
||||
// _n : window index
|
||||
// _N : full window length
|
||||
float blackmanharris(unsigned int _n,
|
||||
unsigned int _N);
|
||||
// _i : window index, _i in [0,_wlen-1]
|
||||
// _wlen : full window length
|
||||
float liquid_blackmanharris(unsigned int _i,
|
||||
unsigned int _wlen);
|
||||
|
||||
// 7th order Blackman-harris window
|
||||
// _n : window index
|
||||
// _N : full window length
|
||||
float blackmanharris7(unsigned int _n,
|
||||
unsigned int _N);
|
||||
// _i : window index, _i in [0,_wlen-1]
|
||||
// _wlen : full window length
|
||||
float liquid_blackmanharris7(unsigned int _i,
|
||||
unsigned int _wlen);
|
||||
|
||||
// Flat-top window
|
||||
// _n : window index
|
||||
// _N : full window length
|
||||
float flattop(unsigned int _n,
|
||||
unsigned int _N);
|
||||
// _i : window index, _i in [0,_wlen-1]
|
||||
// _wlen : full window length
|
||||
float liquid_flattop(unsigned int _i,
|
||||
unsigned int _wlen);
|
||||
|
||||
// Triangular window
|
||||
// _n : window index
|
||||
// _N : full window length
|
||||
// _L : triangle length, _L in {_N, _N+1, _N-1}
|
||||
float triangular(unsigned int _n,
|
||||
unsigned int _N,
|
||||
unsigned int _L);
|
||||
// _i : window index, _i in [0,_wlen-1]
|
||||
// _wlen : full window length
|
||||
// _L : triangle length, _L in {_wlen-1, _wlen, _wlen+1}
|
||||
float liquid_triangular(unsigned int _i,
|
||||
unsigned int _wlen,
|
||||
unsigned int _L);
|
||||
|
||||
// raised-cosine tapering window
|
||||
// _n : window index
|
||||
// _t : taper length
|
||||
// _N : full window length
|
||||
float liquid_rcostaper_windowf(unsigned int _n,
|
||||
unsigned int _t,
|
||||
unsigned int _N);
|
||||
// _i : window index
|
||||
// _wlen : full window length
|
||||
// _t : taper length, _t in [0,_wlen/2]
|
||||
float liquid_rcostaper_window(unsigned int _i,
|
||||
unsigned int _wlen,
|
||||
unsigned int _t);
|
||||
|
||||
// Kaiser-Bessel derived window (single sample)
|
||||
// _i : window index, _i in [0,_wlen-1]
|
||||
// _wlen : length of filter (must be even)
|
||||
// _beta : Kaiser window parameter (_beta > 0)
|
||||
float liquid_kbd(unsigned int _i,
|
||||
unsigned int _wlen,
|
||||
float _beta);
|
||||
|
||||
// Kaiser-Bessel derived window (full window)
|
||||
// _wlen : full window length (must be even)
|
||||
// _beta : Kaiser window parameter (_beta > 0)
|
||||
// _w : window output buffer, [size: _wlen x 1]
|
||||
void liquid_kbd_window(unsigned int _wlen,
|
||||
float _beta,
|
||||
float * _w);
|
||||
|
||||
|
||||
// polynomials
|
||||
@@ -6145,7 +6185,7 @@ void poly_binomial_expand_pm(unsigned int _n,
|
||||
int * _c);
|
||||
#endif
|
||||
|
||||
//
|
||||
//
|
||||
// modular arithmetic, etc.
|
||||
//
|
||||
|
||||
@@ -6664,7 +6704,7 @@ LIQUID_SMATRIX_DEFINE_API(LIQUID_SMATRIX_MANGLE_BOOL, unsigned char)
|
||||
LIQUID_SMATRIX_DEFINE_API(LIQUID_SMATRIX_MANGLE_FLOAT, float)
|
||||
LIQUID_SMATRIX_DEFINE_API(LIQUID_SMATRIX_MANGLE_INT, short int)
|
||||
|
||||
//
|
||||
//
|
||||
// smatrix cross methods
|
||||
//
|
||||
|
||||
@@ -7132,7 +7172,7 @@ float fskdem_get_symbol_energy(fskdem _q,
|
||||
unsigned int _range);
|
||||
|
||||
|
||||
//
|
||||
//
|
||||
// Analog frequency modulator
|
||||
//
|
||||
#define LIQUID_FREQMOD_MANGLE_FLOAT(name) LIQUID_CONCAT(freqmod,name)
|
||||
@@ -7181,7 +7221,7 @@ void FREQMOD(_modulate_block)(FREQMOD() _q, \
|
||||
// define freqmod APIs
|
||||
LIQUID_FREQMOD_DEFINE_API(LIQUID_FREQMOD_MANGLE_FLOAT,float,liquid_float_complex)
|
||||
|
||||
//
|
||||
//
|
||||
// Analog frequency demodulator
|
||||
//
|
||||
|
||||
@@ -7549,7 +7589,7 @@ void ofdmframe_print_sctype(unsigned char * _p,
|
||||
unsigned int _M);
|
||||
|
||||
|
||||
//
|
||||
//
|
||||
// OFDM frame (symbol) generator
|
||||
//
|
||||
typedef struct ofdmframegen_s * ofdmframegen;
|
||||
@@ -7591,7 +7631,7 @@ void ofdmframegen_writesymbol(ofdmframegen _q,
|
||||
void ofdmframegen_writetail(ofdmframegen _q,
|
||||
liquid_float_complex * _x);
|
||||
|
||||
//
|
||||
//
|
||||
// OFDM frame (symbol) synchronizer
|
||||
//
|
||||
typedef int (*ofdmframesync_callback)(liquid_float_complex * _y,
|
||||
@@ -7634,7 +7674,7 @@ void ofdmframesync_debug_disable(ofdmframesync _q);
|
||||
void ofdmframesync_debug_print(ofdmframesync _q, const char * _filename);
|
||||
|
||||
|
||||
//
|
||||
//
|
||||
// MODULE : nco (numerically-controlled oscillator)
|
||||
//
|
||||
|
||||
@@ -7972,7 +8012,7 @@ float qnsearch_execute(qnsearch _g,
|
||||
unsigned int _max_iterations,
|
||||
float _target_utility);
|
||||
|
||||
//
|
||||
//
|
||||
// chromosome (for genetic algorithm search)
|
||||
//
|
||||
typedef struct chromosome_s * chromosome;
|
||||
@@ -8035,7 +8075,7 @@ unsigned int chromosome_value(chromosome _c,
|
||||
float chromosome_valuef(chromosome _c,
|
||||
unsigned int _index);
|
||||
|
||||
//
|
||||
//
|
||||
// genetic algorithm search
|
||||
//
|
||||
typedef struct gasearch_s * gasearch;
|
||||
@@ -8348,7 +8388,7 @@ void bsequence_create_ccodes(bsequence _a,
|
||||
#define LIQUID_MSEQUENCE_GENPOLY_M13 0x201b // 13 8191 20033 10000000011011
|
||||
#define LIQUID_MSEQUENCE_GENPOLY_M14 0x402b // 14 16383 40053 100000000101011
|
||||
#define LIQUID_MSEQUENCE_GENPOLY_M15 0x8003 // 15 32767 100003 1000000000000011
|
||||
|
||||
|
||||
typedef struct msequence_s * msequence;
|
||||
|
||||
// create a maximal-length sequence (m-sequence) object with
|
||||
@@ -8402,7 +8442,7 @@ void msequence_set_state(msequence _ms,
|
||||
unsigned int _a);
|
||||
|
||||
|
||||
//
|
||||
//
|
||||
// MODULE : utility
|
||||
//
|
||||
|
||||
@@ -8469,7 +8509,7 @@ void liquid_repack_bytes(unsigned char * _sym_in,
|
||||
unsigned int _sym_out_bps,
|
||||
unsigned int _sym_out_len,
|
||||
unsigned int * _num_written);
|
||||
|
||||
|
||||
// shift array to the left _b bits, filling in zeros
|
||||
// _src : source address [size: _n x 1]
|
||||
// _n : input data array size
|
||||
@@ -8477,7 +8517,7 @@ void liquid_repack_bytes(unsigned char * _sym_in,
|
||||
void liquid_lbshift(unsigned char * _src,
|
||||
unsigned int _n,
|
||||
unsigned int _b);
|
||||
|
||||
|
||||
// shift array to the right _b bits, filling in zeros
|
||||
// _src : source address [size: _n x 1]
|
||||
// _n : input data array size
|
||||
@@ -8485,7 +8525,7 @@ void liquid_lbshift(unsigned char * _src,
|
||||
void liquid_rbshift(unsigned char * _src,
|
||||
unsigned int _n,
|
||||
unsigned int _b);
|
||||
|
||||
|
||||
// circularly shift array to the left _b bits
|
||||
// _src : source address [size: _n x 1]
|
||||
// _n : input data array size
|
||||
@@ -8493,7 +8533,7 @@ void liquid_rbshift(unsigned char * _src,
|
||||
void liquid_lbcircshift(unsigned char * _src,
|
||||
unsigned int _n,
|
||||
unsigned int _b);
|
||||
|
||||
|
||||
// circularly shift array to the right _b bits
|
||||
// _src : source address [size: _n x 1]
|
||||
// _n : input data array size
|
||||
@@ -8501,7 +8541,7 @@ void liquid_lbcircshift(unsigned char * _src,
|
||||
void liquid_rbcircshift(unsigned char * _src,
|
||||
unsigned int _n,
|
||||
unsigned int _b);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -8512,7 +8552,7 @@ void liquid_rbcircshift(unsigned char * _src,
|
||||
void liquid_lshift(unsigned char * _src,
|
||||
unsigned int _n,
|
||||
unsigned int _b);
|
||||
|
||||
|
||||
// shift array to the right _b bytes, filling in zeros
|
||||
// _src : source address [size: _n x 1]
|
||||
// _n : input data array size
|
||||
@@ -8520,7 +8560,7 @@ void liquid_lshift(unsigned char * _src,
|
||||
void liquid_rshift(unsigned char * _src,
|
||||
unsigned int _n,
|
||||
unsigned int _b);
|
||||
|
||||
|
||||
// circular shift array to the left _b bytes
|
||||
// _src : source address [size: _n x 1]
|
||||
// _n : input data array size
|
||||
@@ -8528,7 +8568,7 @@ void liquid_rshift(unsigned char * _src,
|
||||
void liquid_lcircshift(unsigned char * _src,
|
||||
unsigned int _n,
|
||||
unsigned int _b);
|
||||
|
||||
|
||||
// circular shift array to the right _b bytes
|
||||
// _src : source address [size: _n x 1]
|
||||
// _n : input data array size
|
||||
@@ -8536,9 +8576,9 @@ void liquid_lcircshift(unsigned char * _src,
|
||||
void liquid_rcircshift(unsigned char * _src,
|
||||
unsigned int _n,
|
||||
unsigned int _b);
|
||||
|
||||
|
||||
// Count the number of ones in an integer
|
||||
unsigned int liquid_count_ones(unsigned int _x);
|
||||
unsigned int liquid_count_ones(unsigned int _x);
|
||||
|
||||
// count number of ones in an integer, modulo 2
|
||||
unsigned int liquid_count_ones_mod2(unsigned int _x);
|
||||
@@ -8548,7 +8588,7 @@ unsigned int liquid_bdotprod(unsigned int _x,
|
||||
unsigned int _y);
|
||||
|
||||
// Count leading zeros in an integer
|
||||
unsigned int liquid_count_leading_zeros(unsigned int _x);
|
||||
unsigned int liquid_count_leading_zeros(unsigned int _x);
|
||||
|
||||
// Most-significant bit index
|
||||
unsigned int liquid_msb_index(unsigned int _x);
|
||||
@@ -8571,7 +8611,7 @@ void liquid_get_scale(float _val,
|
||||
char * _unit,
|
||||
float * _scale);
|
||||
|
||||
//
|
||||
//
|
||||
// MODULE : vector
|
||||
//
|
||||
|
||||
@@ -8649,7 +8689,7 @@ void VECTOR(_normalize)(T * _x, \
|
||||
LIQUID_VECTOR_DEFINE_API(LIQUID_VECTOR_MANGLE_RF, float, float)
|
||||
LIQUID_VECTOR_DEFINE_API(LIQUID_VECTOR_MANGLE_CF, liquid_float_complex, float)
|
||||
|
||||
//
|
||||
//
|
||||
// mixed types
|
||||
//
|
||||
#if 0
|
||||
|
||||
Reference in New Issue
Block a user