t38_core.c File Reference

#include <inttypes.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <time.h>
#include <string.h>
#include "floating_fudge.h"
#include <assert.h>
#include <memory.h>
#include <tiffio.h>
#include "spandsp/telephony.h"
#include "spandsp/logging.h"
#include "spandsp/bit_operations.h"
#include "spandsp/t38_core.h"
#include "spandsp/private/logging.h"
#include "spandsp/private/t38_core.h"

Defines

#define ACCEPTABLE_SEQ_NO_OFFSET   2000

Functions

const char * t38_indicator_to_str (int indicator)
 Convert the code for an indicator to a short text name.
const char * t38_data_type_to_str (int data_type)
 Convert the code for a type of data to a short text name.
const char * t38_field_type_to_str (int field_type)
 Convert the code for a type of data field to a short text name.
const char * t38_cm_profile_to_str (int profile)
 Convert the code for a CM profile code to text description.
const char * t38_jm_to_str (const uint8_t *data, int len)
 Convert a JM message code to text description.
int t38_v34rate_to_bps (const uint8_t *data, int len)
 Convert a V34rate message to an actual bit rate.
int t38_core_rx_ifp_packet (t38_core_state_t *s, const uint8_t *buf, int len, uint16_t seq_no)
 Process a received T.38 IFP packet.
int t38_core_send_indicator (t38_core_state_t *s, int indicator, int count)
 Send an indicator packet.
int t38_core_send_flags_delay (t38_core_state_t *s, int indicator)
 Find the delay to allow for HDLC flags after sending an indicator.
int t38_core_send_data (t38_core_state_t *s, int data_type, int field_type, const uint8_t field[], int field_len, int count)
 Send a data packet.
int t38_core_send_data_multi_field (t38_core_state_t *s, int data_type, const t38_data_field_t field[], int fields, int count)
 Send a data packet.
void t38_set_data_rate_management_method (t38_core_state_t *s, int method)
void t38_set_data_transport_protocol (t38_core_state_t *s, int data_transport_protocol)
void t38_set_fill_bit_removal (t38_core_state_t *s, int fill_bit_removal)
void t38_set_mmr_transcoding (t38_core_state_t *s, int mmr_transcoding)
void t38_set_jbig_transcoding (t38_core_state_t *s, int jbig_transcoding)
void t38_set_max_buffer_size (t38_core_state_t *s, int max_buffer_size)
void t38_set_max_datagram_size (t38_core_state_t *s, int max_datagram_size)
void t38_set_t38_version (t38_core_state_t *s, int t38_version)
void t38_set_sequence_number_handling (t38_core_state_t *s, int check)
void t38_set_tep_handling (t38_core_state_t *s, int allow_for_tep)
int t38_get_fastest_image_data_rate (t38_core_state_t *s)
logging_state_tt38_core_get_logging_state (t38_core_state_t *s)
 Get a pointer to the logging context associated with a T.38 context.
t38_core_state_tt38_core_init (t38_core_state_t *s, t38_rx_indicator_handler_t *rx_indicator_handler, t38_rx_data_handler_t *rx_data_handler, t38_rx_missing_handler_t *rx_missing_handler, void *rx_user_data, t38_tx_packet_handler_t *tx_packet_handler, void *tx_packet_user_data)
 Initialise a T.38 core context.
int t38_core_release (t38_core_state_t *s)
 Release a signaling tone transmitter context.
int t38_core_free (t38_core_state_t *s)
 Free a signaling tone transmitter context.

Detailed Description


Function Documentation

const char* t38_cm_profile_to_str ( int  profile  ) 

Convert the code for a CM profile code to text description.

Parameters:
profile The profile code from a CM message.
Returns:
A pointer to a short text description of the profile.

int t38_core_free ( t38_core_state_t s  ) 

Free a signaling tone transmitter context.

Free a signaling tone transmitter context.

Parameters:
s The T.38 context.
Returns:
0 for OK

logging_state_t* t38_core_get_logging_state ( t38_core_state_t s  ) 

Get a pointer to the logging context associated with a T.38 context.

Get a pointer to the logging context associated with a T.38 context.

Parameters:
s The T.38 context.
Returns:
A pointer to the logging context, or NULL.

t38_core_state_t* t38_core_init ( t38_core_state_t s,
t38_rx_indicator_handler_t *  rx_indicator_handler,
t38_rx_data_handler_t *  rx_data_handler,
t38_rx_missing_handler_t *  rx_missing_handler,
void *  rx_user_data,
t38_tx_packet_handler_t *  tx_packet_handler,
void *  tx_packet_user_data 
)

Initialise a T.38 core context.

Initialise a T.38 core context.

Parameters:
s The T.38 context.
rx_indicator_handler Receive indicator handling routine.
rx_data_handler Receive data packet handling routine.
rx_rx_missing_handler Missing receive packet handling routine.
rx_packet_user_data An opaque pointer passed to the rx packet handling routines.
tx_packet_handler Packet transmit handling routine.
tx_packet_user_data An opaque pointer passed to the tx_packet_handler.
Returns:
A pointer to the T.38 context, or NULL if there was a problem.

int t38_core_release ( t38_core_state_t s  ) 

Release a signaling tone transmitter context.

Release a signaling tone transmitter context.

Parameters:
s The T.38 context.
Returns:
0 for OK

