spandsp 3.0.0
v8.h File Reference

Go to the source code of this file.

Classes

struct  v8_cm_jm_parms_s
 
struct  v8_parms_s
 

Typedefs

typedef struct v8_cm_jm_parms_s v8_cm_jm_parms_t
 
typedef struct v8_parms_s v8_parms_t
 
typedef void(* v8_result_handler_t) (void *user_data, v8_parms_t *result)
 
typedef struct v8_state_s v8_state_t
 

Enumerations

enum  v8_call_function_e {
  V8_CALL_TBS = 0 , V8_CALL_H324 = 1 , V8_CALL_V18 = 2 , V8_CALL_T101 = 3 ,
  V8_CALL_T30_TX = 4 , V8_CALL_T30_RX = 5 , V8_CALL_V_SERIES = 6 , V8_CALL_FUNCTION_EXTENSION = 7
}
 
enum  v8_modulation_e {
  V8_MOD_V17 = (1 << 0) , V8_MOD_V21 = (1 << 1) , V8_MOD_V22 = (1 << 2) , V8_MOD_V23HDX = (1 << 3) ,
  V8_MOD_V23 = (1 << 4) , V8_MOD_V26BIS = (1 << 5) , V8_MOD_V26TER = (1 << 6) , V8_MOD_V27TER = (1 << 7) ,
  V8_MOD_V29 = (1 << 8) , V8_MOD_V32 = (1 << 9) , V8_MOD_V34HDX = (1 << 10) , V8_MOD_V34 = (1 << 11) ,
  V8_MOD_V90 = (1 << 12) , V8_MOD_V92 = (1 << 13)
}
 
enum  v8_protocol_e { V8_PROTOCOL_NONE = 0 , V8_PROTOCOL_LAPM_V42 = 1 , V8_PROTOCOL_EXTENSION = 7 }
 
enum  v8_pstn_access_e { V8_PSTN_ACCESS_CALL_DCE_CELLULAR = 0x01 , V8_PSTN_ACCESS_ANSWER_DCE_CELLULAR = 0x02 , V8_PSTN_ACCESS_DCE_ON_DIGITAL = 0x04 }
 
enum  v8_pcm_modem_availability_e { V8_PSTN_PCM_MODEM_V90_V92_ANALOGUE = 0x01 , V8_PSTN_PCM_MODEM_V90_V92_DIGITAL = 0x02 , V8_PSTN_PCM_MODEM_V91 = 0x04 }
 
enum  v8_status_e {
  V8_STATUS_IN_PROGRESS = 0 , V8_STATUS_V8_OFFERED = 1 , V8_STATUS_V8_CALL = 2 , V8_STATUS_NON_V8_CALL = 3 ,
  V8_STATUS_FAILED = 4 , V8_STATUS_CALL_FUNCTION_RECEIVED = 5 , V8_STATUS_CALLING_TONE_RECEIVED = 6 , V8_STATUS_FAX_CNG_TONE_RECEIVED = 7
}
 

Functions

int v8_continue (v8_state_t *s, v8_parms_t *parms)
 
int v8_restart (v8_state_t *s, bool calling_party, v8_parms_t *parms)
 
v8_state_tv8_init (v8_state_t *s, bool calling_party, v8_parms_t *parms, v8_result_handler_t result_handler, void *user_data)
 Initialise a V.8 context.
 
int v8_release (v8_state_t *s)
 Release a V.8 context.
 
int v8_free (v8_state_t *s)
 Release a V.8 context.
 
logging_state_tv8_get_logging_state (v8_state_t *s)
 
int v8_tx (v8_state_t *s, int16_t *amp, int max_len)
 Generate a block of V.8 audio samples.
 
int v8_decode_rx (v8_state_t *s, const int16_t *amp, int len)
 Decode a block of received V.8 audio samples.
 
int v8_rx (v8_state_t *s, const int16_t *amp, int len)
 Process a block of received V.8 audio samples.
 
void v8_log_supported_modulations (v8_state_t *s, int modulation_schemes)
 Log the list of supported modulations.
 
const char * v8_status_to_str (int status)
 
const char * v8_call_function_to_str (int call_function)
 
const char * v8_modulation_to_str (int modulation_scheme)
 
const char * v8_protocol_to_str (int protocol)
 
