spandsp  0.0.6
private/fax_modems.h
Go to the documentation of this file.
1 /*
2  * SpanDSP - a series of DSP components for telephony
3  *
4  * private/fax_modems.h - definitions for the analogue modem set for fax processing
5  *
6  * Written by Steve Underwood <steveu@coppice.org>
7  *
8  * Copyright (C) 2008 Steve Underwood
9  *
10  * All rights reserved.
11  *
12  * This program is free software; you can redistribute it and/or modify
13  * it under the terms of the GNU Lesser General Public License version 2.1,
14  * as published by the Free Software Foundation.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Lesser General Public License for more details.
20  *
21  * You should have received a copy of the GNU Lesser General Public
22  * License along with this program; if not, write to the Free Software
23  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24  */
25 
26 /*! \file */
27 
28 #if !defined(_SPANDSP_PRIVATE_FAX_MODEMS_H_)
29 #define _SPANDSP_PRIVATE_FAX_MODEMS_H_
30 
31 /*!
32  The set of modems needed for FAX, plus the auxilliary stuff, like tone generation.
33 */
35 {
36  /*! TRUE is talker echo protection should be sent for the image modems */
37  int use_tep;
38 
39  /*! If TRUE, transmit silence when there is nothing else to transmit. If FALSE return only
40  the actual generated audio. Note that this only affects untimed silences. Timed silences
41  (e.g. the 75ms silence between V.21 and a high speed modem) will alway be transmitted as
42  silent audio. */
44 
45  /*! \brief An HDLC context used when transmitting HDLC messages. */
47  /*! \brief An HDLC context used when receiving HDLC messages. */
49  /*! \brief A V.21 FSK modem context used when transmitting HDLC over V.21
50  messages. */
52  /*! \brief A V.21 FSK modem context used when receiving HDLC over V.21
53  messages. */
55  struct
56  {
57  /*! \brief A V.17 modem context used when sending FAXes at 7200bps, 9600bps
58  12000bps or 14400bps */
60  /*! \brief A V.29 modem context used when receiving FAXes at 7200bps, 9600bps
61  12000bps or 14400bps */
63  /*! \brief A V.29 modem context used when sending FAXes at 7200bps or
64  9600bps */
66  /*! \brief A V.29 modem context used when receiving FAXes at 7200bps or
67  9600bps */
69  /*! \brief A V.27ter modem context used when sending FAXes at 2400bps or
70  4800bps */
72  /*! \brief A V.27ter modem context used when receiving FAXes at 2400bps or
73  4800bps */
75  } fast_modems;
76  /*! \brief Used to insert timed silences. */
78  /*! \brief CED or CNG generator */
80  /*! \brief CED or CNG detector */
82  /*! \brief */
83  dc_restore_state_t dc_restore;
84 
85  /*! \brief The currently selected receiver type */
87  /*! \brief The currently selected transmitter type */
89 
90  /*! \brief TRUE if a carrier is present. Otherwise FALSE. */
92  /*! \brief TRUE if a modem has trained correctly. */
94  /*! \brief TRUE if an HDLC frame has been received correctly. */
96 
97  /*! \brief The current receive signal handler */
98  span_rx_handler_t *rx_handler;
99  /*! \brief The current receive missing signal fill-in handler */
100  span_rx_fillin_handler_t *rx_fillin_handler;
101  void *rx_user_data;
102 
103  /*! \brief The current transmit signal handler */
104  span_tx_handler_t *tx_handler;
105  void *tx_user_data;
106 
107  /*! \brief The next transmit signal handler, for two stage transmit operations.
108  E.g. a short silence followed by a modem signal. */
109  span_tx_handler_t *next_tx_handler;
110  void *next_tx_user_data;
111 
112  /*! \brief The current bit rate of the transmitter. */
114  /*! \brief The current bit rate of the receiver. */
116 
117  /*! \brief If TRUE, transmission is in progress */
118  int transmit;
119  /*! \brief Audio logging file handle for received audio. */
121  /*! \brief Audio logging file handle for transmitted audio. */
123  /*! \brief Error and flow logging control */
125 };
126 
127 #endif
128 /*- End of file ------------------------------------------------------------*/
span_rx_fillin_handler_t * rx_fillin_handler
The current receive missing signal fill-in handler.
Definition: private/fax_modems.h:100
span_tx_handler_t * tx_handler
The current transmit signal handler.
Definition: private/fax_modems.h:104
Definition: private/silence_gen.h:29
logging_state_t logging
Error and flow logging control.
Definition: private/fax_modems.h:124
Definition: private/v29rx.h:43
int transmit_on_idle
Definition: private/fax_modems.h:43
int use_tep
Definition: private/fax_modems.h:37
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 audio_rx_log
Audio logging file handle for received audio.
Definition: private/fax_modems.h:120
Definition: private/v29tx.h:36
int rx_frame_received
TRUE if an HDLC frame has been received correctly.
Definition: private/fax_modems.h:95
Definition: private/v17rx.h:54
Definition: private/hdlc.h:91
Definition: private/fsk.h:58
Definition: private/v17tx.h:38
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 rx_signal_present
TRUE if a carrier is present. Otherwise FALSE.
Definition: private/fax_modems.h:91
Definition: private/fsk.h:33
span_rx_handler_t * rx_handler
The current receive signal handler.
Definition: private/fax_modems.h:98
int audio_tx_log
Audio logging file handle for transmitted audio.
Definition: private/fax_modems.h:122
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
silence_gen_state_t silence_gen
Used to insert timed silences.
Definition: private/fax_modems.h:77
int rx_trained
TRUE if a modem has trained correctly.
Definition: private/fax_modems.h:93
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 tx_bit_rate
The current bit rate of the transmitter.
Definition: private/fax_modems.h:113
Definition: dc_restore.h:57
Definition: private/fax_modems.h:34
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
Definition: private/modem_connect_tones.h:37
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
Definition: private/v27ter_tx.h:36
int transmit
If TRUE, transmission is in progress.
Definition: private/fax_modems.h:118
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
Definition: private/logging.h:33
hdlc_rx_state_t hdlc_rx
An HDLC context used when receiving HDLC messages.
Definition: private/fax_modems.h:48
Definition: private/modem_connect_tones.h:57
Definition: private/v27ter_rx.h:51
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
hdlc_tx_state_t hdlc_tx
An HDLC context used when transmitting HDLC messages.
Definition: private/fax_modems.h:46
Definition: private/hdlc.h:32
int rx_bit_rate
The current bit rate of the receiver.
Definition: private/fax_modems.h:115
modem_connect_tones_rx_state_t connect_rx
CED or CNG detector.
Definition: private/fax_modems.h:81
int current_tx_type
The currently selected transmitter type.
Definition: private/fax_modems.h:88
int current_rx_type
The currently selected receiver type.
Definition: private/fax_modems.h:86
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
modem_connect_tones_tx_state_t connect_tx
CED or CNG generator.
Definition: private/fax_modems.h:79