26#if !defined(_SPANDSP_PRIVATE_V22BIS_H_)
27#define _SPANDSP_PRIVATE_V22BIS_H_
30#define V22BIS_EQUALIZER_LEN 17
32#define V22BIS_EQUALIZER_PRE_LEN 8
35#define V22BIS_TX_FILTER_STEPS 9
38#define V22BIS_RX_FILTER_STEPS 27
43 V22BIS_RX_TRAINING_STAGE_NORMAL_OPERATION,
44 V22BIS_RX_TRAINING_STAGE_SYMBOL_ACQUISITION,
45 V22BIS_RX_TRAINING_STAGE_LOG_PHASE,
46 V22BIS_RX_TRAINING_STAGE_UNSCRAMBLED_ONES,
47 V22BIS_RX_TRAINING_STAGE_UNSCRAMBLED_ONES_SUSTAINING,
48 V22BIS_RX_TRAINING_STAGE_SCRAMBLED_ONES_AT_1200,
49 V22BIS_RX_TRAINING_STAGE_SCRAMBLED_ONES_AT_1200_SUSTAINING,
50 V22BIS_RX_TRAINING_STAGE_WAIT_FOR_SCRAMBLED_ONES_AT_2400,
51 V22BIS_RX_TRAINING_STAGE_PARKED
57 V22BIS_TX_TRAINING_STAGE_NORMAL_OPERATION = 0,
58 V22BIS_TX_TRAINING_STAGE_INITIAL_SILENCE,
59 V22BIS_TX_TRAINING_STAGE_INITIAL_TIMED_SILENCE,
60 V22BIS_TX_TRAINING_STAGE_U11,
61 V22BIS_TX_TRAINING_STAGE_U00,
62 V22BIS_TX_TRAINING_STAGE_U0011,
63 V22BIS_TX_TRAINING_STAGE_S11,
64 V22BIS_TX_TRAINING_STAGE_TIMED_S11,
65 V22BIS_TX_TRAINING_STAGE_S1111,
66 V22BIS_TX_TRAINING_STAGE_PARKED
69#if defined(SPANDSP_USE_FIXED_POINT)
72extern const complexf_t v22bis_constellation[16];
100 int negotiated_bit_rate;
141 int constellation_state;
143#if defined(SPANDSP_USE_FIXED_POINT)
199 int sixteen_way_decisions;
208#if defined(SPANDSP_USE_FIXED_POINT)
215 int16_t rrc_filter_im[V22BIS_TX_FILTER_STEPS];
223 float rrc_filter_im[V22BIS_TX_FILTER_STEPS];
261#if defined(__cplusplus)
276#if defined(__cplusplus)
void(*) span_put_bit_func_t(void *user_data, int bit)
Definition async.h:123
void(*) span_modem_status_func_t(void *user_data, int status)
Definition async.h:131
int(*) span_get_bit_func_t(void *user_data)
Definition async.h:127
struct logging_state_s logging_state_t
Definition logging.h:72
complexf_t eq_coeff[17]
The adaptive equalizer coefficients.
int eq_step
Current offset into the equalizer buffer.
float carrier_track_i
The integral part of the carrier tracking filter.
complexf_t eq_buf[17]
The equalizer signal buffer.
float training_error
A measure of how much mismatch there is between the real constellation, and the decoded symbol positi...
int eq_put_step
Current write offset into the equalizer buffer.
int signal_present
>0 if a signal above the minimum is present. It may or may not be a V.22bis signal.
float rrc_filter[27]
The root raised cosine (RRC) pulse shaping filter buffer.
int32_t carrier_phase_rate
The update rate for the phase of the carrier (i.e. the DDS increment).
int scrambler_pattern_count
A counter for the number of consecutive bits of repeating pattern through the scrambler.
int gardner_step
Current step size of Gardner algorithm integration.
int training_count
A count of how far through the current training step we are.
void * qam_user_data
A user specified opaque pointer passed to the qam_report callback routine.
float agc_scaling
The scaling factor assessed by the AGC algorithm.
int total_baud_timing_correction
The total symbol timing correction since the carrier came up. This is only for performance analysis p...
float carrier_track_p
The proportional part of the carrier tracking filter.
uint32_t scramble_reg
The register for the data scrambler.
int gardner_integrate
Integration variable for damping the Gardner algorithm tests.
int rrc_filter_step
Current offset into the RRC pulse shaping filter buffer.
float eq_delta
The current delta factor for updating the equalizer coefficients.
power_meter_t rx_power
A power meter, to measure the HPF'ed signal power in the channel.
int baud_phase
The current fractional phase of the baud timing.
int32_t carrier_off_power
The power meter level at which carrier off is declared.
int training
0 if receiving user data. A training stage value during training
int32_t carrier_on_power
The power meter level at which carrier on is declared.
qam_report_handler_t qam_report
A callback function which may be enabled to report every symbol's constellation position.
uint32_t carrier_phase
The current phase of the carrier (i.e. the DDS parameter).
uint32_t scramble_reg
The register for the data scrambler.
uint32_t guard_tone_phase
The current phase of the guard tone (i.e. the DDS parameter).
int constellation_state
The code number for the current position in the constellation.
int rrc_filter_step
Current offset into the RRC pulse shaping filter buffer.
int scrambler_pattern_count
A counter for the number of consecutive bits of repeating pattern through the scrambler.
int training
0 if transmitting user data. A training stage value during training
span_get_bit_func_t current_get_bit
The get_bit function in use at any instant.
float guard_tone_gain
The guard tone level.
int training_count
A counter used to track progress through sending the training sequence.
int32_t carrier_phase_rate
The update rate for the phase of the carrier (i.e. the DDS increment).
int baud_phase
The current fractional phase of the baud timing.
int shutdown
An indicator to mark that we are tidying up to stop transmission.
float gain
The gain factor needed to achieve the specified output power.
int32_t guard_tone_phase_rate
The update rate for the phase of the guard tone (i.e. the DDS increment).
float rrc_filter_re[9]
The root raised cosine (RRC) pulse shaping filter buffer.
uint32_t carrier_phase
The current phase of the carrier (i.e. the DDS parameter).
Definition private/v22bis.h:80
logging_state_t logging
Error and flow logging control.
Definition private/v22bis.h:258
int bit_rate
The maximum permitted bit rate of the modem. Valid values are 1200 and 2400.
Definition private/v22bis.h:82
void * status_user_data
A user specified opaque pointer passed to the status function.
Definition private/v22bis.h:98
bool calling_party
True if this is the calling side modem.
Definition private/v22bis.h:86
void * put_bit_user_data
A user specified opaque pointer passed to the put_bit callback routine.
Definition private/v22bis.h:94
span_get_bit_func_t get_bit
The callback function used to get the next bit to be transmitted.
Definition private/v22bis.h:88
span_modem_status_func_t status_handler
The callback function used to report modem status changes.
Definition private/v22bis.h:96
int options
Guard tone and sundry flags.
Definition private/v22bis.h:84
void * get_bit_user_data
A user specified opaque pointer passed to the get_bit callback routine.
Definition private/v22bis.h:90
span_put_bit_func_t put_bit
The callback function used to put each bit received.
Definition private/v22bis.h:92
struct v22bis_state_s v22bis_state_t
Definition v22bis.h:83