mirror of
https://github.com/dj0abr/SSB_HighSpeed_Modem.git
synced 2024-11-22 12:19:49 -05:00
43 lines
1.7 KiB
C
43 lines
1.7 KiB
C
|
#pragma once
|
||
|
|
||
|
#include "liquid.h"
|
||
|
|
||
|
typedef struct _SYMTRACK_ {
|
||
|
// parameters
|
||
|
int filter_type; // filter type (e.g. LIQUID_FIRFILT_RRC)
|
||
|
unsigned int k; // samples/symbol
|
||
|
unsigned int m; // filter semi-length
|
||
|
float beta; // filter excess bandwidth
|
||
|
int mod_scheme; // demodulator
|
||
|
|
||
|
// automatic gain control
|
||
|
agc_crcf agc; // agc object
|
||
|
float agc_bandwidth; // agc bandwidth
|
||
|
|
||
|
// symbol timing recovery
|
||
|
symsync_crcf symsync; // symbol timing recovery object
|
||
|
float symsync_bandwidth; // symsync loop bandwidth
|
||
|
liquid_float_complex symsync_buf[8]; // symsync output buffer
|
||
|
unsigned int symsync_index; // symsync output sample index
|
||
|
|
||
|
// equalizer/decimator
|
||
|
eqlms_cccf eq; // equalizer (LMS)
|
||
|
unsigned int eq_len; // equalizer length
|
||
|
float eq_bandwidth; // equalizer bandwidth
|
||
|
enum {
|
||
|
SYMTRACK_EQ_CM, // equalizer strategy: constant modulus
|
||
|
SYMTRACK_EQ_DD, // equalizer strategy: decision directed
|
||
|
SYMTRACK_EQ_OFF, // equalizer strategy: disabled
|
||
|
} eq_strategy;
|
||
|
|
||
|
// nco/phase-locked loop
|
||
|
nco_crcf nco; // nco (carrier recovery)
|
||
|
float pll_bandwidth; // phase-locked loop bandwidth
|
||
|
|
||
|
// demodulator
|
||
|
modem demod; // linear modem demodulator
|
||
|
|
||
|
// state and counters
|
||
|
unsigned int num_syms_rx; // number of symbols recovered
|
||
|
} SYMTRACK;
|