spandsp 0.0.6
t30.h File Reference

Go to the source code of this file.

Classes

struct  t30_exchanged_info_t
 
struct  t30_stats_t
 

Macros

#define T30_MAX_DIS_DTC_DCS_LEN   22
 
#define T30_MAX_IDENT_LEN   20
 
#define T30_MAX_PAGE_HEADER_INFO   50
 

Typedefs

typedef struct t30_state_s t30_state_t
 
typedef int() t30_phase_b_handler_t(t30_state_t *s, void *user_data, int result)
 T.30 phase B callback handler. More...
 
typedef int() t30_phase_d_handler_t(t30_state_t *s, void *user_data, int result)
 T.30 phase D callback handler. More...
 
typedef void() t30_phase_e_handler_t(t30_state_t *s, void *user_data, int completion_code)
 T.30 phase E callback handler. More...
 
typedef void() t30_real_time_frame_handler_t(t30_state_t *s, void *user_data, int direction, const uint8_t msg[], int len)
 T.30 real time frame handler. More...
 
typedef int() t30_document_handler_t(t30_state_t *s, void *user_data, int status)
 T.30 document handler. More...
 
typedef void() t30_set_handler_t(void *user_data, int type, int bit_rate, int short_train, int use_hdlc)
 T.30 set a receive or transmit type handler. More...
 
typedef void() t30_send_hdlc_handler_t(void *user_data, const uint8_t msg[], int len)
 T.30 send HDLC handler. More...
 

Enumerations

enum  {
  T30_ERR_OK = 0 , T30_ERR_CEDTONE , T30_ERR_T0_EXPIRED , T30_ERR_T1_EXPIRED ,
  T30_ERR_T3_EXPIRED , T30_ERR_HDLC_CARRIER , T30_ERR_CANNOT_TRAIN , T30_ERR_OPER_INT_FAIL ,
  T30_ERR_INCOMPATIBLE , T30_ERR_RX_INCAPABLE , T30_ERR_TX_INCAPABLE , T30_ERR_NORESSUPPORT ,
  T30_ERR_NOSIZESUPPORT , T30_ERR_UNEXPECTED , T30_ERR_TX_BADDCS , T30_ERR_TX_BADPG ,
  T30_ERR_TX_ECMPHD , T30_ERR_TX_GOTDCN , T30_ERR_TX_INVALRSP , T30_ERR_TX_NODIS ,
  T30_ERR_TX_PHBDEAD , T30_ERR_TX_PHDDEAD , T30_ERR_TX_T5EXP , T30_ERR_RX_ECMPHD ,
  T30_ERR_RX_GOTDCS , T30_ERR_RX_INVALCMD , T30_ERR_RX_NOCARRIER , T30_ERR_RX_NOEOL ,
  T30_ERR_RX_NOFAX , T30_ERR_RX_T2EXPDCN , T30_ERR_RX_T2EXPD , T30_ERR_RX_T2EXPFAX ,
  T30_ERR_RX_T2EXPMPS , T30_ERR_RX_T2EXPRR , T30_ERR_RX_T2EXP , T30_ERR_RX_DCNWHY ,
  T30_ERR_RX_DCNDATA , T30_ERR_RX_DCNFAX , T30_ERR_RX_DCNPHD , T30_ERR_RX_DCNRRD ,
  T30_ERR_RX_DCNNORTN , T30_ERR_FILEERROR , T30_ERR_NOPAGE , T30_ERR_BADTIFF ,
  T30_ERR_BADPAGE , T30_ERR_BADTAG , T30_ERR_BADTIFFHDR , T30_ERR_NOMEM ,
  T30_ERR_RETRYDCN , T30_ERR_CALLDROPPED , T30_ERR_NOPOLL , T30_ERR_IDENT_UNACCEPTABLE ,
  T30_ERR_SUB_UNACCEPTABLE , T30_ERR_SEP_UNACCEPTABLE , T30_ERR_PSA_UNACCEPTABLE , T30_ERR_SID_UNACCEPTABLE ,
  T30_ERR_PWD_UNACCEPTABLE , T30_ERR_TSA_UNACCEPTABLE , T30_ERR_IRA_UNACCEPTABLE , T30_ERR_CIA_UNACCEPTABLE ,
  T30_ERR_ISP_UNACCEPTABLE , T30_ERR_CSA_UNACCEPTABLE
}
 
