spandsp 0.0.6
modem_connect_tones.h File Reference

Go to the source code of this file.

Macros

#define MODEM_CONNECT_TONES_FAX_CED   MODEM_CONNECT_TONES_ANS
 FAX CED tone is the same as ANS tone.

Typedefs

typedef struct modem_connect_tones_tx_state_s modem_connect_tones_tx_state_t
typedef struct modem_connect_tones_rx_state_s modem_connect_tones_rx_state_t

Enumerations

enum  {
  MODEM_CONNECT_TONES_NONE = 0 , MODEM_CONNECT_TONES_FAX_CNG = 1 , MODEM_CONNECT_TONES_ANS = 2 , MODEM_CONNECT_TONES_ANS_PR = 3 ,
  MODEM_CONNECT_TONES_ANSAM = 4 , MODEM_CONNECT_TONES_ANSAM_PR = 5 , MODEM_CONNECT_TONES_FAX_PREAMBLE = 6 , MODEM_CONNECT_TONES_FAX_CED_OR_PREAMBLE = 7 ,
  MODEM_CONNECT_TONES_BELL_ANS = 8 , MODEM_CONNECT_TONES_CALLING_TONE = 9
}

Functions

modem_connect_tones_tx_state_tmodem_connect_tones_tx_init (modem_connect_tones_tx_state_t *s, int tone_type)
 Initialise an instance of the modem connect tones generator.
int modem_connect_tones_tx_release (modem_connect_tones_tx_state_t *s)
 Release an instance of the modem connect tones generator.
int modem_connect_tones_tx_free (modem_connect_tones_tx_state_t *s)
 Free an instance of the modem connect tones generator.
 SPAN_DECLARE_NONSTD (int) modem_connect_tones_tx(modem_connect_tones_tx_state_t *s
 Generate a block of modem connect tones samples.
int modem_connect_tones_rx_get (modem_connect_tones_rx_state_t *s)
 Test if a modem_connect tone has been detected.
modem_connect_tones_rx_state_tmodem_connect_tones_rx_init (modem_connect_tones_rx_state_t *s, int tone_type, tone_report_func_t tone_callback, void *user_data)
 Initialise an instance of the modem connect tones detector.
int modem_connect_tones_rx_release (modem_connect_tones_rx_state_t *s)
 Release an instance of the modem connect tones detector.
int modem_connect_tones_rx_free (modem_connect_tones_rx_state_t *s)
 Free an instance of the modem connect tones detector.
const char * modem_connect_tone_to_str (int tone)

Variables

int16_t amp []
int16_t int len

Typedef Documentation

◆ modem_connect_tones_rx_state_t

Modem connect tones receiver descriptor. This defines the state of a single working instance of the tone detector.

◆ modem_connect_tones_tx_state_t

Modem connect tones generator descriptor. This defines the state of a single working instance of the tone generator.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
MODEM_CONNECT_TONES_NONE 

This is reported when a tone stops.

MODEM_CONNECT_TONES_FAX_CNG 

CNG tone is a pure 1100Hz tone, in 0.5s bursts, with 3s silences in between. The bursts repeat for as long as is required.

MODEM_CONNECT_TONES_ANS 

ANS tone is a pure continuous 2100Hz+-15Hz tone for 3.3s+-0.7s.

MODEM_CONNECT_TONES_ANS_PR 

ANS with phase reversals tone is a 2100Hz+-15Hz tone for 3.3s+-0.7s, with a 180 degree phase jump every 450ms+-25ms.

MODEM_CONNECT_TONES_ANSAM 

The ANSam tone is a version of ANS with 20% of 15Hz+-0.1Hz AM modulation, as per V.8.

MODEM_CONNECT_TONES_ANSAM_PR 

The ANSam with phase reversals tone is a version of ANS_PR with 20% of 15Hz+-0.1Hz AM modulation, as per V.8.

MODEM_CONNECT_TONES_FAX_PREAMBLE 

FAX preamble in a string of V.21 HDLC flag octets.

MODEM_CONNECT_TONES_FAX_CED_OR_PREAMBLE 

CED tone is the same as ANS tone. FAX preamble in a string of V.21 HDLC flag octets. This is only valid as a tone type to receive. It is never reported as a detected tone type. The report will either be for FAX preamble or CED/ANS tone.

MODEM_CONNECT_TONES_BELL_ANS 

Bell ANS tone is a pure continuous 2225Hz+-15Hz tone for 3.3s+-0.7s.

MODEM_CONNECT_TONES_CALLING_TONE 

Calling tone is a pure 1300Hz tone, in 0.6s bursts, with 2s silences in between. The bursts repeat for as long as is required.

Function Documentation

◆ modem_connect_tones_rx_free()

int modem_connect_tones_rx_free ( modem_connect_tones_rx_state_t * s)

Free an instance of the modem connect tones detector.

Parameters
sThe context.
Returns
0 for OK, else -1.

◆ modem_connect_tones_rx_get()

int modem_connect_tones_rx_get ( modem_connect_tones_rx_state_t * s)

Test if a modem_connect tone has been detected.

Parameters
sThe context.
Returns
TRUE if tone is detected, else FALSE.

References modem_connect_tones_rx_state_s::hit, and MODEM_CONNECT_TONES_NONE.

◆ modem_connect_tones_rx_init()

◆ modem_connect_tones_rx_release()

int modem_connect_tones_rx_release ( modem_connect_tones_rx_state_t * s)

Release an instance of the modem connect tones detector.

Parameters
sThe context.
Returns
0 for OK, else -1.

◆ modem_connect_tones_tx_free()

int modem_connect_tones_tx_free ( modem_connect_tones_tx_state_t * s)

Free an instance of the modem connect tones generator.

Parameters
sThe context.
Returns
0 for OK, else -1.

◆ modem_connect_tones_tx_init()

◆ modem_connect_tones_tx_release()

int modem_connect_tones_tx_release ( modem_connect_tones_tx_state_t * s)

Release an instance of the modem connect tones generator.

Parameters
sThe context.
Returns
0 for OK, else -1.

◆ SPAN_DECLARE_NONSTD()

SPAN_DECLARE_NONSTD ( int )

Generate a block of modem connect tones samples.

Get the next bit of a transmitted serial bit stream.

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

Parameters
sThe context.
ampAn array of signal samples.
lenThe number of samples to generate.
Returns
The number of samples generated.
Parameters
sThe context.
ampAn array of signal samples.
lenThe number of samples in the array.
Returns
The number of unprocessed samples.

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.