1 #define RX_PULSESHAPER_1200_GAIN 32767.000000f
2 #define RX_PULSESHAPER_1200_COEFF_SETS 12
3 static const int16_t rx_pulseshaper_1200_re[RX_PULSESHAPER_1200_COEFF_SETS][27] =
354 static const int16_t rx_pulseshaper_1200_im[RX_PULSESHAPER_1200_COEFF_SETS][27] =
uint32_t scramble_reg
The register for the data scrambler.
Definition: private/v22bis.h:100
void dds_advance(uint32_t *phase_acc, int32_t phase_rate)
Advance the phase, without returning any new signal sample.
Definition: dds_int.c:362
int32_t carrier_phase_rate
The update rate for the phase of the carrier (i.e. the DDS increment).
Definition: private/v22bis.h:116
@ SIG_STATUS_MODEM_RETRAIN_OCCURRED
Notification that a modem retrain has occurred.
Definition: async.h:83
float eq_delta
The current delta factor for updating the equalizer coefficients.
Definition: private/v22bis.h:161
Definition: private/v22bis.h:72
uint32_t carrier_phase
The current phase of the carrier (i.e. the DDS parameter).
Definition: private/v22bis.h:114
complexf_t eq_coeff[2 *7+1]
The adaptive equalizer coefficients.
Definition: private/v22bis.h:163
@ SIG_STATUS_CARRIER_UP
The carrier signal is up. This merely indicates that carrier energy has been seen....
Definition: async.h:58
void dds_advancef(uint32_t *phase_acc, int32_t phase_rate)
Advance the phase, without returning any new signal sample.
Definition: dds_float.c:2133
float power_meter_current_dbm0(power_meter_t *s)
Get the current power meter reading, in dBm0.
Definition: power_meter.c:120
int gardner_step
Current step size of Gardner algorithm integration.
Definition: private/v22bis.h:183
logging_state_t logging
Error and flow logging control.
Definition: private/v22bis.h:246
void v22bis_rx_signal_cutoff(v22bis_state_t *s, float cutoff)
Definition: v22bis_rx.c:157
int32_t dds_phase_ratef(float frequency)
Find the phase rate equivalent to a frequency, in Hz.
Definition: dds_float.c:2109
int32_t carrier_off_power
The power meter level at which carrier off is declared.
Definition: private/v22bis.h:130
complexf_t dds_complexf(uint32_t *phase_acc, int32_t phase_rate)
Generate a complex floating point tone sample.
Definition: dds_float.c:2165
int32_t carrier_on_power
The power meter level at which carrier on is declared.
Definition: private/v22bis.h:128
int32_t power_meter_update(power_meter_t *s, int16_t amp)
Update a power meter.
Definition: power_meter.c:84
float vec_circular_dot_prodf(const float x[], const float y[], int n, int pos)
Find the dot product of two float vectors, where the first is a circular buffer with an offset for th...
Definition: vector_float.c:852
int training_count
A count of how far through the current training step we are.
Definition: private/v22bis.h:108
int scrambler_pattern_count
A counter for the number of consecutive bits of repeating pattern through the scrambler.
Definition: private/v22bis.h:103
float v22bis_rx_carrier_frequency(v22bis_state_t *s)
Definition: v22bis_rx.c:139
void v22bis_rx_set_qam_report_handler(v22bis_state_t *s, qam_report_handler_t handler, void *user_data)
Definition: v22bis_rx.c:877
SPAN_DECLARE_NONSTD(int) async_tx_get_bit(void *user_data)
Get the next bit of a transmitted serial bit stream.
complexf_t eq_buf[15+1]
The equalizer signal buffer.
Definition: private/v22bis.h:165
float training_error
A measure of how much mismatch there is between the real constellation, and the decoded symbol positi...
Definition: private/v22bis.h:169
float im
Imaginary part.
Definition: complex.h:47
float v22bis_rx_signal_power(v22bis_state_t *s)
Definition: v22bis_rx.c:151
float carrier_track_p
The proportional part of the carrier tracking filter.
Definition: private/v22bis.h:171
int signal_present
>0 if a signal above the minimum is present. It may or may not be a V.22bis signal.
Definition: private/v22bis.h:111
int training
0 if receiving user data. A training stage value during training
Definition: private/v22bis.h:106
int gardner_integrate
Integration variable for damping the Gardner algorithm tests.
Definition: private/v22bis.h:181
float carrier_track_i
The integral part of the carrier tracking filter.
Definition: private/v22bis.h:173
int bit_rate
The maximum permitted bit rate of the modem. Valid values are 1200 and 2400.
Definition: private/v22bis.h:75
put_bit_func_t put_bit
The callback function used to put each bit received.
Definition: private/v22bis.h:83
modem_status_func_t status_handler
The callback function used to report modem status changes.
Definition: private/v22bis.h:87
@ SIG_STATUS_CARRIER_DOWN
The carrier signal has dropped.
Definition: async.h:54
void * status_user_data
A user specified opaque pointer passed to the status function.
Definition: private/v22bis.h:89
int32_t vec_circular_dot_prodi16(const int16_t x[], const int16_t y[], int n, int pos)
Find the dot product of two int16_t vectors, where the first is a circular buffer with an offset for ...
Definition: vector_int.c:261
float v22bis_rx_symbol_timing_correction(v22bis_state_t *s)
Definition: v22bis_rx.c:145
void * put_bit_user_data
A user specified opaque pointer passed to the put_bit callback routine.
Definition: private/v22bis.h:85
int baud_phase
The current fractional phase of the baud timing.
Definition: private/v22bis.h:188
int rrc_filter_step
Current offset into the RRC pulse shaping filter buffer.
Definition: private/v22bis.h:97
int span_log(logging_state_t *s, int level, const char *format,...)
Generate a log entry.
Definition: logging.c:84
int v22bis_restart(v22bis_state_t *s, int bit_rate)
Reinitialise an existing V.22bis modem context.
Definition: v22bis_tx.c:568
int total_baud_timing_correction
The total symbol timing correction since the carrier came up. This is only for performance analysis p...
Definition: private/v22bis.h:186
float dds_frequencyf(int32_t phase_rate)
Find the frequency, in Hz, equivalent to a phase rate.
Definition: dds_float.c:2115
float agc_scaling
The scaling factor accessed by the AGC algorithm.
Definition: private/v22bis.h:156
int constellation_state
The code number for the current position in the constellation.
Definition: private/v22bis.h:132
void * qam_user_data
A user specified opaque pointer passed to the qam_report callback routine.
Definition: private/v22bis.h:123
int32_t power_meter_level_dbm0(float level)
Get the current power meter reading, in dBm0.
Definition: power_meter.c:91
int calling_party
TRUE is this is the calling side modem.
Definition: private/v22bis.h:77
float re
Real part.
Definition: complex.h:45
float rrc_filter[27]
The root raised cosine (RRC) pulse shaping filter buffer.
Definition: private/v22bis.h:158
#define EQUALIZER_DELTA
Definition: v22bis_rx.c:86
int eq_step
Current offset into the equalizer buffer.
Definition: private/v22bis.h:176
int v22bis_rx_restart(v22bis_state_t *s)
Reinitialise an existing V.22bis modem receive context.
Definition: v22bis_rx.c:835
#define PULSESHAPER_COEFF_SETS
Definition: v22bis_rx.c:88
int v22bis_rx_equalizer_state(v22bis_state_t *s, complexf_t **coeffs)
Get a snapshot of the current equalizer coefficients.
Definition: v22bis_rx.c:173
power_meter_t * power_meter_init(power_meter_t *s, int shift)
Initialise a power meter context.
Definition: power_meter.c:50
qam_report_handler_t qam_report
A callback function which may be enabled to report every symbol's constellation position.
Definition: private/v22bis.h:120
power_meter_t rx_power
A power meter, to measure the HPF'ed signal power in the channel.
Definition: private/v22bis.h:126
int eq_put_step
Current write offset into the equalizer buffer.
Definition: private/v22bis.h:178
- src
- v22bis_rx_1200_fixed_rrc.h