spandsp 0.0.6
fax.c File Reference
#include <inttypes.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "floating_fudge.h"
#include <assert.h>
#include <fcntl.h>
#include <time.h>
#include <tiffio.h>
#include "spandsp/telephony.h"
#include "spandsp/logging.h"
#include "spandsp/queue.h"
#include "spandsp/dc_restore.h"
#include "spandsp/vector_int.h"
#include "spandsp/power_meter.h"
#include "spandsp/complex.h"
#include "spandsp/tone_detect.h"
#include "spandsp/tone_generate.h"
#include "spandsp/async.h"
#include "spandsp/hdlc.h"
#include "spandsp/silence_gen.h"
#include "spandsp/super_tone_rx.h"
#include "spandsp/fsk.h"
#include "spandsp/modem_connect_tones.h"
#include "spandsp/v8.h"
#include "spandsp/v29tx.h"
#include "spandsp/v29rx.h"
#include "spandsp/v27ter_tx.h"
#include "spandsp/v27ter_rx.h"
#include "spandsp/v17tx.h"
#include "spandsp/v17rx.h"
#include "spandsp/timezone.h"
#include "spandsp/t4_rx.h"
#include "spandsp/t4_tx.h"
#include "spandsp/t4_t6_decode.h"
#include "spandsp/t4_t6_encode.h"
#include "spandsp/t30_fcf.h"
#include "spandsp/t35.h"
#include "spandsp/t30.h"
#include "spandsp/t30_api.h"
#include "spandsp/t30_logging.h"
#include "spandsp/fax_modems.h"
#include "spandsp/fax.h"
#include "spandsp/private/logging.h"
#include "spandsp/private/silence_gen.h"
#include "spandsp/private/fsk.h"
#include "spandsp/private/modem_connect_tones.h"
#include "spandsp/private/v8.h"
#include "spandsp/private/v17tx.h"
#include "spandsp/private/v17rx.h"
#include "spandsp/private/v27ter_tx.h"
#include "spandsp/private/v27ter_rx.h"
#include "spandsp/private/v29tx.h"
#include "spandsp/private/v29rx.h"
#include "spandsp/private/hdlc.h"
#include "spandsp/private/fax_modems.h"
#include "spandsp/private/timezone.h"
#include "spandsp/private/t4_t6_decode.h"
#include "spandsp/private/t4_t6_encode.h"
#include "spandsp/private/t4_rx.h"
#include "spandsp/private/t4_tx.h"
#include "spandsp/private/t30.h"
#include "spandsp/private/fax.h"

Macros

#define HDLC_FRAMING_OK_THRESHOLD   8

Functions

int fax_rx (fax_state_t *s, int16_t *amp, int len)
int fax_rx_fillin (fax_state_t *s, int len)
int fax_tx (fax_state_t *s, int16_t *amp, int max_len)
void fax_set_transmit_on_idle (fax_state_t *s, int transmit_on_idle)
 Select whether silent audio will be sent when FAX transmit is idle.
void fax_set_tep_mode (fax_state_t *s, int use_tep)
 Select whether TEP will be sent for the image modems.
t30_state_t * fax_get_t30_state (fax_state_t *s)
 Get a pointer to the T.30 engine associated with a FAX context.
logging_state_t * fax_get_logging_state (fax_state_t *s)
 Get a pointer to the logging context associated with a FAX context.
int fax_restart (fax_state_t *s, int calling_party)
 Restart a FAX context.
fax_state_t * fax_init (fax_state_t *s, int calling_party)
 Initialise a FAX context.
int fax_release (fax_state_t *s)
 Release a FAX context.
int fax_free (fax_state_t *s)
 Free a FAX context.

Function Documentation

◆ fax_free()

int fax_free ( fax_state_t * s)

Free a FAX context.

Free a FAX context.

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

References fax_free(), fax_state_s::t30, and t30_release().

Referenced by fax_free(), and SPAN_DECLARE_NONSTD().

◆ fax_get_logging_state()

