Go to the documentation of this file.
28 #if !defined(_SPANDSP_FAX_H_)
29 #define _SPANDSP_FAX_H_
40 #if defined(__cplusplus)
134 #if defined(__cplusplus)
logging_state_t * fax_get_logging_state(fax_state_t *s)
Get a pointer to the logging context associated with a FAX context.
Definition: fax.c:597
@ MODEM_CONNECT_TONES_ANSAM_PR
The ANSam with phase reversals tone is a version of ANS_PR with 20% of 15Hz+-0.1Hz AM modulation,...
Definition: modem_connect_tones.h:72
float v29_rx_signal_power(v29_rx_state_t *s)
Definition: v29rx.c:165
t30_state_t * fax_get_t30_state(fax_state_t *s)
Get a pointer to the T.30 engine associated with a FAX context.
Definition: fax.c:591
@ MODEM_CONNECT_TONES_FAX_CNG
CNG tone is a pure 1100Hz tone, in 0.5s bursts, with 3s silences in between. The bursts repeat for as...
Definition: modem_connect_tones.h:62
void v17_rx_set_put_bit(v17_rx_state_t *s, put_bit_func_t put_bit, void *user_data)
Change the put_bit function associated with a V.17 modem receive context.
Definition: v17rx.c:1360
logging_state_t logging
V.8.
Definition: private/fax.h:46
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,...
Definition: t30.c:5833
void v27ter_tx_set_get_bit(v27ter_tx_state_t *s, get_bit_func_t get_bit, void *user_data)
Change the get_bit function associated with a V.27ter modem transmit context.
Definition: v27ter_tx.c:368
@ T30_SUPPORT_V34HDX
Definition: t30.h:348
int audio_tx_log
Audio logging file handle for transmitted audio.
Definition: private/fax_modems.h:122
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.
Definition: fax.c:579
logging_state_t logging
Error and flow logging control.
Definition: private/fax_modems.h:124
fax_state_t * fax_init(fax_state_t *s, int calling_party)
Initialise a FAX context.
Definition: fax.c:664
float fsk_rx_signal_power(fsk_rx_state_t *s)
Definition: fsk.c:246
v27ter_rx_state_t v27ter_rx
A V.27ter modem context used when receiving FAXes at 2400bps or 4800bps.
Definition: private/fax_modems.h:74
int t30_release(t30_state_t *s)
Release a T.30 context.
Definition: t30.c:6368
int v17_tx_restart(v17_tx_state_t *s, int bit_rate, int tep, int short_train)
Reinitialise an existing V.17 modem transmit context.
Definition: v17tx.c:380
void(* put_bit_func_t)(void *user_data, int bit)
Definition: async.h:105
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.
Definition: fax.c:579
span_rx_fillin_handler_t * rx_fillin_handler
The current receive missing signal fill-in handler.
Definition: private/fax_modems.h:100
void v27ter_rx_set_put_bit(v27ter_rx_state_t *s, put_bit_func_t put_bit, void *user_data)
Change the put_bit function associated with a V.27ter modem receive context.
Definition: v27ter_rx.c:1016
#define MODEM_CONNECT_TONES_FAX_CED
FAX CED tone is the same as ANS tone.
Definition: modem_connect_tones.h:87
v29_tx_state_t v29_tx
A V.29 modem context used when sending FAXes at 7200bps or 9600bps.
Definition: private/fax_modems.h:65
v27ter_tx_state_t v27ter_tx
A V.27ter modem context used when sending FAXes at 2400bps or 4800bps.
Definition: private/fax_modems.h:71
SPAN_DECLARE_NONSTD(int) async_tx_get_bit(void *user_data)
Get the next bit of a transmitted serial bit stream.
void v29_rx_set_put_bit(v29_rx_state_t *s, put_bit_func_t put_bit, void *user_data)
Change the put_bit function associated with a V.29 modem receive context.
Definition: v29rx.c:1052
v17_tx_state_t v17_tx
A V.17 modem context used when sending FAXes at 7200bps, 9600bps 12000bps or 14400bps.
Definition: private/fax_modems.h:59
int fax_restart(fax_state_t *s, int calling_party)
Restart a FAX context.
Definition: fax.c:603
int v27ter_rx_restart(v27ter_rx_state_t *s, int bit_rate, int old_train)
Reinitialise an existing V.27ter modem receive context.
Definition: v27ter_rx.c:1036
void t30_timer_update(t30_state_t *s, int samples)
Report the passage of time to the T.30 engine.
Definition: t30.c:6127
silence_gen_state_t silence_gen
Used to insert timed silences.
Definition: private/fax_modems.h:77
void fax_set_tep_mode(fax_state_t *s, int use_tep)
Select whether TEP will be sent for the image modems.
Definition: fax.c:585
int transmit_on_idle
Definition: private/fax_modems.h:43
t30_state_t t30
The T.30 back-end.
Definition: private/fax.h:38
int audio_rx_log
Audio logging file handle for received audio.
Definition: private/fax_modems.h:120
int fax_restart(fax_state_t *s, int calling_party)
Restart a FAX context.
Definition: fax.c:603
int fax_free(fax_state_t *s)
Free a FAX context.
Definition: fax.c:726
v29_rx_state_t v29_rx
A V.29 modem context used when receiving FAXes at 7200bps or 9600bps.
Definition: private/fax_modems.h:68
void fax_set_tep_mode(fax_state_t *s, int use_tep)
Select whether TEP will be sent for the image modems.
Definition: fax.c:585
int fax_release(fax_state_t *s)
Release a FAX context.
Definition: fax.c:719
Definition: private/fax_modems.h:35
int(* get_bit_func_t)(void *user_data)
Definition: async.h:108
span_rx_handler_t * rx_handler
The current receive signal handler.
Definition: private/fax_modems.h:98
@ T30_SUPPORT_V29
Definition: t30.h:344
span_tx_handler_t * next_tx_handler
The next transmit signal handler, for two stage transmit operations. E.g. a short silence followed by...
Definition: private/fax_modems.h:109
int rx_bit_rate
The current bit rate of the receiver.
Definition: private/fax_modems.h:115
int tx_bit_rate
The current bit rate of the transmitter.
Definition: private/fax_modems.h:113
void v29_tx_set_get_bit(v29_tx_state_t *s, get_bit_func_t get_bit, void *user_data)
Change the get_bit function associated with a V.29 modem transmit context.
Definition: v29tx.c:310
int v17_rx_restart(v17_rx_state_t *s, int bit_rate, int short_train)
Reinitialise an existing V.17 modem receive context.
Definition: v17rx.c:1380
@ T30_SUPPORT_V27TER
Definition: t30.h:342
Definition: private/fax.h:36
hdlc_rx_state_t hdlc_rx
An HDLC context used when receiving HDLC messages.
Definition: private/fax_modems.h:48
#define HDLC_FRAMING_OK_THRESHOLD
Definition: t38_gateway.c:175
int span_log(logging_state_t *s, int level, const char *format,...)
Generate a log entry.
Definition: logging.c:84
modem_connect_tones_tx_state_t * modem_connect_tones_tx_init(modem_connect_tones_tx_state_t *s, int tone_type)
Initialise an instance of the modem connect tones generator.
Definition: modem_connect_tones.c:253
logging_state_t logging
Error and flow logging control.
Definition: private/t30.h:306
int fax_free(fax_state_t *s)
Free a FAX context.
Definition: fax.c:726
hdlc_rx_state_t * hdlc_rx_init(hdlc_rx_state_t *s, int crc32, int report_bad_frames, int framing_ok_threshold, hdlc_frame_handler_t handler, void *user_data)
Initialise an HDLC receiver context.
Definition: hdlc.c:327
Definition: private/t30.h:36
void silence_gen_alter(silence_gen_state_t *s, int silent_samples)
Alter the period of a silence generator context by a specified amount.
Definition: silence_gen.c:86
fsk_rx_state_t * fsk_rx_init(fsk_rx_state_t *s, const fsk_spec_t *spec, int framing_mode, put_bit_func_t put_bit, void *user_data)
Initialise an FSK modem receive context.
Definition: fsk.c:314
int rx_frame_received
True if a valid HDLC frame has been received in the current reception period.
Definition: private/t30.h:189
int v29_rx_restart(v29_rx_state_t *s, int bit_rate, int old_train)
Reinitialise an existing V.29 modem receive context.
Definition: v29rx.c:1072
t30_state_t * fax_get_t30_state(fax_state_t *s)
Get a pointer to the T.30 engine associated with a FAX context.
Definition: fax.c:591
fsk_tx_state_t * fsk_tx_init(fsk_tx_state_t *s, const fsk_spec_t *spec, get_bit_func_t get_bit, void *user_data)
Initialise an FSK modem transmit context.
Definition: fsk.c:153
int v27ter_tx_restart(v27ter_tx_state_t *s, int bit_rate, int tep)
Reinitialise an existing V.27ter modem transmit context.
Definition: v27ter_tx.c:390
void v17_tx_set_get_bit(v17_tx_state_t *s, get_bit_func_t get_bit, void *user_data)
Change the get_bit function associated with a V.17 modem transmit context.
Definition: v17tx.c:358
int transmit
If TRUE, transmission is in progress.
Definition: private/fax_modems.h:118
void fsk_rx_signal_cutoff(fsk_rx_state_t *s, float cutoff)
Adjust an FSK modem receive context's carrier detect power threshold.
Definition: fsk.c:238
int current_tx_type
The currently selected transmitter type.
Definition: private/fax_modems.h:88
int fax_release(fax_state_t *s)
Release a FAX context.
Definition: fax.c:719
fax_modems_state_t modems
The analogue modem front-end.
Definition: private/fax.h:41
SPAN_DECLARE_NONSTD(int) fax_rx(fax_state_t *s
Apply T.30 receive processing to a block of audio samples.
fsk_rx_state_t v21_rx
A V.21 FSK modem context used when receiving HDLC over V.21 messages.
Definition: private/fax_modems.h:54
int use_tep
Definition: private/fax_modems.h:37
int t30_set_supported_modems(t30_state_t *s, int supported_modems)
Specify supported modems.
Definition: t30_api.c:680
span_tx_handler_t * tx_handler
The current transmit signal handler.
Definition: private/fax_modems.h:104
hdlc_tx_state_t hdlc_tx
An HDLC context used when transmitting HDLC messages.
Definition: private/fax_modems.h:46
v17_rx_state_t v17_rx
A V.29 modem context used when receiving FAXes at 7200bps, 9600bps 12000bps or 14400bps.
Definition: private/fax_modems.h:62
fax_state_t * fax_init(fax_state_t *s, int calling_party)
Initialise a FAX context.
Definition: fax.c:664
int t30_restart(t30_state_t *s)
Restart a T.30 context.
Definition: t30.c:6287
logging_state_t * fax_get_logging_state(fax_state_t *s)
Get a pointer to the logging context associated with a FAX context.
Definition: fax.c:597
@ T30_SUPPORT_V17
Definition: t30.h:346
int current_rx_type
The currently selected receiver type.
Definition: private/fax_modems.h:86
int rx_trained
True if a modem has trained correctly.
Definition: private/t30.h:187
float v27ter_rx_signal_power(v27ter_rx_state_t *s)
Definition: v27ter_rx.c:152
Definition: private/logging.h:34
v8_state_t * v8_init(v8_state_t *s, int calling_party, v8_parms_t *parms, v8_result_handler_t result_handler, void *user_data)
Initialise a V.8 context.
Definition: v8.c:1073
int supported_modems
A bit mask of the currently supported modem types.
Definition: private/t30.h:52
modem_connect_tones_tx_state_t connect_tx
CED or CNG generator.
Definition: private/fax_modems.h:79
fsk_tx_state_t v21_tx
A V.21 FSK modem context used when transmitting HDLC over V.21 messages.
Definition: private/fax_modems.h:51
int v29_tx_restart(v29_tx_state_t *s, int bit_rate, int tep)
Reinitialise an existing V.29 modem transmit context.
Definition: v29tx.c:332
int hdlc_tx_flags(hdlc_tx_state_t *s, int len)
Transmit a specified quantity of flag octets, typically as a preamble.
Definition: hdlc.c:424
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.
Definition: t30.c:6327
float v17_rx_signal_power(v17_rx_state_t *s)
Definition: v17rx.c:182