t30.h File Reference

Go to the source code of this file.

Classes

struct  t30_exchanged_info_t
struct  t30_stats_t

Defines

#define _SPANDSP_T30_H_
#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.
typedef int( t30_phase_d_handler_t )(t30_state_t *s, void *user_data, int result)
 T.30 phase D callback handler.
typedef void( t30_phase_e_handler_t )(t30_state_t *s, void *user_data, int completion_code)
 T.30 phase E callback handler.
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.
typedef int( t30_document_handler_t )(t30_state_t *s, void *user_data, int status)
 T.30 document handler.
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.
typedef void( t30_send_hdlc_handler_t )(void *user_data, const uint8_t msg[], int len)
 T.30 send HDLC handler.

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_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_V34 = 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_T43_COMPRESSION = 0x20, T30_SUPPORT_T45_COMPRESSION = 0x40, T30_SUPPORT_T81_COMPRESSION = 0x80,
  T30_SUPPORT_SYCC_T81_COMPRESSION = 0x100
}
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.
int t30_release (t30_state_t *s)
 Release a T.30 context.
int t30_free (t30_state_t *s)
 Free a T.30 context.
int t30_restart (t30_state_t *s)
 Restart a T.30 context.
int t30_call_active (t30_state_t *s)
 Check if a T.30 call is still active.
void t30_terminate (t30_state_t *s)
 Cleanup a T.30 context if the call terminates.
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.).
 SPAN_DECLARE_NONSTD (int) t30_non_ecm_get_bit(void *user_data)
 Get a bit of received non-ECM image data.
int t30_non_ecm_get_byte (void *user_data)
 Get a byte of received non-ECM image data.
