#include <inttypes.h>#include <stdlib.h>#include <stdio.h>#include <fcntl.h>#include <time.h>#include <memory.h>#include <string.h>#include <ctype.h>#include <assert.h>#include <tiffio.h>#include "spandsp/telephony.h"#include "spandsp/logging.h"#include "spandsp/bit_operations.h"#include "spandsp/dc_restore.h"#include "spandsp/queue.h"#include "spandsp/power_meter.h"#include "spandsp/complex.h"#include "spandsp/tone_generate.h"#include "spandsp/async.h"#include "spandsp/hdlc.h"#include "spandsp/silence_gen.h"#include "spandsp/fsk.h"#include "spandsp/v29rx.h"#include "spandsp/v29tx.h"#include "spandsp/v27ter_rx.h"#include "spandsp/v27ter_tx.h"#include "spandsp/v17rx.h"#include "spandsp/v17tx.h"#include "spandsp/t4.h"#include "spandsp/t30.h"#include "spandsp/t38_core.h"#include "spandsp/at_interpreter.h"#include "spandsp/t31.h"Defines | |
| #define | _GNU_SOURCE |
| #define | MS_PER_TX_CHUNK 30 |
| #define | INDICATOR_TX_COUNT 3 |
| #define | DATA_TX_COUNT 1 |
| #define | DATA_END_TX_COUNT 1 |
| #define | DEFAULT_DTE_TIMEOUT 5 |
| #define | ETX 0x03 |
| #define | DLE 0x10 |
| #define | SUB 0x1A |
Typedefs | |
| typedef const char *(*) | at_cmd_service_t (t31_state_t *s, const char *cmd) |
Enumerations | |
| enum | { T31_FLUSH, T31_SILENCE_TX, T31_SILENCE_RX, T31_CED_TONE, T31_CNG_TONE, T31_NOCNG_TONE, T31_V21_TX, T31_V17_TX, T31_V27TER_TX, T31_V29_TX, T31_V21_RX, T31_V17_RX, T31_V27TER_RX, T31_V29_RX } |
| enum | { T38_TIMED_STEP_NONE = 0, T38_TIMED_STEP_NON_ECM_MODEM, T38_TIMED_STEP_NON_ECM_MODEM_2, T38_TIMED_STEP_NON_ECM_MODEM_3, T38_TIMED_STEP_HDLC_MODEM, T38_TIMED_STEP_HDLC_MODEM_2, T38_TIMED_STEP_HDLC_MODEM_3, T38_TIMED_STEP_HDLC_MODEM_4, T38_TIMED_STEP_PAUSE } |
Functions | |
| int | t31_t38_send_timeout (t31_state_t *s, int samples) |
| void | t31_call_event (t31_state_t *s, int event) |
| int | t31_at_rx (t31_state_t *s, const char *t, int len) |
| int | t31_rx (t31_state_t *s, int16_t amp[], int len) |
| Process a block of received T.31 modem audio samples. | |
| int | t31_tx (t31_state_t *s, int16_t amp[], int max_len) |
| Generate a block of T.31 modem audio samples. | |
| void | t31_set_transmit_on_idle (t31_state_t *s, int transmit_on_idle) |
| Select whether silent audio will be sent when transmit is idle. | |
| t31_state_t * | t31_init (t31_state_t *s, at_tx_handler_t *at_tx_handler, void *at_tx_user_data, t31_modem_control_handler_t *modem_control_handler, void *modem_control_user_data, t38_tx_packet_handler_t *tx_t38_packet_handler, void *tx_t38_packet_user_data) |
| Initialise a T.31 context. | |
| int | t31_release (t31_state_t *s) |
| Release a T.31 context. | |
| t31_state_t* t31_init | ( | t31_state_t * | s, | |
| at_tx_handler_t * | at_tx_handler, | |||
| void * | at_tx_user_data, | |||
| t31_modem_control_handler_t * | modem_control_handler, | |||
| void * | modem_control_user_data, | |||
| t38_tx_packet_handler_t * | tx_t38_packet_handler, | |||
| void * | tx_t38_packet_user_data | |||
| ) |
Initialise a T.31 context.
Initialise a T.31 context. This must be called before the first use of the context, to initialise its contents.
| s | The T.31 context. | |
| at_tx_handler | A callback routine to handle AT interpreter channel output. | |
| at_tx_user_data | An opaque pointer passed in called to at_tx_handler. | |
| modem_control_handler | A callback routine to handle control of the modem (off-hook, etc). | |
| modem_control_user_data | An opaque pointer passed in called to modem_control_handler. | |
| tx_t38_packet_handler | ??? | |
| tx_t38_packet_user_data | ??? |
| int t31_release | ( | t31_state_t * | s | ) |
Release a T.31 context.
Release a T.31 context.
| s | The T.31 context. |
| int t31_rx | ( | t31_state_t * | s, | |
| int16_t | amp[], | |||
| int | len | |||
| ) |
Process a block of received T.31 modem audio samples.
Process a block of received T.31 modem audio samples.
| s | The T.31 modem context. | |
| amp | The audio sample buffer. | |
| len | The number of samples in the buffer. |
| void t31_set_transmit_on_idle | ( | t31_state_t * | s, | |
| int | transmit_on_idle | |||
| ) |
Select whether silent audio will be sent when transmit is idle.
Select whether silent audio will be sent when transmit is idle.
| s | The T.31 modem context. | |
| transmit_on_idle | TRUE if silent audio should be output when the transmitter is idle. FALSE to transmit zero length audio when the transmitter is idle. The default behaviour is FALSE. |
| int t31_tx | ( | t31_state_t * | s, | |
| int16_t | amp[], | |||
| int | max_len | |||
| ) |
Generate a block of T.31 modem audio samples.
Generate a block of T.31 modem audio samples.
| s | The T.31 modem context. | |
| amp | The audio sample buffer. | |
| max_len | The number of samples to be generated. |
1.5.2