logging_state_t * fax_get_logging_state ( fax_state_t * s)

Get a pointer to the logging context associated with a FAX context.

Get a pointer to the logging context associated with a FAX context.

Parameters
sThe FAX context.
Returns
A pointer to the logging context, or NULL.

References fax_get_logging_state(), and fax_state_s::logging.

Referenced by fax_get_logging_state(), and SPAN_DECLARE_NONSTD().

◆ fax_get_t30_state()

t30_state_t * fax_get_t30_state ( fax_state_t * s)

Get a pointer to the T.30 engine associated with a FAX context.

Get a pointer to the T.30 engine associated with a FAX context.

Parameters
sThe FAX context.
Returns
A pointer to the T.30 context, or NULL.

References fax_get_t30_state(), and fax_state_s::t30.

Referenced by fax_get_t30_state(), and SPAN_DECLARE_NONSTD().

◆ fax_init()

fax_state_t * fax_init ( fax_state_t * s,
int calling_party )

Initialise a FAX context.

Initialise a FAX context.

Parameters
sThe FAX context.
calling_partyTRUE if the context is for a calling party. FALSE if the context is for an answering party.
Returns
A pointer to the FAX context, or NULL if there was a problem.

References fax_init(), fax_restart(), fax_state_s::logging, MODEM_CONNECT_TONES_ANSAM_PR, fax_state_s::modems, t30_state_s::supported_modems, fax_state_s::t30, t30_init(), t30_set_supported_modems(), T30_SUPPORT_V17, T30_SUPPORT_V27TER, T30_SUPPORT_V29, T30_SUPPORT_V34HDX, and v8_init().

Referenced by fax_init(), and SPAN_DECLARE_NONSTD().

◆ fax_release()

int fax_release ( fax_state_t * s)

Release a FAX context.

Release a FAX context.

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

References fax_release(), fax_state_s::t30, and t30_release().

Referenced by fax_release(), and SPAN_DECLARE_NONSTD().

◆ fax_restart()

int fax_restart ( fax_state_t * s,
int calling_party )

Restart a FAX context.

Restart a FAX context.

Parameters
sThe FAX context.
calling_partyTRUE if the context is for a calling party. FALSE if the context is for an answering party.
Returns
0 for OK, else -1.

References fax_modems_state_s::audio_rx_log, fax_modems_state_s::audio_tx_log, fax_restart(), MODEM_CONNECT_TONES_ANSAM_PR, fax_state_s::modems, t30_state_s::supported_modems, fax_state_s::t30, t30_restart(), T30_SUPPORT_V17, T30_SUPPORT_V27TER, T30_SUPPORT_V29, and T30_SUPPORT_V34HDX.

Referenced by fax_init(), fax_restart(), and SPAN_DECLARE_NONSTD().

◆ fax_set_tep_mode()

void fax_set_tep_mode ( fax_state_t * s,
int use_tep )

Select whether TEP will be sent for the image modems.

Select whether talker echo protection tone will be sent for the image modems.

Parameters
sThe FAX context.
use_tepTRUE if TEP should be sent.

References fax_set_tep_mode(), fax_state_s::modems, and fax_modems_state_s::use_tep.

Referenced by fax_set_tep_mode(), and SPAN_DECLARE_NONSTD().

◆ fax_set_transmit_on_idle()

void fax_set_transmit_on_idle ( fax_state_t * s,
int transmit_on_idle )

Select whether silent audio will be sent when FAX transmit is idle.

Select whether silent audio will be sent when FAX transmit is idle.

Parameters
sThe FAX context.
transmit_on_idleTRUE if silent audio should be output when the FAX transmitter is idle. FALSE to transmit zero length audio when the FAX transmitter is idle. The default behaviour is FALSE.

References fax_set_transmit_on_idle(), fax_state_s::modems, and fax_modems_state_s::transmit_on_idle.

Referenced by fax_set_transmit_on_idle(), and SPAN_DECLARE_NONSTD().