spandsp 0.0.6
v27ter_rx.h File Reference

Go to the source code of this file.

Typedefs

typedef struct v27ter_rx_state_s v27ter_rx_state_t

Functions

v27ter_rx_state_tv27ter_rx_init (v27ter_rx_state_t *s, int bit_rate, put_bit_func_t put_bit, void *user_data)
 Initialise a V.27ter modem receive context.
int v27ter_rx_restart (v27ter_rx_state_t *s, int bit_rate, int old_train)
 Reinitialise an existing V.27ter modem receive context.
int v27ter_rx_release (v27ter_rx_state_t *s)
 Release a V.27ter modem receive context.
int v27ter_rx_free (v27ter_rx_state_t *s)
 Free a V.27ter modem receive context.
logging_state_tv27ter_rx_get_logging_state (v27ter_rx_state_t *s)
 Get the logging context associated with a V.27ter modem receive context.
void v27ter_rx_set_put_bit (v27ter_rx_state_t *s, put_bit_func_t put_bit, void *user_data)
 Change the put_bit function associated with a V.27ter modem receive context.
void v27ter_rx_set_modem_status_handler (v27ter_rx_state_t *s, modem_status_func_t handler, void *user_data)
 Change the modem status report function associated with a V.27ter modem receive context.
 SPAN_DECLARE_NONSTD (int) v27ter_rx(v27ter_rx_state_t *s
 Process a block of received V.27ter modem audio samples.
int v27ter_rx_equalizer_state (v27ter_rx_state_t *s, complexf_t **coeffs)
 Get a snapshot of the current equalizer coefficients.
float v27ter_rx_carrier_frequency (v27ter_rx_state_t *s)
float v27ter_rx_symbol_timing_correction (v27ter_rx_state_t *s)
float v27ter_rx_signal_power (v27ter_rx_state_t *s)
void v27ter_rx_signal_cutoff (v27ter_rx_state_t *s, float cutoff)
void v27ter_rx_set_qam_report_handler (v27ter_rx_state_t *s, qam_report_handler_t handler, void *user_data)

Variables

const int16_t amp []
const int16_t int len

Typedef Documentation

◆ v27ter_rx_state_t

V.27ter modem receive side descriptor. This defines the working state for a single instance of a V.27ter modem receiver.

Function Documentation

◆ SPAN_DECLARE_NONSTD()

SPAN_DECLARE_NONSTD ( int )

Process a block of received V.27ter modem audio samples.

Get the next bit of a transmitted serial bit stream.

Fake processing of a missing block of received V.27ter modem audio samples.

Process a block of received V.27ter 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.27ter 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.

Apply T.30 receive processing to a block of audio samples.

Process a block of received V.8 audio samples.

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

Fake processing of a missing block of received V.27ter modem audio samples.

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.18 audio samples.

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

Generate a block of FAX audio samples.

Apply fake received audio processing.

Process a received T.38 IFP packet from a reliable stream (e.g. TCP).

Generate a block of T.31 modem audio samples.

Fake processing of a missing block of received T.31 modem audio samples.

Dummy receive fillin callback.

Dummy receive callback.

Process a block of samples through an instance of the modem connect tones detector.

Get the next sequence of bytes for transmission.

Get the next byte for transmission.

Fake processing of a missing block of received FSK modem audio samples.

Process a block of received FSK modem audio samples.

Apply T.30 transmit processing to generate a block of audio samples.

Apply fake T.30 receive processing.

Get the next bit of a transmitted serial bit stream.

Parameters
user_dataAn opaque point which must point to a transmitter context.
Returns
the next bit, or PUTBIT_END_OF_DATA to indicate the data stream has ended.

Apply fake T.30 receive processing when a block of audio samples is missing (e.g due to packet loss).

Parameters
sThe FAX context.
lenThe number of samples to fake.
Returns
The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Apply T.30 transmit processing to generate a block of audio samples.

Parameters
sThe FAX context.
ampThe audio sample buffer.
max_lenThe number of samples to be generated.
Returns
The number of samples actually generated. This will be zero when there is nothing to send.

Process a block of received FSK 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 FSK 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.
Parameters
sA pointer to an HDLC transmitter context.
Returns
The next byte for transmission.
Parameters
sA pointer to an HDLC transmitter context.
bufThe buffer for the data.
max_lenThe number of bytes to get.
Returns
The number of bytes actually got.
Parameters
sThe context.
ampAn array of signal samples.
lenThe number of samples in the array.
Returns
The number of unprocessed samples.

A dummy routine to use as a receive callback, when we aren't really trying to process what is received. It just absorbs and ignores the data.

Parameters
user_dataThe context.
ampThe signal.buffer
lenThe length of the signal buffer
Returns
0.

A dummy routine to use as a receive fillin callback, when we aren't really trying to process what is received. It just absorbs and ignores the request.

Parameters
user_dataThe context.
lenThe length of the signal buffer
Returns
0.

Fake processing of a missing block of received T.31 modem audio samples (e.g due to packet loss).

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

Generate a block of T.31 modem audio samples.

Parameters
sThe T.31 modem context.
ampThe audio sample buffer.
max_lenThe number of samples to be generated.
Returns
The number of samples actually generated.
Parameters
sThe T.38 context.
bufThe packet contents.
lenThe length of the packet contents.
seq_noThe packet sequence number, used for logging purposes.
Returns
The length of the packet processed, or -1 if there is an error in the packet, or too few bytes of data to complete it.

Apply fake processing when a block of audio samples is missing (e.g due to packet loss).

Parameters
sThe T.38 context.
lenThe number of samples to fake.
Returns
The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Generate a block of FAX audio samples.

Parameters
sThe T.38 context.
ampThe audio sample buffer.
max_lenThe number of samples to be generated.
Returns
The number of samples actually generated.

Fake processing of a missing block of received V.17 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.

Process a block of received V.18 audio samples.

Parameters
sThe V.18 context.
ampThe audio sample buffer.
lenThe number of samples in the buffer.

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.

Fake processing of a missing block of received V.27ter 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.

Fake processing of a missing block of received V.29 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.

Process a block of received V.8 audio samples.

Parameters
sThe V.8 context.
ampThe audio sample buffer.
lenThe number of samples in the buffer.

Get the next bit of a transmitted serial bit stream.

Apply T.30 transmit processing to generate a block of audio samples.

Apply fake T.30 receive processing.

Apply T.30 receive processing to a block of audio samples.

Parameters
sThe FAX context.
ampThe audio sample buffer.
lenThe number of samples in the buffer.
Returns
The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Apply fake T.30 receive processing when a block of audio samples is missing (e.g due to packet loss).

Parameters
sThe FAX context.
lenThe number of samples to fake.
Returns
The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Apply T.30 transmit processing to generate a block of audio samples.

Parameters
sThe FAX context.
ampThe audio sample buffer.
max_lenThe number of samples to be generated.
Returns
The number of samples actually generated. This will be zero when there is nothing to send.

◆ v27ter_rx_carrier_frequency()

float v27ter_rx_carrier_frequency ( v27ter_rx_state_t * s)

Get the current received carrier frequency.

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

References v27ter_rx_state_s::carrier_phase_rate, and dds_frequencyf().

◆ v27ter_rx_equalizer_state()

int v27ter_rx_equalizer_state ( v27ter_rx_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 v27ter_rx_state_s::eq_coeff.

◆ v27ter_rx_free()

int v27ter_rx_free ( v27ter_rx_state_t * s)

Free a V.27ter modem receive context.

Free a V.27ter modem receive context.

Parameters
sThe modem context.
Returns
0 for OK

◆ v27ter_rx_get_logging_state()

logging_state_t * v27ter_rx_get_logging_state ( v27ter_rx_state_t * s)

Get the logging context associated with a V.27ter modem receive context.

Get the logging context associated with a V.27ter modem receive context.

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

References v27ter_rx_state_s::logging.

◆ v27ter_rx_init()

v27ter_rx_state_t * v27ter_rx_init ( v27ter_rx_state_t * s,
int bit_rate,
put_bit_func_t put_bit,
void * user_data )

Initialise a V.27ter modem receive context.

Initialise a V.27ter modem receive context.

Parameters
sThe modem context.
bit_rateThe bit rate of the modem. Valid values are 2400 and 4800.
put_bitThe callback routine used to put the received data.
user_dataAn opaque pointer passed to the put_bit routine.
Returns
A pointer to the modem context, or NULL if there was a problem.

References v27ter_rx_state_s::logging, v27ter_rx_state_s::put_bit, v27ter_rx_state_s::put_bit_user_data, v27ter_rx_restart(), and v27ter_rx_signal_cutoff().

◆ v27ter_rx_release()

int v27ter_rx_release ( v27ter_rx_state_t * s)

Release a V.27ter modem receive context.

Release a V.27ter modem receive context.

Parameters
sThe modem context.
Returns
0 for OK

◆ v27ter_rx_restart()

int v27ter_rx_restart ( v27ter_rx_state_t * s,
int bit_rate,
int old_train )

◆ v27ter_rx_set_modem_status_handler()

void v27ter_rx_set_modem_status_handler ( v27ter_rx_state_t * s,
modem_status_func_t handler,
void * user_data )

Change the modem status report function associated with a V.27ter modem receive context.

Change the modem status report function associated with a V.27ter modem receive context.

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

References v27ter_rx_state_s::status_handler, and v27ter_rx_state_s::status_user_data.

◆ v27ter_rx_set_put_bit()

void v27ter_rx_set_put_bit ( v27ter_rx_state_t * s,
put_bit_func_t put_bit,
void * user_data )

Change the put_bit function associated with a V.27ter modem receive context.

Change the put_bit function associated with a V.27ter modem receive context.

Parameters
sThe modem context.
put_bitThe callback routine used to handle received bits.
user_dataAn opaque pointer.

References v27ter_rx_state_s::put_bit, and v27ter_rx_state_s::put_bit_user_data.

◆ v27ter_rx_set_qam_report_handler()

void v27ter_rx_set_qam_report_handler ( v27ter_rx_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 v27ter_rx_state_s::qam_report, and v27ter_rx_state_s::qam_user_data.

◆ v27ter_rx_signal_cutoff()

void v27ter_rx_signal_cutoff ( v27ter_rx_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 v27ter_rx_state_s::carrier_off_power, v27ter_rx_state_s::carrier_on_power, and power_meter_level_dbm0().

Referenced by v27ter_rx_init().

◆ v27ter_rx_signal_power()

float v27ter_rx_signal_power ( v27ter_rx_state_t * s)

Get a current received signal power.

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

References v27ter_rx_state_s::power, and power_meter_current_dbm0().

◆ v27ter_rx_symbol_timing_correction()

float v27ter_rx_symbol_timing_correction ( v27ter_rx_state_t * s)

Get the current symbol timing correction since startup.

Parameters
sThe modem context.
Returns
The correction.

References v27ter_rx_state_s::bit_rate, and v27ter_rx_state_s::total_baud_timing_correction.