spandsp 0.0.6
v22bis.h File Reference

Go to the source code of this file.

Typedefs

typedef struct v22bis_state_s v22bis_state_t

Enumerations

enum  { V22BIS_GUARD_TONE_NONE , V22BIS_GUARD_TONE_550HZ , V22BIS_GUARD_TONE_1800HZ }

Functions

 SPAN_DECLARE_NONSTD (int) v22bis_rx(v22bis_state_t *s
 Process a block of received V.22bis modem audio samples.
int v22bis_rx_equalizer_state (v22bis_state_t *s, complexf_t **coeffs)
 Get a snapshot of the current equalizer coefficients.
float v22bis_rx_carrier_frequency (v22bis_state_t *s)
float v22bis_rx_symbol_timing_correction (v22bis_state_t *s)
float v22bis_rx_signal_power (v22bis_state_t *s)
void v22bis_rx_signal_cutoff (v22bis_state_t *s, float cutoff)
void v22bis_rx_set_qam_report_handler (v22bis_state_t *s, qam_report_handler_t handler, void *user_data)
void v22bis_tx_power (v22bis_state_t *s, float power)
 Adjust a V.22bis modem transmit context's output power.
int v22bis_restart (v22bis_state_t *s, int bit_rate)
 Reinitialise an existing V.22bis modem context.
int v22bis_request_retrain (v22bis_state_t *s, int bit_rate)
 Request a retrain for a V.22bis modem context.
int v22bis_remote_loopback (v22bis_state_t *s, int enable)
 Request a loopback 2 for a V.22bis modem context.
int v22bis_get_current_bit_rate (v22bis_state_t *s)
 Report the current operating bit rate of a V.22bis modem context.
v22bis_state_tv22bis_init (v22bis_state_t *s, int bit_rate, int guard, int calling_party, get_bit_func_t get_bit, void *get_bit_user_data, put_bit_func_t put_bit, void *put_bit_user_data)
 Initialise a V.22bis modem context.
int v22bis_release (v22bis_state_t *s)
 Release a V.22bis modem receive context.
int v22bis_free (v22bis_state_t *s)
 Free a V.22bis modem receive context.
logging_state_tv22bis_get_logging_state (v22bis_state_t *s)
 Get the logging context associated with a V.22bis modem context.
void v22bis_set_get_bit (v22bis_state_t *s, get_bit_func_t get_bit, void *user_data)
 Change the get_bit function associated with a V.22bis modem context.
void v22bis_set_put_bit (v22bis_state_t *s, put_bit_func_t put_bit, void *user_data)
 Change the put_bit function associated with a V.22bis modem context.
void v22bis_set_modem_status_handler (v22bis_state_t *s, modem_status_func_t handler, void *user_data)
 Change the modem status report function associated with a V.22bis modem receive context.

Variables

const complexf_t v22bis_constellation [16]
const int16_t amp []
const int16_t int len

Typedef Documentation

◆ v22bis_state_t

V.22bis modem descriptor. This defines the working state for a single instance of a V.22bis modem.

Function Documentation

◆ SPAN_DECLARE_NONSTD()

SPAN_DECLARE_NONSTD ( int )

Process a block of received V.22bis modem audio samples.

Get the next bit of data from a T.38 rate adapting non-ECM buffer context.

Get a bit of received non-ECM image data.

Get the next bit of a transmitted serial bit stream.

Generate a block of V.22bis modem audio samples.

Fake processing of a missing block of received V.22bis modem audio samples.

Process a block of received V.22bis modem audio samples.

Parameters
sThe modem context.
ampThe audio sample buffer.
lenThe number of samples in the buffer.
Returns
The number of samples unprocessed.

Fake processing of a missing block of received V.22bis modem audio samples. (e.g due to packet loss).

Parameters
sThe modem context.
lenThe number of samples to fake.
Returns
The number of samples unprocessed.

Generate a block of V.22bis modem audio samples.

Parameters
sThe modem context.
ampThe audio sample buffer.
lenThe number of samples to be generated.
Returns
The number of samples actually generated.

◆ v22bis_free()

int v22bis_free ( v22bis_state_t * s)

Free a V.22bis modem receive context.

Free a V.22bis modem receive context.

Parameters
sThe modem context.
Returns
0 for OK

◆ v22bis_get_current_bit_rate()

int v22bis_get_current_bit_rate ( v22bis_state_t * s)

Report the current operating bit rate of a V.22bis modem context.

Report the current operating bit rate of a V.22bis modem context.

Parameters
sThe modem context.

◆ v22bis_get_logging_state()

logging_state_t * v22bis_get_logging_state ( v22bis_state_t * s)

Get the logging context associated with a V.22bis modem context.

Get the logging context associated with a V.22bis modem context.

Parameters
sThe modem context.
Returns
A pointer to the logging context

References v22bis_state_s::logging.

◆ v22bis_init()

v22bis_state_t * v22bis_init ( v22bis_state_t * s,
int bit_rate,
int guard,
int calling_party,
get_bit_func_t get_bit,
void * get_bit_user_data,
put_bit_func_t put_bit,
void * put_bit_user_data )

Initialise a V.22bis modem context.

Initialise a V.22bis modem context. This must be called before the first use of the context, to initialise its contents.

Parameters
sThe modem context.
bit_rateThe bit rate of the modem. Valid values are 1200 and 2400.
guardThe guard tone option. 0 = none, 1 = 550Hz, 2 = 1800Hz.
calling_partyTRUE if this is the calling modem.
get_bitThe callback routine used to get the data to be transmitted.
put_bitThe callback routine used to get the data to be transmitted.
user_dataAn opaque pointer, passed in calls to the get and put routines.
Returns
A pointer to the modem context, or NULL if there was a problem.

References v22bis_state_s::bit_rate, v22bis_state_s::calling_party, v22bis_state_s::carrier_phase_rate, dds_phase_ratef(), v22bis_state_s::get_bit, v22bis_state_s::get_bit_user_data, v22bis_state_s::guard_phase_rate, v22bis_state_s::logging, v22bis_state_s::put_bit, v22bis_state_s::put_bit_user_data, v22bis_restart(), and v22bis_tx_power().

◆ v22bis_release()

int v22bis_release ( v22bis_state_t * s)

Release a V.22bis modem receive context.

Release a V.22bis modem receive context.

Parameters
sThe modem context.
Returns
0 for OK

◆ v22bis_remote_loopback()

int v22bis_remote_loopback ( v22bis_state_t * s,
int enable )

Request a loopback 2 for a V.22bis modem context.

Request a loopback 2 for a V.22bis modem context.

Parameters
sThe modem context.
enableTRUE to enable loopback, or FALSE to disable it.
Returns
0 for OK, -1 for request reject.

◆ v22bis_request_retrain()

int v22bis_request_retrain ( v22bis_state_t * s,
int bit_rate )

Request a retrain for a V.22bis modem context.

Request a retrain for a V.22bis modem context. A rate change may also be requested.

Parameters
sThe modem context.
bit_rateThe bit rate of the modem. Valid values are 1200 and 2400.
Returns
0 for OK, -1 for request rejected.

References v22bis_state_s::logging, SIG_STATUS_MODEM_RETRAIN_OCCURRED, span_log(), v22bis_state_s::training, and v22bis_state_s::training_count.

◆ v22bis_restart()

int v22bis_restart ( v22bis_state_t * s,
int bit_rate )

Reinitialise an existing V.22bis modem context.

Reinitialise an existing V.22bis modem context, so it may be reused.

Parameters
sThe modem context.
bit_rateThe bit rate of the modem. Valid values are 1200 and 2400.
Returns
0 for OK, -1 for bad parameter.

References v22bis_state_s::bit_rate.

Referenced by v22bis_init().

◆ v22bis_rx_carrier_frequency()

float v22bis_rx_carrier_frequency ( v22bis_state_t * s)

Get the current received carrier frequency.

Parameters
sThe modem context.
Returns
The frequency, in Hertz.

References v22bis_state_s::carrier_phase_rate, and dds_frequencyf().

◆ v22bis_rx_equalizer_state()

int v22bis_rx_equalizer_state ( v22bis_state_t * s,
complexf_t ** coeffs )

Get a snapshot of the current equalizer coefficients.

Get a snapshot of the current equalizer coefficients.

Parameters
coeffsThe vector of complex coefficients.
Returns
The number of coefficients in the vector.

References v22bis_state_s::eq_coeff.

◆ v22bis_rx_set_qam_report_handler()

void v22bis_rx_set_qam_report_handler ( v22bis_state_t * s,
qam_report_handler_t handler,
void * user_data )

Set a handler routine to process QAM status reports

Parameters
sThe modem context.
handlerThe handler routine.
user_dataAn opaque pointer passed to the handler routine.

References v22bis_state_s::qam_report, and v22bis_state_s::qam_user_data.

◆ v22bis_rx_signal_cutoff()

void v22bis_rx_signal_cutoff ( v22bis_state_t * s,
float cutoff )

Set the power level at which the carrier detection will cut in

Parameters
sThe modem context.
cutoffThe signal cutoff power, in dBm0.

References v22bis_state_s::carrier_off_power, v22bis_state_s::carrier_on_power, and power_meter_level_dbm0().

Referenced by v22bis_rx_restart().

◆ v22bis_rx_signal_power()

float v22bis_rx_signal_power ( v22bis_state_t * s)

Get a current received signal power.

Parameters
sThe modem context.
Returns
The signal power, in dBm0.

References power_meter_current_dbm0(), and v22bis_state_s::rx_power.

◆ v22bis_rx_symbol_timing_correction()

float v22bis_rx_symbol_timing_correction ( v22bis_state_t * s)

Get the current symbol timing correction since startup.

Parameters
sThe modem context.
Returns
The correction.

References PULSESHAPER_COEFF_SETS, and v22bis_state_s::total_baud_timing_correction.

◆ v22bis_set_get_bit()

void v22bis_set_get_bit ( v22bis_state_t * s,
get_bit_func_t get_bit,
void * user_data )

Change the get_bit function associated with a V.22bis modem context.

Change the get_bit function associated with a V.22bis modem context.

Parameters
sThe modem context.
get_bitThe callback routine used to get the data to be transmitted.
user_dataAn opaque pointer.

References v22bis_state_s::get_bit, and v22bis_state_s::get_bit_user_data.

◆ v22bis_set_modem_status_handler()

void v22bis_set_modem_status_handler ( v22bis_state_t * s,
modem_status_func_t handler,
void * user_data )

Change the modem status report function associated with a V.22bis modem receive context.

Change the modem status report function associated with a V.22bis modem receive context.

Parameters
sThe modem context.
handlerThe callback routine used to report modem status changes.
user_dataAn opaque pointer.

References v22bis_state_s::status_handler, and v22bis_state_s::status_user_data.

◆ v22bis_set_put_bit()

void v22bis_set_put_bit ( v22bis_state_t * s,
put_bit_func_t put_bit,
void * user_data )

Change the put_bit function associated with a V.22bis modem context.

Change the get_bit function associated with a V.22bis modem context.

Parameters
sThe modem context.
put_bitThe callback routine used to process the data received.
user_dataAn opaque pointer.

References v22bis_state_s::put_bit, and v22bis_state_s::put_bit_user_data.

◆ v22bis_tx_power()

void v22bis_tx_power ( v22bis_state_t * s,
float power )

Adjust a V.22bis modem transmit context's output power.

Adjust a V.22bis modem transmit context's power output.

Parameters
sThe modem context.
powerThe power level, in dBm0

References dds_phase_ratef(), v22bis_state_s::gain, v22bis_state_s::guard_level, and v22bis_state_s::guard_phase_rate.

Referenced by v22bis_init().