enum  {
  T30_MODEM_NONE = 0 , T30_MODEM_PAUSE , T30_MODEM_CED , T30_MODEM_CNG ,
  T30_MODEM_V21 , T30_MODEM_V27TER , T30_MODEM_V29 , T30_MODEM_V17 ,
  T30_MODEM_V34HDX , T30_MODEM_DONE
}
 
enum  {
  T30_FRONT_END_SEND_STEP_COMPLETE = 0 , T30_FRONT_END_RECEIVE_COMPLETE , T30_FRONT_END_SIGNAL_PRESENT , T30_FRONT_END_SIGNAL_ABSENT ,
  T30_FRONT_END_CED_PRESENT , T30_FRONT_END_CNG_PRESENT
}
 
enum  {
  T30_SUPPORT_V27TER = 0x01 , T30_SUPPORT_V29 = 0x02 , T30_SUPPORT_V17 = 0x04 , T30_SUPPORT_V34HDX = 0x08 ,
  T30_SUPPORT_IAF = 0x10
}
 
enum  {
  T30_SUPPORT_NO_COMPRESSION = 0x01 , T30_SUPPORT_T4_1D_COMPRESSION = 0x02 , T30_SUPPORT_T4_2D_COMPRESSION = 0x04 , T30_SUPPORT_T6_COMPRESSION = 0x08 ,
  T30_SUPPORT_T85_COMPRESSION = 0x10 , T30_SUPPORT_T85_L0_COMPRESSION = 0x20 , T30_SUPPORT_T43_COMPRESSION = 0x40 , T30_SUPPORT_T45_COMPRESSION = 0x80 ,
  T30_SUPPORT_T81_COMPRESSION = 0x100 , T30_SUPPORT_SYCC_T81_COMPRESSION = 0x200 , T30_SUPPORT_T88_COMPRESSION = 0x400
}
 
enum  {
  T30_SUPPORT_STANDARD_RESOLUTION = 0x01 , T30_SUPPORT_FINE_RESOLUTION = 0x02 , T30_SUPPORT_SUPERFINE_RESOLUTION = 0x04 , T30_SUPPORT_R4_RESOLUTION = 0x10000 ,
  T30_SUPPORT_R8_RESOLUTION = 0x20000 , T30_SUPPORT_R16_RESOLUTION = 0x40000 , T30_SUPPORT_300_300_RESOLUTION = 0x100000 , T30_SUPPORT_400_400_RESOLUTION = 0x200000 ,
  T30_SUPPORT_600_600_RESOLUTION = 0x400000 , T30_SUPPORT_1200_1200_RESOLUTION = 0x800000 , T30_SUPPORT_300_600_RESOLUTION = 0x1000000 , T30_SUPPORT_400_800_RESOLUTION = 0x2000000 ,
  T30_SUPPORT_600_1200_RESOLUTION = 0x4000000
}
 
enum  {
  T30_SUPPORT_215MM_WIDTH = 0x01 , T30_SUPPORT_255MM_WIDTH = 0x02 , T30_SUPPORT_303MM_WIDTH = 0x04 , T30_SUPPORT_UNLIMITED_LENGTH = 0x10000 ,
  T30_SUPPORT_A4_LENGTH = 0x20000 , T30_SUPPORT_B4_LENGTH = 0x40000 , T30_SUPPORT_US_LETTER_LENGTH = 0x80000 , T30_SUPPORT_US_LEGAL_LENGTH = 0x100000
}
 
enum  {
  T30_SUPPORT_IDENTIFICATION = 0x01 , T30_SUPPORT_SELECTIVE_POLLING = 0x02 , T30_SUPPORT_POLLED_SUB_ADDRESSING = 0x04 , T30_SUPPORT_MULTIPLE_SELECTIVE_POLLING = 0x08 ,
  T30_SUPPORT_SUB_ADDRESSING = 0x10 , T30_SUPPORT_TRANSMITTING_SUBSCRIBER_INTERNET_ADDRESS = 0x20 , T30_SUPPORT_INTERNET_ROUTING_ADDRESS = 0x40 , T30_SUPPORT_CALLING_SUBSCRIBER_INTERNET_ADDRESS = 0x80 ,
  T30_SUPPORT_INTERNET_SELECTIVE_POLLING_ADDRESS = 0x100 , T30_SUPPORT_CALLED_SUBSCRIBER_INTERNET_ADDRESS = 0x200 , T30_SUPPORT_FIELD_NOT_VALID = 0x400 , T30_SUPPORT_COMMAND_REPEAT = 0x800
}
 
