Go to the documentation of this file.
28 #if !defined(_SPANDSP_FAX_TESTER_H_)
29 #define _SPANDSP_FAX_TESTER_H_
40 typedef void (*faxtester_flush_handler_t)(
faxtester_state_t *s,
void *user_data,
int which);
57 typedef void (*faxtester_front_end_step_complete_handler_t)(
faxtester_state_t *s,
void *user_data);
67 faxtester_flush_handler_t flush_handler;
68 void *flush_user_data;
76 faxtester_front_end_step_complete_handler_t front_end_step_complete_handler;
77 void *front_end_step_complete_user_data;
79 faxtester_front_end_step_complete_handler_t front_end_step_timeout_handler;
80 void *front_end_step_timeout_user_data;
82 const uint8_t *image_buffer;
105 int wait_for_silence;
108 int64_t tone_on_time;
117 #if defined(__cplusplus)
142 void faxtester_set_tx_type(
void *user_data,
int type,
int bit_rate,
int short_train,
int use_hdlc);
144 void faxtester_set_rx_type(
void *user_data,
int type,
int bit_rate,
int short_train,
int use_hdlc);
150 void faxtester_send_hdlc_msg(
faxtester_state_t *s,
const uint8_t *msg,
int len,
int crc_ok);
152 void faxtester_set_flush_handler(
faxtester_state_t *s, faxtester_flush_handler_t handler,
void *user_data);
172 void faxtester_set_front_end_step_complete_handler(
faxtester_state_t *s, faxtester_front_end_step_complete_handler_t handler,
void *user_data);
174 void faxtester_set_front_end_step_timeout_handler(
faxtester_state_t *s, faxtester_front_end_step_complete_handler_t handler,
void *user_data);
178 void faxtester_set_non_ecm_image_buffer(
faxtester_state_t *s,
const uint8_t *buf,
int len);
180 void faxtester_set_ecm_image_buffer(
faxtester_state_t *s,
const uint8_t *buf,
int len,
int block,
int frame_size,
int crc_hit);
203 #if defined(__cplusplus)
v27ter_tx_state_t * v27ter_tx_init(v27ter_tx_state_t *s, int bit_rate, int tep, get_bit_func_t get_bit, void *user_data)
Initialise a V.27ter modem transmit context.
Definition: v27ter_tx.c:413
logging_state_t logging
Error and flow logging control.
Definition: fax_tester.h:114
float v29_rx_signal_power(v29_rx_state_t *s)
Definition: v29rx.c:165
int faxtester_release(faxtester_state_t *s)
Release a FAX context.
Definition: fax_tester.c:715
int faxtester_free(faxtester_state_t *s)
Free a FAX context.
Definition: fax_tester.c:721
@ 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
v29_rx_state_t * v29_rx_init(v29_rx_state_t *s, int bit_rate, put_bit_func_t put_bit, void *user_data)
Initialise a V.29 modem receive context.
Definition: v29rx.c:1171
faxtester_state_t * faxtester_init(faxtester_state_t *s, int calling_party)
Initialise a FAX context.
Definition: fax_tester.c:696
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
Definition: fax_tester.h:63
void fsk_tx_set_modem_status_handler(fsk_tx_state_t *s, modem_status_func_t handler, void *user_data)
Change the modem status report function associated with an FSK modem transmit context.
Definition: fsk.c:231
void faxtester_set_tep_mode(faxtester_state_t *s, int use_tep)
Select whether TEP will be sent for the image modems.
Definition: fax_tester.c:633
void faxtester_set_tep_mode(faxtester_state_t *s, int use_tep)
Select whether TEP will be sent for the image modems.
Definition: fax_tester.c:633
hdlc_tx_state_t * hdlc_tx_init(hdlc_tx_state_t *s, int crc32, int inter_frame_flags, int progressive, hdlc_underflow_handler_t handler, void *user_data)
Initialise an HDLC transmitter context.
Definition: hdlc.c:626
int current_rx_type
The currently select receiver type.
Definition: fax_tester.h:101
@ SIG_STATUS_CARRIER_UP
The carrier signal is up. This merely indicates that carrier energy has been seen....
Definition: async.h:58
void v27ter_tx_set_modem_status_handler(v27ter_tx_state_t *s, modem_status_func_t handler, void *user_data)
Change the modem status report function associated with a V.27ter modem transmit context.
Definition: v27ter_tx.c:377
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
void v29_rx_signal_cutoff(v29_rx_state_t *s, float cutoff)
Definition: v29rx.c:171
int faxtester_tx(faxtester_state_t *s, int16_t *amp, int max_len)
Apply T.30 transmit processing to generate a block of audio samples.
Definition: fax_tester.c:406
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 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
int rx_trained
TRUE if a modem has trained correctly.
Definition: private/fax_modems.h:93
int rx_signal_present
TRUE if a carrier is present. Otherwise FALSE.
Definition: private/fax_modems.h:91
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
const char * signal_status_to_str(int status)
Convert a signal status to a short text description.
Definition: async.c:42
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
int faxtester_release(faxtester_state_t *s)
Release a FAX context.
Definition: fax_tester.c:715
faxtester_real_time_frame_handler_t real_time_frame_handler
A pointer to a callback routine to be called when frames are exchanged.
Definition: fax_tester.h:72
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
void v17_tx_set_modem_status_handler(v17_tx_state_t *s, modem_status_func_t handler, void *user_data)
Change the modem status report function associated with a V.17 modem transmit context.
Definition: v17tx.c:367
void v29_tx_set_modem_status_handler(v29_tx_state_t *s, modem_status_func_t handler, void *user_data)
Change the modem status report function associated with a V.29 modem transmit context.
Definition: v29tx.c:319
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
silence_gen_state_t silence_gen
Used to insert timed silences.
Definition: private/fax_modems.h:77
int transmit_on_idle
Definition: private/fax_modems.h:43
@ MODEM_CONNECT_TONES_NONE
This is reported when a tone stops.
Definition: modem_connect_tones.h:59
int current_tx_type
The currently select transmitter type.
Definition: fax_tester.h:103
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(* faxtester_real_time_frame_handler_t)(faxtester_state_t *s, void *user_data, int direction, const uint8_t *msg, int len)
FAX tester real time frame handler.
Definition: fax_tester.h:51
Definition: private/fax_modems.h:35
@ SIG_STATUS_SHUTDOWN_COMPLETE
A modem has completed its task, and shut down.
Definition: async.h:77
@ SIG_STATUS_TRAINING_FAILED
The modem has failed to train.
Definition: async.h:67
int(* get_bit_func_t)(void *user_data)
Definition: async.h:108
int faxtester_rx(faxtester_state_t *s, int16_t *amp, int len)
Apply T.30 receive processing to a block of audio samples.
Definition: fax_tester.c:386
span_rx_handler_t * rx_handler
The current receive signal handler.
Definition: private/fax_modems.h:98
@ SIG_STATUS_CARRIER_DOWN
The carrier signal has dropped.
Definition: async.h:54
int faxtester_rx(faxtester_state_t *s, int16_t *amp, int len)
Apply T.30 receive processing to a block of audio samples.
Definition: fax_tester.c:386
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
void faxtester_set_transmit_on_idle(faxtester_state_t *s, int transmit_on_idle)
Select whether silent audio will be sent when FAX transmit is idle.
Definition: fax_tester.c:627
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
void * real_time_frame_user_data
An opaque pointer supplied in real time frame callbacks.
Definition: fax_tester.h:74
faxtester_state_t * faxtester_init(faxtester_state_t *s, int calling_party)
Initialise a FAX context.
Definition: fax_tester.c:696
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
v27ter_rx_state_t * v27ter_rx_init(v27ter_rx_state_t *s, int bit_rate, put_bit_func_t put_bit, void *user_data)
Initialise a V.27ter modem receive context.
Definition: v27ter_rx.c:1104
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
v29_tx_state_t * v29_tx_init(v29_tx_state_t *s, int bit_rate, int tep, get_bit_func_t get_bit, void *user_data)
Initialise a V.29 modem transmit context.
Definition: v29tx.c:369
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 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
void faxtester_set_transmit_on_idle(faxtester_state_t *s, int transmit_on_idle)
Select whether silent audio will be sent when FAX transmit is idle.
Definition: fax_tester.c:627
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 short_train
TRUE is the short training sequence should be used.
Definition: fax_tester.h:98
int faxtester_tx(faxtester_state_t *s, int16_t *amp, int max_len)
Apply T.30 transmit processing to generate a block of audio samples.
Definition: fax_tester.c:406
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
modem_connect_tones_rx_state_t connect_rx
CED or CNG detector.
Definition: private/fax_modems.h:81
int hdlc_tx_corrupt_frame(hdlc_tx_state_t *s)
Corrupt the frame currently being transmitted, by giving it the wrong CRC.
Definition: hdlc.c:450
silence_gen_state_t * silence_gen_init(silence_gen_state_t *s, int silent_samples)
Initialise a timed silence generator context.
Definition: silence_gen.c:118
xmlNodePtr cur
Pointer to our current step in the test.
Definition: fax_tester.h:65
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
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
modem_connect_tones_rx_state_t * modem_connect_tones_rx_init(modem_connect_tones_rx_state_t *s, int tone_type, tone_report_func_t tone_callback, void *user_data)
Initialise an instance of the modem connect tones detector.
Definition: modem_connect_tones.c:706
v17_tx_state_t * v17_tx_init(v17_tx_state_t *s, int bit_rate, int tep, get_bit_func_t get_bit, void *user_data)
Initialise a V.17 modem transmit context.
Definition: v17tx.c:431
@ SIG_STATUS_TRAINING_SUCCEEDED
The modem has trained, and is ready for data exchange.
Definition: async.h:65
float v27ter_rx_signal_power(v27ter_rx_state_t *s)
Definition: v27ter_rx.c:152
Definition: private/logging.h:34
int hdlc_tx_frame(hdlc_tx_state_t *s, const uint8_t *frame, size_t len)
Transmit a frame.
Definition: hdlc.c:389
int faxtester_free(faxtester_state_t *s)
Free a FAX context.
Definition: fax_tester.c:721
modem_connect_tones_tx_state_t connect_tx
CED or CNG generator.
Definition: private/fax_modems.h:79
int transmit
Definition: fax_tester.h:95
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
v17_rx_state_t * v17_rx_init(v17_rx_state_t *s, int bit_rate, put_bit_func_t put_bit, void *user_data)
Initialise a V.17 modem receive context.
Definition: v17rx.c:1517
@ SIG_STATUS_END_OF_DATA
The data stream has ended.
Definition: async.h:71
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
float v17_rx_signal_power(v17_rx_state_t *s)
Definition: v17rx.c:182