int t30_non_ecm_get_chunk (void *user_data, uint8_t buf[], int max_len)
 Get a bit of received non-ECM image data.
 SPAN_DECLARE_NONSTD (void) t30_non_ecm_put_bit(void *user_data
 Process a bit of received non-ECM image data.
void t30_non_ecm_put_byte (void *user_data, int byte)
 Process a byte of received non-ECM image data.
void t30_non_ecm_put_chunk (void *user_data, const uint8_t buf[], int len)
 Process a chunk of received non-ECM image data.
void t30_timer_update (t30_state_t *s, int samples)
 Report the passage of time to the T.30 engine.
void t30_get_transfer_statistics (t30_state_t *s, t30_stats_t *t)
 Get the current transfer statistics.
void t30_local_interrupt_request (t30_state_t *s, int state)
 Request a local interrupt of FAX exchange.

Variables

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


Detailed Description


Define Documentation

#define T30_MAX_DIS_DTC_DCS_LEN   22

The maximum length of a DIS, DTC or DCS frame

#define T30_MAX_IDENT_LEN   20

#define T30_MAX_PAGE_HEADER_INFO   50

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

Referenced by t30_set_tx_page_header_info().


Typedef Documentation

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

T.30 document handler.

T.30 document handler.

Parameters:
s The T.30 context.
user_data An opaque pointer.
result The document event code.

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:
s The T.30 context.
user_data An opaque pointer.
result The phase B event code.
Returns:
The new status. Normally, T30_ERR_OK is returned.

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:
s The T.30 context.
user_data An opaque pointer.
result The phase D event code.
Returns:
The new status. Normally, T30_ERR_OK is returned.

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:
s The T.30 context.
user_data An opaque pointer.
completion_code The phase E completion code.

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:
s The T.30 context.
user_data An opaque pointer.
direction TRUE for incoming, FALSE for outgoing.
msg The HDLC message.
len The length of the message.

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_data An opaque pointer.
msg The HDLC message.
len The length of the message.

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_data An opaque pointer.
type The modem, tone or silence to be sent or received.
bit_rate The bit rate of the modem to be sent or received.
short_train TRUE if the short training sequence should be used (where one exists).
use_hdlc FALSE for bit stream, TRUE for HDLC framing.


Enumeration Type Documentation

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

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

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

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_V34  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

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 coding
T30_SUPPORT_T43_COMPRESSION  T.43 colour JBIG coding
T30_SUPPORT_T45_COMPRESSION  T.45 run length colour compression
T30_SUPPORT_T81_COMPRESSION  T.81 + T.30 Annex E colour JPEG coding
T30_SUPPORT_SYCC_T81_COMPRESSION  T.81 + T.30 Annex K colour sYCC-JPEG coding

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

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

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 ( 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_data An opaque pointer, which must point to the T.30 context.
bit The received bit.
Process a received HDLC frame.
Parameters:
user_data The T.30 context.
msg The HDLC message.
len The length of the message, in octets.
ok TRUE if the frame was received without error.

SPAN_DECLARE_NONSTD ( int   ) 

Get a bit of received non-ECM image data.

Get a bit of received non-ECM image data.

Parameters:
user_data An 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.

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_data The context.
amp The signal.buffer
len The length of the signal buffer
Returns:
0.

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:
s The T.30 context.
Returns:
TRUE for call still active, or FALSE for call completed.

int t30_free ( t30_state_t s  ) 

Free a T.30 context.

Free a T.30 context.

Parameters:
s The T.30 context.
Returns:
0 for OK, else -1.

References t30_release().

void t30_front_end_status ( void *  user_data,
int  status 
)

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:
s The T.30 context.
t A pointer to a buffer for the statistics.

References t4_stats_t::bad_rows, t4_stats_t::encoding, t4_stats_t::length, t4_stats_t::line_image_size, t4_stats_t::longest_bad_row_run, t4_stats_t::pages_in_file, t4_get_transfer_statistics(), t4_stats_t::width, t4_stats_t::x_resolution, and t4_stats_t::y_resolution.

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:
s The T.30 context.
calling_party TRUE 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.

References t30_restart(), T30_SUPPORT_FINE_RESOLUTION, T30_SUPPORT_R8_RESOLUTION, T30_SUPPORT_STANDARD_RESOLUTION, T30_SUPPORT_SUPERFINE_RESOLUTION, T30_SUPPORT_T4_1D_COMPRESSION, T30_SUPPORT_T4_2D_COMPRESSION, T30_SUPPORT_V27TER, and T30_SUPPORT_V29.

Referenced by fax_init(), and t38_terminal_init().

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:
s The T.30 context.
state TRUE to enable interrupt request, else FALSE.

References T30_PIN, and T30_PIP.

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_data An opaque pointer, which must point to the T.30 context.
Returns:
The next byte to transmit.

References t30_state_s::logging, span_log(), t30_state_s::state, t30_state_s::t4, t4_tx_get_byte(), and t30_state_s::tcf_test_bits.

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_data An opaque pointer, which must point to the T.30 context.
buf The buffer to contain the data.
max_len The maximum length of the chunk.
Returns:
The actual length of the chunk.

References t30_state_s::logging, span_log(), t30_state_s::state, t30_state_s::t4, t4_tx_get_chunk(), and t30_state_s::tcf_test_bits.

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_data An opaque pointer, which must point to the T.30 context.
byte The received byte.

References t30_state_s::state, t30_state_s::t4, t4_rx_put_byte(), t30_state_s::tcf_current_zeros, t30_state_s::tcf_most_zeros, and t30_state_s::tcf_test_bits.

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_data An opaque pointer, which must point to the T.30 context.
buf The buffer containing the received data.
len The length of the data in buf.

References t30_state_s::state, t30_state_s::t4, t4_rx_put_chunk(), t30_state_s::tcf_current_zeros, t30_state_s::tcf_most_zeros, and t30_state_s::tcf_test_bits.

int t30_release ( t30_state_t s  ) 

Release a T.30 context.

Release a T.30 context.

Parameters:
s The T.30 context.
Returns:
0 for OK, else -1.

References t4_rx_release(), and t4_tx_release().

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

int t30_restart ( t30_state_t s  ) 

Restart a T.30 context.

Restart a T.30 context.

Parameters:
s The T.30 context.
Returns:
0 for OK, else -1.

References DEFAULT_TIMER_T0, and ms_to_samples.

Referenced by fax_init(), t30_init(), and t38_terminal_init().

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:
s The T.30 context.

References T30_ERR_CALLDROPPED.

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:
s The T.30 context.
samples The time change in 1/8000th second steps.

Referenced by fax_rx(), and fax_rx_fillin().


Generated on Tue Aug 4 03:36:21 2009 for spandsp by  doxygen 1.5.9