enum  {
  T30_IAF_MODE_T37 = 0x01 , T30_IAF_MODE_T38 = 0x02 , T30_IAF_MODE_FLOW_CONTROL = 0x04 , T30_IAF_MODE_CONTINUOUS_FLOW = 0x08 ,
  T30_IAF_MODE_NO_TCF = 0x10 , T30_IAF_MODE_NO_FILL_BITS = 0x20 , T30_IAF_MODE_NO_INDICATORS = 0x40 , T30_IAF_MODE_RELAXED_TIMERS = 0x80
}
 

Functions

t30_state_tt30_init (t30_state_t *s, int calling_party, t30_set_handler_t *set_rx_type_handler, void *set_rx_type_user_data, t30_set_handler_t *set_tx_type_handler, void *set_tx_type_user_data, t30_send_hdlc_handler_t *send_hdlc_handler, void *send_hdlc_user_data)
 Initialise a T.30 context. More...
 
int t30_release (t30_state_t *s)
 Release a T.30 context. More...
 
int t30_free (t30_state_t *s)
 Free a T.30 context. More...
 
int t30_restart (t30_state_t *s)
 Restart a T.30 context. More...
 
int t30_call_active (t30_state_t *s)
 Check if a T.30 call is still active. More...
 
void t30_terminate (t30_state_t *s)
 Cleanup a T.30 context if the call terminates. More...
 
void t30_front_end_status (void *user_data, int status)
 Inform the T.30 engine of a status change in the front end (end of tx, rx signal change, etc.). More...
 
 SPAN_DECLARE_NONSTD (int) t30_non_ecm_get_bit(void *user_data)
 Get a bit of received non-ECM image data. More...
 
int t30_non_ecm_get_byte (void *user_data)
 Get a byte of received non-ECM image data. More...
 