const char * v8_pstn_access_to_str (int pstn_access)
 
const char * v8_nsf_to_str (int nsf)
 
const char * v8_pcm_modem_availability_to_str (int pcm_modem_availability)
 
const char * v8_t66_to_str (int t66)
 

Enumeration Type Documentation

◆ v8_status_e

Enumerator
V8_STATUS_IN_PROGRESS 

V.8 negotiation is in progress.

V8_STATUS_V8_OFFERED 

V.8 has been offered by the other (calling) party (i.e. CM recognised).

V8_STATUS_V8_CALL 

V.8 has been successfully negotiated. Note that this only means the V.8 message exchange has successfully completed. The actual exchanged parameters must be checked, to see if the call can proceed properly.

V8_STATUS_NON_V8_CALL 

A non-V.8 is being received.

V8_STATUS_FAILED 

V.8 negotiation failed.

V8_STATUS_CALL_FUNCTION_RECEIVED 

V.8 call function received (in a CI message).

V8_STATUS_CALLING_TONE_RECEIVED 

Non-V.8 calling tone received.

V8_STATUS_FAX_CNG_TONE_RECEIVED 

FAX CNG tone received.

Function Documentation

◆ v8_continue()

int v8_continue ( v8_state_t * s,
v8_parms_t * parms )

Continue with negotiation when in gateway mode.

◆ v8_decode_rx()

int v8_decode_rx ( v8_state_t * s,
const int16_t * amp,
int len )

Decode a block of received V.8 audio samples.

Decode a block of received V.8 audio samples. N.B. This is not the function to call to run the V.8 protocol on received audio. It is for analysing audio streams, to extract the V.8 messages, for monitoring or debug applications.

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

References fsk_rx(), v8_state_s::logging, MODEM_CONNECT_TONES_NONE, modem_connect_tones_rx(), modem_connect_tones_rx_get(), and span_log().

◆ v8_free()

int v8_free ( v8_state_t * s)

Release a V.8 context.

Free a V.8 context.

Parameters
sThe V.8 context.
Returns
0 for OK.

References v8_release().

◆ v8_init()

v8_state_t * v8_init ( v8_state_t * s,
bool calling_party,
v8_parms_t * parms,
v8_result_handler_t result_handler,
void * user_data )

Initialise a V.8 context.

Initialise a V.8 context.

Parameters
sThe V.8 context.
calling_partyTrue if caller mode, else answerer mode.
parmsThe allowed parameters for the call.
result_handlerThe callback routine used to handle the results of negotiation.
user_dataAn opaque pointer passed to the result_handler routine.
Returns
A pointer to the V.8 context, or NULL if there was a problem.

References v8_state_s::logging, v8_state_s::result_handler, and v8_state_s::result_handler_user_data.

Referenced by fax_init(), and t31_init().

◆ v8_log_supported_modulations()

void v8_log_supported_modulations ( v8_state_t * s,
int modulation_schemes )

Log the list of supported modulations.

Log the list of supported modulations.

Parameters
sThe V.8 context.
modulation_schemesThe list of supported modulations.

References v8_state_s::logging, and span_log().

◆ v8_release()

int v8_release ( v8_state_t * s)

Release a V.8 context.

Release a V.8 context.

Parameters
sThe V.8 context.
Returns
0 for OK.

References queue_free().

Referenced by fax_release(), t31_release(), and v8_free().

◆ v8_rx()

int v8_rx ( v8_state_t * s,
const int16_t * amp,
int len )

Process a block of received V.8 audio samples.

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.

References fsk_rx(), fsk_tx_init(), v8_state_s::logging, MODEM_CONNECT_TONES_NONE, modem_connect_tones_rx(), modem_connect_tones_rx_get(), queue_contents(), queue_flush(), span_log(), span_log_buf(), v8_state_s::state, V8_STATUS_FAILED, V8_STATUS_V8_CALL, and V8_STATUS_V8_OFFERED.

◆ v8_tx()

int v8_tx ( v8_state_t * s,
int16_t * amp,
int max_len )

Generate a block of V.8 audio samples.

Generate a block of V.8 audio samples.

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

References fsk_tx(), v8_state_s::logging, modem_connect_tones_tx(), span_log(), and v8_state_s::state.