int t38_core_rx_ifp_packet ( t38_core_state_t s,
const uint8_t *  buf,
int  len,
uint16_t  seq_no 
)

Process a received T.38 IFP packet.

Parameters:
s The T.38 context.
buf The packet contents.
len The length of the packet contents.
seq_no The packet sequence number.
Returns:
0 for OK, else -1.

References span_log(), span_log_buf(), span_log_test(), t38_data_type_to_str(), t38_field_type_to_str(), and t38_indicator_to_str().

int t38_core_send_data ( t38_core_state_t s,
int  data_type,
int  field_type,
const uint8_t  field[],
int  field_len,
int  count 
)

Send a data packet.

Parameters:
s The T.38 context.
data_type The packet's data type.
field_type The packet's field type.
field The message data content for the packet.
field_len The length of the message data, in bytes.
count The number of copies of the packet to send.
Returns:
???

References t38_data_field_t::field, t38_data_field_t::field_len, t38_data_field_t::field_type, and span_log().

int t38_core_send_data_multi_field ( t38_core_state_t s,
int  data_type,
const t38_data_field_t  field[],
int  fields,
int  count 
)

Send a data packet.

Parameters:
s The T.38 context.
data_type The packet's data type.
field The list of fields.
fields The number of fields in the list.
count The number of copies of the packet to send.
Returns:
???

References span_log().

int t38_core_send_flags_delay ( t38_core_state_t s,
int  indicator 
)

Find the delay to allow for HDLC flags after sending an indicator.

Parameters:
s The T.38 context.
indicator The indicator to send.
Returns:
The delay to allow for initial HDLC flags after this indicator is sent.

int t38_core_send_indicator ( t38_core_state_t s,
int  indicator,
int  count 
)

Send an indicator packet.

Parameters:
s The T.38 context.
indicator The indicator to send.
count The number of copies of the packet to send.
Returns:
The delay to allow after this indicator is sent.

References span_log(), and t38_indicator_to_str().

const char* t38_data_type_to_str ( int  data_type  ) 

Convert the code for a type of data to a short text name.

Parameters:
data_type The data type.
Returns:
A pointer to a short text name for the data type.

Referenced by t38_core_rx_ifp_packet().

const char* t38_field_type_to_str ( int  field_type  ) 

Convert the code for a type of data field to a short text name.

Parameters:
field_type The field type.
Returns:
A pointer to a short text name for the field type.

Referenced by t38_core_rx_ifp_packet().

const char* t38_indicator_to_str ( int  indicator  ) 

Convert the code for an indicator to a short text name.

Parameters:
indicator The type of indicator.
Returns:
A pointer to a short text name for the indicator.

Referenced by t38_core_rx_ifp_packet(), and t38_core_send_indicator().

const char* t38_jm_to_str ( const uint8_t *  data,
int  len 
)

Convert a JM message code to text description.

Parameters:
data The data field of the message.
len The length of the data field.
Returns:
A pointer to a short text description of the profile.

void t38_set_data_rate_management_method ( t38_core_state_t s,
int  method 
)

Set the method to be used for data rate management, as per the T.38 spec.

Parameters:
s The T.38 context.
method 1 for pass TCF across the T.38 link, 2 for handle TCF locally.

void t38_set_data_transport_protocol ( t38_core_state_t s,
int  data_transport_protocol 
)

Set the data transport protocol.

Parameters:
s The T.38 context.
data_transport_protocol UDPTL, RTP or TPKT.

void t38_set_fill_bit_removal ( t38_core_state_t s,
int  fill_bit_removal 
)

Set the non-ECM fill bit removal mode.

Parameters:
s The T.38 context.
fill_bit_removal TRUE to remove fill bits across the T.38 link, else FALSE.

void t38_set_jbig_transcoding ( t38_core_state_t s,
int  jbig_transcoding 
)

Set the JBIG transcoding mode.

Parameters:
s The T.38 context.
jbig_transcoding TRUE to transcode to JBIG across the T.38 link, else FALSE.

void t38_set_mmr_transcoding ( t38_core_state_t s,
int  mmr_transcoding 
)

Set the MMR transcoding mode.

Parameters:
s The T.38 context.
mmr_transcoding TRUE to transcode to MMR across the T.38 link, else FALSE.

void t38_set_sequence_number_handling ( t38_core_state_t s,
int  check 
)

Set the sequence number handling option.

Parameters:
s The T.38 context.
check TRUE to check sequence numbers, and handle gaps reasonably. FALSE for no sequence number processing (e.g. for TPKT over TCP transport).

void t38_set_t38_version ( t38_core_state_t s,
int  t38_version 
)

Set the T.38 version to be emulated.

Parameters:
s The T.38 context.
t38_version Version number, as in the T.38 spec.

void t38_set_tep_handling ( t38_core_state_t s,
int  allow_for_tep 
)

Set the TEP handling option.

Parameters:
s The T.38 context.
allow_for_tep TRUE to allow for TEP playout, else FALSE.

Referenced by t38_terminal_set_tep_mode().

int t38_v34rate_to_bps ( const uint8_t *  data,
int  len 
)

Convert a V34rate message to an actual bit rate.

Parameters:
data The data field of the message.
len The length of the data field.
Returns:
The bit rate, or -1 for a bad message.


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