int t30_non_ecm_get_chunk (void *user_data, uint8_t buf[], int max_len)
 Get a bit of received non-ECM image data. More...
 
 SPAN_DECLARE_NONSTD (void) t30_non_ecm_put_bit(void *user_data
 Process a bit of received non-ECM image data. More...
 
void t30_non_ecm_put_byte (void *user_data, int byte)
 Process a byte of received non-ECM image data. More...
 
void t30_non_ecm_put_chunk (void *user_data, const uint8_t buf[], int len)
 Process a chunk of received non-ECM image data. More...
 
void t30_timer_update (t30_state_t *s, int samples)
 Report the passage of time to the T.30 engine. More...
 
void t30_get_transfer_statistics (t30_state_t *s, t30_stats_t *t)
 Get the current transfer statistics. More...
 
void t30_local_interrupt_request (t30_state_t *s, int state)
 Request a local interrupt of FAX exchange. More...
 
void t30_remote_interrupts_allowed (t30_state_t *s, int state)
 Allow remote interrupts of FAX exchange. More...
 

Variables

int bit
 
const uint8_t msg []
 
const uint8_t int len
 
const uint8_t int int ok
 

Macro Definition Documentation

◆ T30_MAX_DIS_DTC_DCS_LEN

#define T30_MAX_DIS_DTC_DCS_LEN   22

The maximum length of a DIS, DTC or DCS frame

◆ T30_MAX_IDENT_LEN

#define T30_MAX_IDENT_LEN   20

The maximum length of the body of an ident string

◆ T30_MAX_PAGE_HEADER_INFO

#define T30_MAX_PAGE_HEADER_INFO   50

The maximum length of the user string to insert in page headers

Typedef Documentation

◆ t30_document_handler_t

typedef int() t30_document_handler_t(t30_state_t *s, void *user_data, int status)

T.30 document handler.

T.30 document handler.

Parameters
sThe T.30 context.
user_dataAn opaque pointer.
resultThe document event code.

◆ t30_phase_b_handler_t

typedef int() t30_phase_b_handler_t(t30_state_t *s, void *user_data, int result)

T.30 phase B callback handler.

T.30 phase B callback handler. This handler can be used to process addition information available in some FAX calls, such as passwords. The callback handler can access whatever additional information might have been received, using t30_get_received_info().

Parameters
sThe T.30 context.
user_dataAn opaque pointer.
resultThe phase B event code.
Returns
The new status. Normally, T30_ERR_OK is returned.

◆ t30_phase_d_handler_t

typedef int() t30_phase_d_handler_t(t30_state_t *s, void *user_data, int result)

T.30 phase D callback handler.

T.30 phase D callback handler.

Parameters
sThe T.30 context.
user_dataAn opaque pointer.
resultThe phase D event code.
Returns
The new status. Normally, T30_ERR_OK is returned.

◆ t30_phase_e_handler_t

typedef void() t30_phase_e_handler_t(t30_state_t *s, void *user_data, int completion_code)

T.30 phase E callback handler.

T.30 phase E callback handler.

Parameters
sThe T.30 context.
user_dataAn opaque pointer.
completion_codeThe phase E completion code.

◆ t30_real_time_frame_handler_t

typedef void() t30_real_time_frame_handler_t(t30_state_t *s, void *user_data, int direction, const uint8_t msg[], int len)

T.30 real time frame handler.

T.30 real time frame handler.

Parameters
sThe T.30 context.
user_dataAn opaque pointer.
directionTRUE for incoming, FALSE for outgoing.
msgThe HDLC message.
lenThe length of the message.

◆ t30_send_hdlc_handler_t

typedef void() t30_send_hdlc_handler_t(void *user_data, const uint8_t msg[], int len)

T.30 send HDLC handler.

T.30 send HDLC handler.

Parameters
user_dataAn opaque pointer.
msgThe HDLC message.
lenThe length of the message.

◆ t30_set_handler_t

typedef void() t30_set_handler_t(void *user_data, int type, int bit_rate, int short_train, int use_hdlc)

T.30 set a receive or transmit type handler.

T.30 set a receive or transmit type handler.

Parameters
user_dataAn opaque pointer.
typeThe modem, tone or silence to be sent or received.
bit_rateThe bit rate of the modem to be sent or received.
short_trainTRUE if the short training sequence should be used (where one exists).
use_hdlcFALSE for bit stream, TRUE for HDLC framing.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

T.30 protocol completion codes, at phase E.

Enumerator
T30_ERR_CEDTONE 

OK

T30_ERR_T0_EXPIRED 

The CED tone exceeded 5s

T30_ERR_T1_EXPIRED 

Timed out waiting for initial communication

T30_ERR_T3_EXPIRED 

Timed out waiting for the first message

T30_ERR_HDLC_CARRIER 

Timed out waiting for procedural interrupt

T30_ERR_CANNOT_TRAIN 

The HDLC carrier did not stop in a timely manner

T30_ERR_OPER_INT_FAIL 

Failed to train with any of the compatible modems

T30_ERR_INCOMPATIBLE 

Operator intervention failed

T30_ERR_RX_INCAPABLE 

Far end is not compatible

T30_ERR_TX_INCAPABLE 

Far end is not able to receive

T30_ERR_NORESSUPPORT 

Far end is not able to transmit

T30_ERR_NOSIZESUPPORT 

Far end cannot receive at the resolution of the image

T30_ERR_UNEXPECTED 

Far end cannot receive at the size of image

T30_ERR_TX_BADDCS 

Unexpected message received

T30_ERR_TX_BADPG 

Received bad response to DCS or training

T30_ERR_TX_ECMPHD 

Received a DCN from remote after sending a page

T30_ERR_TX_GOTDCN 

Invalid ECM response received from receiver

T30_ERR_TX_INVALRSP 

Received a DCN while waiting for a DIS

T30_ERR_TX_NODIS 

Invalid response after sending a page

T30_ERR_TX_PHBDEAD 

Received other than DIS while waiting for DIS

T30_ERR_TX_PHDDEAD 

Received no response to DCS, training or TCF

T30_ERR_TX_T5EXP 

No response after sending a page

T30_ERR_RX_ECMPHD 

Timed out waiting for receiver ready (ECM mode)

T30_ERR_RX_GOTDCS 

Invalid ECM response received from transmitter

T30_ERR_RX_INVALCMD 

DCS received while waiting for DTC

T30_ERR_RX_NOCARRIER 

Unexpected command after page received

T30_ERR_RX_NOEOL 

Carrier lost during fax receive

T30_ERR_RX_NOFAX 

Timed out while waiting for EOL (end of line)

T30_ERR_RX_T2EXPDCN 

Timed out while waiting for first line

T30_ERR_RX_T2EXPD 

Timer T2 expired while waiting for DCN

T30_ERR_RX_T2EXPFAX 

Timer T2 expired while waiting for phase D

T30_ERR_RX_T2EXPMPS 

Timer T2 expired while waiting for fax page

T30_ERR_RX_T2EXPRR 

Timer T2 expired while waiting for next fax page

T30_ERR_RX_T2EXP 

Timer T2 expired while waiting for RR command

T30_ERR_RX_DCNWHY 

Timer T2 expired while waiting for NSS, DCS or MCF

T30_ERR_RX_DCNDATA 

Unexpected DCN while waiting for DCS or DIS

T30_ERR_RX_DCNFAX 

Unexpected DCN while waiting for image data

T30_ERR_RX_DCNPHD 

Unexpected DCN while waiting for EOM, EOP or MPS

T30_ERR_RX_DCNRRD 

Unexpected DCN after EOM or MPS sequence

T30_ERR_RX_DCNNORTN 

Unexpected DCN after RR/RNR sequence

T30_ERR_FILEERROR 

Unexpected DCN after requested retransmission

T30_ERR_NOPAGE 

TIFF/F file cannot be opened

T30_ERR_BADTIFF 

TIFF/F page not found

T30_ERR_BADPAGE 

TIFF/F format is not compatible

T30_ERR_BADTAG 

TIFF/F page number tag missing

T30_ERR_BADTIFFHDR 

Incorrect values for TIFF/F tags

T30_ERR_NOMEM 

Bad TIFF/F header - incorrect values in fields

T30_ERR_RETRYDCN 

Cannot allocate memory for more pages

T30_ERR_CALLDROPPED 

Disconnected after permitted retries

T30_ERR_NOPOLL 

The call dropped prematurely

T30_ERR_IDENT_UNACCEPTABLE 

Poll not accepted

T30_ERR_SUB_UNACCEPTABLE 

Far end's ident is not acceptable

T30_ERR_SEP_UNACCEPTABLE 

Far end's sub-address is not acceptable

T30_ERR_PSA_UNACCEPTABLE 

Far end's selective polling address is not acceptable

T30_ERR_SID_UNACCEPTABLE 

Far end's polled sub-address is not acceptable

T30_ERR_PWD_UNACCEPTABLE 

Far end's sender identification is not acceptable

T30_ERR_TSA_UNACCEPTABLE 

Far end's password is not acceptable

T30_ERR_IRA_UNACCEPTABLE 

Far end's transmitting subscriber internet address is not acceptable

T30_ERR_CIA_UNACCEPTABLE 

Far end's internet routing address is not acceptable

T30_ERR_ISP_UNACCEPTABLE 

Far end's calling subscriber internet address is not acceptable

T30_ERR_CSA_UNACCEPTABLE 

Far end's internet selective polling address is not acceptable

Far end's called subscriber internet address is not acceptable

◆ anonymous enum

anonymous enum

I/O modes for the T.30 protocol. These are allocated such that the lower 4 bits represents the variant of the modem - e.g. the particular bit rate selected.

◆ anonymous enum

anonymous enum
Enumerator
T30_FRONT_END_RECEIVE_COMPLETE 

The current receive has completed. This is only needed to report an unexpected end of the receive operation, as might happen with T.38 dying.

◆ anonymous enum

anonymous enum
Enumerator
T30_SUPPORT_V27TER 

Support the V.27ter modem (2400, and 4800bps) for image transfer.

T30_SUPPORT_V29 

Support the V.29 modem (9600, and 7200bps) for image transfer.

T30_SUPPORT_V17 

Support the V.17 modem (14400, 12000, 9600 and 7200bps) for image transfer.

T30_SUPPORT_V34HDX 

Support the V.34 modem (up to 33,600bps) for image transfer.

T30_SUPPORT_IAF 

Support the Internet aware FAX mode (no bit rate limit) for image transfer.

◆ anonymous enum

anonymous enum
Enumerator
T30_SUPPORT_NO_COMPRESSION 

No compression

T30_SUPPORT_T4_1D_COMPRESSION 

T.1 1D compression

T30_SUPPORT_T4_2D_COMPRESSION 

T.4 2D compression

T30_SUPPORT_T6_COMPRESSION 

T.6 2D compression

T30_SUPPORT_T85_COMPRESSION 

T.85 monochrome JBIG compression, with fixed L0

T30_SUPPORT_T85_L0_COMPRESSION 

T.85 monochrome JBIG compression, with variable L0

T30_SUPPORT_T43_COMPRESSION 

T.43 colour JBIG compression

T30_SUPPORT_T45_COMPRESSION 

T.45 run length colour compression

T30_SUPPORT_T81_COMPRESSION 

T.81 + T.30 Annex E colour JPEG compression

T30_SUPPORT_SYCC_T81_COMPRESSION 

T.81 + T.30 Annex K colour sYCC-JPEG compression

T30_SUPPORT_T88_COMPRESSION 

T.88 monochrome JBIG2 compression

◆ anonymous enum

anonymous enum
Enumerator
T30_SUPPORT_STANDARD_RESOLUTION 

Support standard FAX Y-resolution 98/100dpi

T30_SUPPORT_FINE_RESOLUTION 

Support fine FAX Y-resolution 196/200dpi

T30_SUPPORT_SUPERFINE_RESOLUTION 

Support super-fine FAX Y-resolution 392/400dpi

T30_SUPPORT_R4_RESOLUTION 

Support half FAX X-resolution 100/102dpi

T30_SUPPORT_R8_RESOLUTION 

Support standard FAX X-resolution 200/204dpi

T30_SUPPORT_R16_RESOLUTION 

Support double FAX X-resolution 400dpi

T30_SUPPORT_300_300_RESOLUTION 

Support 300dpi x 300 dpi

T30_SUPPORT_400_400_RESOLUTION 

Support 400dpi x 400 dpi

T30_SUPPORT_600_600_RESOLUTION 

Support 600dpi x 600 dpi

T30_SUPPORT_1200_1200_RESOLUTION 

Support 1200dpi x 1200 dpi

T30_SUPPORT_300_600_RESOLUTION 

Support 300dpi x 600 dpi

T30_SUPPORT_400_800_RESOLUTION 

Support 400dpi x 800 dpi

T30_SUPPORT_600_1200_RESOLUTION 

Support 600dpi x 1200 dpi

◆ anonymous enum

anonymous enum
Enumerator
T30_SUPPORT_IDENTIFICATION 

Enable support of identification, through the SID and/or PWD frames.

T30_SUPPORT_SELECTIVE_POLLING 

Enable support of selective polling, through the SEP frame.

T30_SUPPORT_POLLED_SUB_ADDRESSING 

Enable support of polling sub-addressing, through the PSA frame.

T30_SUPPORT_MULTIPLE_SELECTIVE_POLLING 

Enable support of multiple selective polling, through repeated used of the SEP and PSA frames.

T30_SUPPORT_SUB_ADDRESSING 

Enable support of sub-addressing, through the SUB frame.

T30_SUPPORT_TRANSMITTING_SUBSCRIBER_INTERNET_ADDRESS 

Enable support of transmitting subscriber internet address, through the TSA frame.

T30_SUPPORT_INTERNET_ROUTING_ADDRESS 

Enable support of internet routing address, through the IRA frame.

T30_SUPPORT_CALLING_SUBSCRIBER_INTERNET_ADDRESS 

Enable support of calling subscriber internet address, through the CIA frame.

T30_SUPPORT_INTERNET_SELECTIVE_POLLING_ADDRESS 

Enable support of internet selective polling address, through the ISP frame.

T30_SUPPORT_CALLED_SUBSCRIBER_INTERNET_ADDRESS 

Enable support of called subscriber internet address, through the CSA frame.

T30_SUPPORT_FIELD_NOT_VALID 

Enable support of the field not valid (FNV) frame.

T30_SUPPORT_COMMAND_REPEAT 

Enable support of the command repeat (CRP) frame.

◆ anonymous enum

anonymous enum
Enumerator
T30_IAF_MODE_CONTINUOUS_FLOW 

Continuous flow mode means data is sent as fast as possible, usually across the Internet, where speed is not constrained by a PSTN modem.

T30_IAF_MODE_NO_TCF 

No TCF means TCF is not exchanged. The end points must sort out usable speed issues locally.

T30_IAF_MODE_NO_FILL_BITS 

No fill bits means do not insert fill bits, even if the T.30 messages request them.

T30_IAF_MODE_NO_INDICATORS 

No indicators means do not send indicator messages when using T.38.

T30_IAF_MODE_RELAXED_TIMERS 

Use relaxed timers for T.38. This is appropriate when using TCP/TPKT for T.38, as there is no point in anything but a long backstop timeout in such a mode.

Function Documentation

◆ SPAN_DECLARE_NONSTD() [1/2]

SPAN_DECLARE_NONSTD ( int  )

Get a bit of received non-ECM image data.

Get a bit of received non-ECM image data.

Parameters
user_dataAn opaque pointer, which must point to the T.30 context.
Returns
The next bit to transmit.

Get a bit of received non-ECM image data.

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.

Get a bit of received non-ECM image data.

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.

Get a bit of received non-ECM image data.

Get the next bit of a transmitted serial bit stream.

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

Process a block of received FSK modem audio samples.

Generate a block of FSK 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.

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.

Get a bit of received non-ECM image data.

Get the next bit of a transmitted serial bit stream.

Get the next sequence of bytes for transmission.

Get the next byte for transmission.

Parameters
sA pointer to an HDLC transmitter context.
Returns
The next bit for transmission.
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.

Get a bit of received non-ECM image data.

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.

Get a bit of received non-ECM image data.

Get the next bit of a transmitted serial bit stream.

Dummy receive fillin callback.

Dummy receive callback.

Generate a block of silent audio samples.

Parameters
sThe silence generator 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.

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.

Get a bit of received non-ECM image data.

Get the next bit of a transmitted serial bit stream.

Generate a block of T.31 modem audio samples.

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

Process a block of received T.31 modem audio samples.

Parameters
sThe T.31 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 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.

Get a bit of received non-ECM image data.

Get the next bit of a transmitted serial bit stream.

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

Parameters
sThe T.38 context.
bufThe packet contents.
lenThe length of the packet contents.
seq_noThe packet sequence number.
Returns
0 for OK, else -1.
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.

Get a bit of received non-ECM image data.

Get the next bit of a transmitted serial bit stream.

Generate a block of FAX audio samples.

Apply fake received audio processing.

Process a block of received FAX audio samples.

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

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.

Get a bit of received non-ECM image data.

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.

Get the next bit of a transmitted serial bit stream.

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

Process a block of received FSK modem audio samples.

Generate a block of FSK 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.

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.

Get the next bit of a transmitted serial bit stream.

Get the next sequence of bytes for transmission.

Get the next byte for transmission.

Parameters
sA pointer to an HDLC transmitter context.
Returns
The next bit for transmission.
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.

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.

Get the next bit of a transmitted serial bit stream.

Dummy receive fillin callback.

Dummy receive callback.

Generate a block of silent audio samples.

Parameters
sThe silence generator 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.

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.

Get the next bit of a transmitted serial bit stream.

Generate a block of T.31 modem audio samples.

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

Process a block of received T.31 modem audio samples.

Parameters
sThe T.31 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 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.

Get the next bit of a transmitted serial bit stream.

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

Parameters
sThe T.38 context.
bufThe packet contents.
lenThe length of the packet contents.
seq_noThe packet sequence number.
Returns
0 for OK, else -1.
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.

Get the next bit of a transmitted serial bit stream.

Generate a block of FAX audio samples.

Apply fake received audio processing.

Process a block of received FAX audio samples.

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

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.

Get a bit of received non-ECM image data.

Get the next bit of a transmitted serial bit stream.

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

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

Get a bit of received non-ECM image data.

Get the next bit of a transmitted serial bit stream.

Generate a block of V.17 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.

Get a bit of received non-ECM image data.

Get the next bit of a transmitted serial bit stream.

Process a block of received V.18 audio samples.

Generate a block of V.18 audio samples.

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

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.

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.

Get a bit of received non-ECM image data.

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.

Get a bit of received non-ECM image data.

Get the next bit of a transmitted serial bit stream.

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

Get a bit of received non-ECM image data.

Get the next bit of a transmitted serial bit stream.

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

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

Get a bit of received non-ECM image data.

Get the next bit of a transmitted serial bit stream.

Generate a block of V.29 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.

Get a bit of received non-ECM image data.

Get the next bit of a transmitted serial bit stream.

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

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.

◆ SPAN_DECLARE_NONSTD() [2/2]

SPAN_DECLARE_NONSTD ( void  )

Process a bit of received non-ECM image data.

Process a received HDLC frame.

Process a bit of received non-ECM image data.

Parameters
user_dataAn opaque pointer, which must point to the T.30 context.
bitThe received bit.

Process a received HDLC frame.

Parameters
user_dataThe T.30 context.
msgThe HDLC message.
lenThe length of the message, in octets.
okTRUE if the frame was received without error.

◆ t30_call_active()

int t30_call_active ( t30_state_t s)

Check if a T.30 call is still active.

Check if a T.30 call is still active. This may be used to regularly poll if the job has finished.

Parameters
sThe T.30 context.
Returns
TRUE for call still active, or FALSE for call completed.

References t30_state_s::phase.

◆ t30_free()

int t30_free ( t30_state_t s)

Free a T.30 context.

Free a T.30 context.

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

References t30_release().

◆ t30_front_end_status()

void t30_front_end_status ( void *  user_data,
int  status 
)

Inform the T.30 engine of a status change in the front end (end of tx, rx signal change, etc.).

Inform the T.30 engine of a status change in the front end (end of tx, rx signal change, etc.).

Parameters
user_dataThe T.30 context.
statusThe type of status change which occured.

◆ t30_get_transfer_statistics()

void t30_get_transfer_statistics ( t30_state_t s,
t30_stats_t t 
)

Get the current transfer statistics.

Get the current transfer statistics for the file being sent or received.

Parameters
sThe T.30 context.
tA pointer to a buffer for the statistics.

References t30_stats_t::bit_rate.

◆ t30_init()

t30_state_t * t30_init ( t30_state_t s,
int  calling_party,
t30_set_handler_t set_rx_type_handler,
void *  set_rx_type_user_data,
t30_set_handler_t set_tx_type_handler,
void *  set_tx_type_user_data,
t30_send_hdlc_handler_t send_hdlc_handler,
void *  send_hdlc_user_data 
)

Initialise a T.30 context.

Initialise a T.30 context.

Parameters
sThe T.30 context.
calling_partyTRUE if the context is for a calling party. FALSE if the context is for an answering party.
set_rx_type_handler
set_rx_type_user_data
set_tx_type_handler
set_tx_type_user_data
send_hdlc_handler
send_hdlc_user_data
Returns
A pointer to the context, or NULL if there was a problem.

◆ t30_local_interrupt_request()

void t30_local_interrupt_request ( t30_state_t s,
int  state 
)

Request a local interrupt of FAX exchange.

Request a local interrupt of FAX exchange.

Parameters
sThe T.30 context.
stateTRUE to enable interrupt request, else FALSE.

◆ t30_non_ecm_get_byte()

int t30_non_ecm_get_byte ( void *  user_data)

Get a byte of received non-ECM image data.

Get a byte of received non-ECM image data.

Parameters
user_dataAn opaque pointer, which must point to the T.30 context.
Returns
The next byte to transmit.

References t30_state_s::state.

◆ t30_non_ecm_get_chunk()

int t30_non_ecm_get_chunk ( void *  user_data,
uint8_t  buf[],
int  max_len 
)

Get a bit of received non-ECM image data.

Get a chunk of received non-ECM image data.

Parameters
user_dataAn opaque pointer, which must point to the T.30 context.
bufThe buffer to contain the data.
max_lenThe maximum length of the chunk.
Returns
The actual length of the chunk.

◆ t30_non_ecm_put_byte()

void t30_non_ecm_put_byte ( void *  user_data,
int  byte 
)

Process a byte of received non-ECM image data.

Process a byte of received non-ECM image data.

Parameters
user_dataAn opaque pointer, which must point to the T.30 context.
byteThe received byte.

◆ t30_non_ecm_put_chunk()

void t30_non_ecm_put_chunk ( void *  user_data,
const uint8_t  buf[],
int  len 
)

Process a chunk of received non-ECM image data.

Process a chunk of received non-ECM image data.

Parameters
user_dataAn opaque pointer, which must point to the T.30 context.
bufThe buffer containing the received data.
lenThe length of the data in buf.

◆ t30_release()

int t30_release ( t30_state_t s)

Release a T.30 context.

Release a T.30 context.

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

Referenced by fax_free(), fax_release(), t30_free(), and t38_terminal_release().

◆ t30_remote_interrupts_allowed()

void t30_remote_interrupts_allowed ( t30_state_t s,
int  state 
)

Allow remote interrupts of FAX exchange.

Allow remote interrupts of FAX exchange.

Parameters
sThe T.30 context.
stateTRUE to allow interruptd, else FALSE.

◆ t30_restart()

int t30_restart ( t30_state_t s)

Restart a T.30 context.

Restart a T.30 context.

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

References t30_state_s::phase.

◆ t30_terminate()

void t30_terminate ( t30_state_t s)

Cleanup a T.30 context if the call terminates.

Cleanup a T.30 context if the call terminates.

Parameters
sThe T.30 context.

References t30_state_s::phase.

◆ t30_timer_update()

void t30_timer_update ( t30_state_t s,
int  samples 
)

Report the passage of time to the T.30 engine.

Report the passage of time to the T.30 engine.

Parameters
sThe T.30 context.
samplesThe time change in 1/8000th second steps.

References t30_state_s::far_end_detected, and t30_state_s::timer_t0_t1.