spandsp 0.0.6

private/t30.h
Go to the documentation of this file.
1/*
2 * SpanDSP - a series of DSP components for telephony
3 *
4 * private/t30.h - definitions for T.30 fax processing
5 *
6 * Written by Steve Underwood <steveu@coppice.org>
7 *
8 * Copyright (C) 2003 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_T30_H_)
29#define _SPANDSP_PRIVATE_T30_H_
30
31/*!
32 T.30 FAX channel descriptor. This defines the state of a single working
33 instance of a T.30 FAX channel.
34*/
35 struct t30_state_s
36{
37 /*! \brief T.4 context for reading or writing image data. */
38 union
39 {
40 t4_rx_state_t rx;
41 t4_tx_state_t tx;
42 } t4;
43 /*! \brief The type of FAX operation currently in progress */
44 int operation_in_progress;
45
46 /*! \brief True if behaving as the calling party */
47 int calling_party;
48
49 /*! \brief Internet aware FAX mode bit mask. */
50 int iaf;
51 /*! \brief A bit mask of the currently supported modem types. */
52 int supported_modems;
53 /*! \brief A bit mask of the currently supported image compression modes. */
54 int supported_compressions;
55 /*! \brief A bit mask of the currently supported image resolutions. */
56 int supported_resolutions;
57 /*! \brief A bit mask of the currently supported image sizes. */
58 int supported_image_sizes;
59 /*! \brief A bit mask of the currently supported T.30 special features. */
60 int supported_t30_features;
61 /*! \brief True is ECM mode handling is enabled. */
62 int ecm_allowed;
63 /*! \brief True if we are capable of retransmitting pages */
64 int retransmit_capable;
65
66 /*! \brief The received DCS, formatted as an ASCII string, for inclusion
67 in the TIFF file. */
68 char rx_dcs_string[T30_MAX_DIS_DTC_DCS_LEN*3 + 1];
69 /*! \brief The text which will be used in FAX page header. No text results
70 in no header line. */
71 char header_info[T30_MAX_PAGE_HEADER_INFO + 1];
72 /*! \brief True for FAX page headers to overlay (i.e. replace) the beginning of the
73 page image. False for FAX page headers to add to the overall length of
74 the page. */
75 int header_overlays_image;
76 /*! \brief Use private timezone if true */
77 int use_own_tz;
78 /*! \brief Optional per instance time zone for the FAX page header timestamp. */
79 tz_t tz;
80
81 /*! \brief True if remote T.30 procedural interrupts are allowed. */
82 int remote_interrupts_allowed;
83
84 /*! \brief The information fields received. */
85 t30_exchanged_info_t rx_info;
86 /*! \brief The information fields to be transmitted. */
87 t30_exchanged_info_t tx_info;
88 /*! \brief The country of origin of the remote machine, if known, else NULL. */
89 const char *country;
90 /*! \brief The vendor of the remote machine, if known, else NULL. */
91 const char *vendor;
92 /*! \brief The model of the remote machine, if known, else NULL. */
93 const char *model;
94
95 /*! \brief A pointer to a callback routine to be called when phase B events
96 occur. */
97 t30_phase_b_handler_t *phase_b_handler;
98 /*! \brief An opaque pointer supplied in event B callbacks. */
99 void *phase_b_user_data;
100 /*! \brief A pointer to a callback routine to be called when phase D events
101 occur. */
102 t30_phase_d_handler_t *phase_d_handler;
103 /*! \brief An opaque pointer supplied in event D callbacks. */
104 void *phase_d_user_data;
105 /*! \brief A pointer to a callback routine to be called when phase E events
106 occur. */
107 t30_phase_e_handler_t *phase_e_handler;
108 /*! \brief An opaque pointer supplied in event E callbacks. */
109 void *phase_e_user_data;
110 /*! \brief A pointer to a callback routine to be called when frames are
111 exchanged. */
112 t30_real_time_frame_handler_t *real_time_frame_handler;
113 /*! \brief An opaque pointer supplied in real time frame callbacks. */
114 void *real_time_frame_user_data;
115
116 /*! \brief A pointer to a callback routine to be called when document events
117 (e.g. end of transmitted document) occur. */
118 t30_document_handler_t *document_handler;
119 /*! \brief An opaque pointer supplied in document callbacks. */
120 void *document_user_data;
121
122 /*! \brief The handler for changes to the receive mode */
123 t30_set_handler_t *set_rx_type_handler;
124 /*! \brief An opaque pointer passed to the handler for changes to the receive mode */
125 void *set_rx_type_user_data;
126 /*! \brief The handler for changes to the transmit mode */
127 t30_set_handler_t *set_tx_type_handler;
128 /*! \brief An opaque pointer passed to the handler for changes to the transmit mode */
129 void *set_tx_type_user_data;
130
131 /*! \brief The transmitted HDLC frame handler. */
132 t30_send_hdlc_handler_t *send_hdlc_handler;
133 /*! \brief An opaque pointer passed to the transmitted HDLC frame handler. */
134 void *send_hdlc_user_data;
135
136 /*! \brief The DIS code for the minimum scan row time we require. This is usually 0ms,
137 but if we are trying to simulate another type of FAX machine, we may need a non-zero
138 value here. */
139 uint8_t local_min_scan_time_code;
140
141 /*! \brief The current T.30 phase. */
142 int phase;
143 /*! \brief The T.30 phase to change to when the current phase ends. */
144 int next_phase;
145 /*! \brief The current state of the T.30 state machine. */
146 int state;
147 /*! \brief The step in sending a sequence of HDLC frames. */
148 int step;
149
150 /*! \brief The preparation buffer for the DCS message to be transmitted. */
151 uint8_t dcs_frame[T30_MAX_DIS_DTC_DCS_LEN];
152 /*! \brief The length of the DCS message to be transmitted. */
153 int dcs_len;
154 /*! \brief The preparation buffer for DIS or DTC message to be transmitted. */
155 uint8_t local_dis_dtc_frame[T30_MAX_DIS_DTC_DCS_LEN];
156 /*! \brief The length of the DIS or DTC message to be transmitted. */
157 int local_dis_dtc_len;
158 /*! \brief The last DIS or DTC message received form the far end. */
159 uint8_t far_dis_dtc_frame[T30_MAX_DIS_DTC_DCS_LEN];
160 /*! \brief The length of the last DIS or DTC message received form the far end. */
161 int far_dis_dtc_len;
162 /*! \brief True if a valid DIS has been received from the far end. */
163 int dis_received;
164
165 /*! \brief True if the short training sequence should be used. */
166 int short_train;
167
168 /*! \brief True if an image carrier appears to have been received, even if it did not successfully
169 train. */
170 int image_carrier_attempted;
171
172 /*! \brief A count of the number of bits in the trainability test. This counts down to zero when
173 sending TCF, and counts up when receiving it. */
174 int tcf_test_bits;
175 /*! \brief The current count of consecutive received zero bits, during the trainability test. */
176 int tcf_current_zeros;
177 /*! \brief The maximum consecutive received zero bits seen to date, during the trainability test. */
178 int tcf_most_zeros;
179
180 /*! \brief The current fallback step for the fast message transfer modem. */
181 int current_fallback;
182 /*! \brief The subset of supported modems allowed at the current time, allowing for negotiation. */
183 int current_permitted_modems;
184 /*! \brief True if a carrier is present. Otherwise false. */
185 int rx_signal_present;
186 /*! \brief True if a modem has trained correctly. */
187 int rx_trained;
188 /*! \brief True if a valid HDLC frame has been received in the current reception period. */
189 int rx_frame_received;
190
191 /*! \brief Current reception mode. */
192 int current_rx_type;
193 /*! \brief Current transmission mode. */
194 int current_tx_type;
195
196 /*! \brief T0 is the answer timeout when calling another FAX machine.
197 Placing calls is handled outside the FAX processing, but this timeout keeps
198 running until V.21 modulation is sent or received.
199 T1 is the remote terminal identification timeout (in audio samples). */
200 int timer_t0_t1;
201 /*! \brief T2, T2A and T2B are the HDLC command timeouts.
202 T4, T4A and T4B are the HDLC response timeouts (in audio samples). */
203 int timer_t2_t4;
204 /*! \brief A value specifying which of the possible timers is currently running in timer_t2_t4 */
205 int timer_t2_t4_is;
206 /*! \brief Procedural interrupt timeout (in audio samples). */
207 int timer_t3;
208 /*! \brief This is only used in error correcting mode. */
209 int timer_t5;
210 /*! \brief This is only used in full duplex (e.g. ISDN) modes. */
211 int timer_t6;
212 /*! \brief This is only used in full duplex (e.g. ISDN) modes. */
213 int timer_t7;
214 /*! \brief This is only used in full duplex (e.g. ISDN) modes. */
215 int timer_t8;
216
217 /*! \brief True once the far end FAX entity has been detected. */
218 int far_end_detected;
219
220 /*! \brief True once the end of procedure condition has been detected. */
221 int end_of_procedure_detected;
222
223 /*! \brief True if a local T.30 interrupt is pending. */
224 int local_interrupt_pending;
225 /*! \brief The image coding being used on the line. */
226 int line_encoding;
227 /*! \brief The image coding being used for output files. */
228 int output_encoding;
229 /*! \brief The current DCS message minimum scan time code. */
230 uint8_t min_scan_time_code;
231 /*! \brief The X direction resolution of the current image, in pixels per metre. */
232 int x_resolution;
233 /*! \brief The Y direction resolution of the current image, in pixels per metre. */
234 int y_resolution;
235 /*! \brief The width of the current image, in pixels. */
236 t4_image_width_t image_width;
237 /*! \brief Current number of retries of the action in progress. */
238 int retries;
239 /*! \brief True if error correcting mode is used. */
240 int error_correcting_mode;
241 /*! \brief The number of HDLC frame retries, if error correcting mode is used. */
242 int error_correcting_mode_retries;
243 /*! \brief The current count of consecutive T30_PPR messages. */
244 int ppr_count;
245 /*! \brief The current count of consecutive T30_RNR messages. */
246 int receiver_not_ready_count;
247 /*! \brief The number of octets to be used per ECM frame. */
248 int octets_per_ecm_frame;
249 /*! \brief The ECM partial page buffer. */
250 uint8_t ecm_data[256][260];
251 /*! \brief The lengths of the frames in the ECM partial page buffer. */
252 int16_t ecm_len[256];
253 /*! \brief A bit map of the OK ECM frames, constructed as a PPR frame. */
254 uint8_t ecm_frame_map[3 + 32];
255
256 /*! \brief The current page number for receiving, in ECM or non-ECM mode. This is reset at the start of a call. */
257 int rx_page_number;
258 /*! \brief The current page number for sending, in ECM or non-ECM mode. This is reset at the start of a call. */
259 int tx_page_number;
260 /*! \brief The current block number, in ECM mode */
261 int ecm_block;
262 /*! \brief The number of frames in the current block number, in ECM mode */
263 int ecm_frames;
264 /*! \brief The number of frames sent in the current burst of image transmission, in ECM mode */
265 int ecm_frames_this_tx_burst;
266 /*! \brief The current ECM frame, during ECM transmission. */
267 int ecm_current_tx_frame;
268 /*! \brief True if we are at the end of an ECM page to se sent - i.e. there are no more
269 partial pages still to come. */
270 int ecm_at_page_end;
271
272 /*! \brief The last result for a received non-ECM page - T30_MPS, T30_RTP, or T30_RTN. */
273 int last_rx_page_result;
274
275 /*! \brief The transmission step queued to follow the one in progress. */
276 int next_tx_step;
277 /*! \brief The FCF for the next receive step. */
278 uint8_t next_rx_step;
279 /*! \brief Image file name for image reception. */
280 char rx_file[256];
281 /*! \brief The last page we are prepared accept for a received image file. -1 means no restriction. */
282 int rx_stop_page;
283 /*! \brief Image file name to be sent. */
284 char tx_file[256];
285 /*! \brief The first page to be sent from the image file. -1 means no restriction. */
286 int tx_start_page;
287 /*! \brief The last page to be sent from the image file. -1 means no restriction. */
288 int tx_stop_page;
289 /*! \brief The current completion status. */
290 int current_status;
291
292 /*! \brief the FCF2 field of the last PPS message we received. */
293 uint8_t last_pps_fcf2;
294 /*! \brief True if all frames of the current received ECM block are now OK */
295 int rx_ecm_block_ok;
296 /*! \brief A count of successfully received ECM frames, to assess progress as a basis for
297 deciding whether to continue error correction when PPRs keep repeating. */
298 int ecm_progress;
299
300 /*! \brief The number of RTP events */
301 int rtp_events;
302 /*! \brief The number of RTN events */
303 int rtn_events;
304
305 /*! \brief Error and flow logging control */
306 logging_state_t logging;
307};
308
309#endif
310/*- End of file ------------------------------------------------------------*/
logging_state_t
struct logging_state_s logging_state_t
Definition logging.h:75
t30_exchanged_info_t
Definition t30.h:474
t30_state_s
Definition private/t30.h:36
t30_state_s::min_scan_time_code
uint8_t min_scan_time_code
The current DCS message minimum scan time code.
Definition private/t30.h:230
t30_state_s::tx_file
char tx_file[256]
Image file name to be sent.
Definition private/t30.h:284
t30_state_s::image_carrier_attempted
int image_carrier_attempted
True if an image carrier appears to have been received, even if it did not successfully train.
Definition private/t30.h:170
t30_state_s::error_correcting_mode_retries
int error_correcting_mode_retries
The number of HDLC frame retries, if error correcting mode is used.
Definition private/t30.h:242
t30_state_s::phase_e_handler
t30_phase_e_handler_t * phase_e_handler
A pointer to a callback routine to be called when phase E events occur.
Definition private/t30.h:107
t30_state_s::timer_t8
int timer_t8
This is only used in full duplex (e.g. ISDN) modes.
Definition private/t30.h:215
t30_state_s::header_info
char header_info[T30_MAX_PAGE_HEADER_INFO+1]
The text which will be used in FAX page header. No text results in no header line.
Definition private/t30.h:71
t30_state_s::real_time_frame_handler
t30_real_time_frame_handler_t * real_time_frame_handler
A pointer to a callback routine to be called when frames are exchanged.
Definition private/t30.h:112
t30_state_s::rx_page_number
int rx_page_number
The current page number for receiving, in ECM or non-ECM mode. This is reset at the start of a call.
Definition private/t30.h:257
t30_state_s::tx_info
t30_exchanged_info_t tx_info
The information fields to be transmitted.
Definition private/t30.h:87
t30_state_s::ecm_len
int16_t ecm_len[256]
The lengths of the frames in the ECM partial page buffer.
Definition private/t30.h:252
t30_state_s::image_width
t4_image_width_t image_width
The width of the current image, in pixels.
Definition private/t30.h:236
t30_state_s::retransmit_capable
int retransmit_capable
True if we are capable of retransmitting pages.
Definition private/t30.h:64
t30_state_s::output_encoding
int output_encoding
The image coding being used for output files.
Definition private/t30.h:228
t30_state_s::ecm_frames
int ecm_frames
The number of frames in the current block number, in ECM mode.
Definition private/t30.h:263
t30_state_s::tcf_test_bits
int tcf_test_bits
A count of the number of bits in the trainability test. This counts down to zero when sending TCF,...
Definition private/t30.h:174
t30_state_s::last_pps_fcf2
uint8_t last_pps_fcf2
the FCF2 field of the last PPS message we received.
Definition private/t30.h:293
t30_state_s::ecm_allowed
int ecm_allowed
True is ECM mode handling is enabled.
Definition private/t30.h:62
t30_state_s::current_fallback
int current_fallback
The current fallback step for the fast message transfer modem.
Definition private/t30.h:181
t30_state_s::phase
int phase
The current T.30 phase.
Definition private/t30.h:142
t30_state_s::timer_t6
int timer_t6
This is only used in full duplex (e.g. ISDN) modes.
Definition private/t30.h:211
t30_state_s::phase_d_user_data
void * phase_d_user_data
An opaque pointer supplied in event D callbacks.
Definition private/t30.h:104
t30_state_s::ecm_progress
int ecm_progress
A count of successfully received ECM frames, to assess progress as a basis for deciding whether to co...
Definition private/t30.h:298
t30_state_s::tx_stop_page
int tx_stop_page
The last page to be sent from the image file. -1 means no restriction.
Definition private/t30.h:288
t30_state_s::octets_per_ecm_frame
int octets_per_ecm_frame
The number of octets to be used per ECM frame.
Definition private/t30.h:248
t30_state_s::phase_b_handler
t30_phase_b_handler_t * phase_b_handler
A pointer to a callback routine to be called when phase B events occur.
Definition private/t30.h:97
t30_state_s::receiver_not_ready_count
int receiver_not_ready_count
The current count of consecutive T30_RNR messages.
Definition private/t30.h:246
t30_state_s::t4
union t30_state_s::@225245317153363063223153143037050306327210240005 t4
T.4 context for reading or writing image data.
t30_state_s::ecm_frame_map
uint8_t ecm_frame_map[3+32]
A bit map of the OK ECM frames, constructed as a PPR frame.
Definition private/t30.h:254
t30_state_s::phase_d_handler
t30_phase_d_handler_t * phase_d_handler
A pointer to a callback routine to be called when phase D events occur.
Definition private/t30.h:102
t30_state_s::timer_t2_t4
int timer_t2_t4
T2, T2A and T2B are the HDLC command timeouts. T4, T4A and T4B are the HDLC response timeouts (in aud...
Definition private/t30.h:203
t30_state_s::retries
int retries
Current number of retries of the action in progress.
Definition private/t30.h:238
t30_state_s::send_hdlc_handler
t30_send_hdlc_handler_t * send_hdlc_handler
The transmitted HDLC frame handler.
Definition private/t30.h:132
t30_state_s::rtn_events
int rtn_events
The number of RTN events.
Definition private/t30.h:303
t30_state_s::dcs_frame
uint8_t dcs_frame[T30_MAX_DIS_DTC_DCS_LEN]
The preparation buffer for the DCS message to be transmitted.
Definition private/t30.h:151
t30_state_s::ecm_frames_this_tx_burst
int ecm_frames_this_tx_burst
The number of frames sent in the current burst of image transmission, in ECM mode.
Definition private/t30.h:265
t30_state_s::end_of_procedure_detected
int end_of_procedure_detected
True once the end of procedure condition has been detected.
Definition private/t30.h:221
t30_state_s::x_resolution
int x_resolution
The X direction resolution of the current image, in pixels per metre.
Definition private/t30.h:232
t30_state_s::current_status
int current_status
The current completion status.
Definition private/t30.h:290
t30_state_s::tz
tz_t tz
Optional per instance time zone for the FAX page header timestamp.
Definition private/t30.h:79
t30_state_s::short_train
int short_train
True if the short training sequence should be used.
Definition private/t30.h:166
t30_state_s::supported_modems
int supported_modems
A bit mask of the currently supported modem types.
Definition private/t30.h:52
t30_state_s::country
const char * country
The country of origin of the remote machine, if known, else NULL.
Definition private/t30.h:89
t30_state_s::iaf
int iaf
Internet aware FAX mode bit mask.
Definition private/t30.h:50
t30_state_s::last_rx_page_result
int last_rx_page_result
The last result for a received non-ECM page - T30_MPS, T30_RTP, or T30_RTN.
Definition private/t30.h:273
t30_state_s::use_own_tz
int use_own_tz
Use private timezone if true.
Definition private/t30.h:77
t30_state_s::rx_signal_present
int rx_signal_present
True if a carrier is present. Otherwise false.
Definition private/t30.h:185
t30_state_s::line_encoding
int line_encoding
The image coding being used on the line.
Definition private/t30.h:226
t30_state_s::timer_t7
int timer_t7
This is only used in full duplex (e.g. ISDN) modes.
Definition private/t30.h:213
t30_state_s::next_phase
int next_phase
The T.30 phase to change to when the current phase ends.
Definition private/t30.h:144
t30_state_s::ecm_at_page_end
int ecm_at_page_end
True if we are at the end of an ECM page to se sent - i.e. there are no more partial pages still to c...
Definition private/t30.h:270
t30_state_s::rx_trained
int rx_trained
True if a modem has trained correctly.
Definition private/t30.h:187
t30_state_s::timer_t0_t1
int timer_t0_t1
T0 is the answer timeout when calling another FAX machine. Placing calls is handled outside the FAX p...
Definition private/t30.h:200
t30_state_s::timer_t5
int timer_t5
This is only used in error correcting mode.
Definition private/t30.h:209
t30_state_s::real_time_frame_user_data
void * real_time_frame_user_data
An opaque pointer supplied in real time frame callbacks.
Definition private/t30.h:114
t30_state_s::supported_t30_features
int supported_t30_features
A bit mask of the currently supported T.30 special features.
Definition private/t30.h:60
t30_state_s::rx_frame_received
int rx_frame_received
True if a valid HDLC frame has been received in the current reception period.
Definition private/t30.h:189
t30_state_s::timer_t3
int timer_t3
Procedural interrupt timeout (in audio samples).
Definition private/t30.h:207
t30_state_s::supported_resolutions
int supported_resolutions
A bit mask of the currently supported image resolutions.
Definition private/t30.h:56
t30_state_s::rx_info
t30_exchanged_info_t rx_info
The information fields received.
Definition private/t30.h:85
t30_state_s::tx_page_number
int tx_page_number
The current page number for sending, in ECM or non-ECM mode. This is reset at the start of a call.
Definition private/t30.h:259
t30_state_s::logging
logging_state_t logging
Error and flow logging control.
Definition private/t30.h:306
t30_state_s::far_dis_dtc_frame
uint8_t far_dis_dtc_frame[T30_MAX_DIS_DTC_DCS_LEN]
The last DIS or DTC message received form the far end.
Definition private/t30.h:159
t30_state_s::header_overlays_image
int header_overlays_image
True for FAX page headers to overlay (i.e. replace) the beginning of the page image....
Definition private/t30.h:75
t30_state_s::document_user_data
void * document_user_data
An opaque pointer supplied in document callbacks.
Definition private/t30.h:120
t30_state_s::ppr_count
int ppr_count
The current count of consecutive T30_PPR messages.
Definition private/t30.h:244
t30_state_s::local_interrupt_pending
int local_interrupt_pending
True if a local T.30 interrupt is pending.
Definition private/t30.h:224
t30_state_s::phase_b_user_data
void * phase_b_user_data
An opaque pointer supplied in event B callbacks.
Definition private/t30.h:99
t30_state_s::rx_file
char rx_file[256]
Image file name for image reception.
Definition private/t30.h:280
t30_state_s::current_rx_type
int current_rx_type
Current reception mode.
Definition private/t30.h:192
t30_state_s::set_tx_type_user_data
void * set_tx_type_user_data
An opaque pointer passed to the handler for changes to the transmit mode.
Definition private/t30.h:129
t30_state_s::rtp_events
int rtp_events
The number of RTP events.
Definition private/t30.h:301
t30_state_s::far_end_detected
int far_end_detected
True once the far end FAX entity has been detected.
Definition private/t30.h:218
t30_state_s::document_handler
t30_document_handler_t * document_handler
A pointer to a callback routine to be called when document events (e.g. end of transmitted document) ...
Definition private/t30.h:118
t30_state_s::timer_t2_t4_is
int timer_t2_t4_is
A value specifying which of the possible timers is currently running in timer_t2_t4.
Definition private/t30.h:205
t30_state_s::current_tx_type
int current_tx_type
Current transmission mode.
Definition private/t30.h:194
t30_state_s::ecm_data
uint8_t ecm_data[256][260]
The ECM partial page buffer.
Definition private/t30.h:250
t30_state_s::rx_dcs_string
char rx_dcs_string[T30_MAX_DIS_DTC_DCS_LEN *3+1]
The received DCS, formatted as an ASCII string, for inclusion in the TIFF file.
Definition private/t30.h:68
t30_state_s::rx_stop_page
int rx_stop_page
The last page we are prepared accept for a received image file. -1 means no restriction.
Definition private/t30.h:282
t30_state_s::next_tx_step
int next_tx_step
The transmission step queued to follow the one in progress.
Definition private/t30.h:276
t30_state_s::local_min_scan_time_code
uint8_t local_min_scan_time_code
The DIS code for the minimum scan row time we require. This is usually 0ms, but if we are trying to s...
Definition private/t30.h:139
t30_state_s::set_rx_type_handler
t30_set_handler_t * set_rx_type_handler
The handler for changes to the receive mode.
Definition private/t30.h:123
t30_state_s::error_correcting_mode
int error_correcting_mode
True if error correcting mode is used.
Definition private/t30.h:240
t30_state_s::supported_compressions
int supported_compressions
A bit mask of the currently supported image compression modes.
Definition private/t30.h:54
t30_state_s::dis_received
int dis_received
True if a valid DIS has been received from the far end.
Definition private/t30.h:163
t30_state_s::ecm_block
int ecm_block
The current block number, in ECM mode.
Definition private/t30.h:261
t30_state_s::operation_in_progress
int operation_in_progress
The type of FAX operation currently in progress.
Definition private/t30.h:44
t30_state_s::rx_ecm_block_ok
int rx_ecm_block_ok
True if all frames of the current received ECM block are now OK.
Definition private/t30.h:295
t30_state_s::local_dis_dtc_len
int local_dis_dtc_len
The length of the DIS or DTC message to be transmitted.
Definition private/t30.h:157
t30_state_s::far_dis_dtc_len
int far_dis_dtc_len
The length of the last DIS or DTC message received form the far end.
Definition private/t30.h:161
t30_state_s::supported_image_sizes
int supported_image_sizes
A bit mask of the currently supported image sizes.
Definition private/t30.h:58
t30_state_s::calling_party
int calling_party
True if behaving as the calling party.
Definition private/t30.h:47
t30_state_s::step
int step
The step in sending a sequence of HDLC frames.
Definition private/t30.h:148
t30_state_s::send_hdlc_user_data
void * send_hdlc_user_data
An opaque pointer passed to the transmitted HDLC frame handler.
Definition private/t30.h:134
t30_state_s::next_rx_step
uint8_t next_rx_step
The FCF for the next receive step.
Definition private/t30.h:278
t30_state_s::remote_interrupts_allowed
int remote_interrupts_allowed
True if remote T.30 procedural interrupts are allowed.
Definition private/t30.h:82
t30_state_s::set_rx_type_user_data
void * set_rx_type_user_data
An opaque pointer passed to the handler for changes to the receive mode.
Definition private/t30.h:125
t30_state_s::ecm_current_tx_frame
int ecm_current_tx_frame
The current ECM frame, during ECM transmission.
Definition private/t30.h:267
t30_state_s::model
const char * model
The model of the remote machine, if known, else NULL.
Definition private/t30.h:93
t30_state_s::y_resolution
int y_resolution
The Y direction resolution of the current image, in pixels per metre.
Definition private/t30.h:234
t30_state_s::tcf_most_zeros
int tcf_most_zeros
The maximum consecutive received zero bits seen to date, during the trainability test.
Definition private/t30.h:178
t30_state_s::set_tx_type_handler
t30_set_handler_t * set_tx_type_handler
The handler for changes to the transmit mode.
Definition private/t30.h:127
t30_state_s::local_dis_dtc_frame
uint8_t local_dis_dtc_frame[T30_MAX_DIS_DTC_DCS_LEN]
The preparation buffer for DIS or DTC message to be transmitted.
Definition private/t30.h:155
t30_state_s::state
int state
The current state of the T.30 state machine.
Definition private/t30.h:146
t30_state_s::phase_e_user_data
void * phase_e_user_data
An opaque pointer supplied in event E callbacks.
Definition private/t30.h:109
t30_state_s::dcs_len
int dcs_len
The length of the DCS message to be transmitted.
Definition private/t30.h:153
t30_state_s::vendor
const char * vendor
The vendor of the remote machine, if known, else NULL.
Definition private/t30.h:91
t30_state_s::current_permitted_modems
int current_permitted_modems
The subset of supported modems allowed at the current time, allowing for negotiation.
Definition private/t30.h:183
t30_state_s::tcf_current_zeros
int tcf_current_zeros
The current count of consecutive received zero bits, during the trainability test.
Definition private/t30.h:176
t30_state_s::tx_start_page
int tx_start_page
The first page to be sent from the image file. -1 means no restriction.
Definition private/t30.h:286
t30_phase_e_handler_t
void t30_phase_e_handler_t(t30_state_t *s, void *user_data, int completion_code)
T.30 phase E callback handler.
Definition t30.h:180
T30_MAX_PAGE_HEADER_INFO
#define T30_MAX_PAGE_HEADER_INFO
Definition t30.h:146
T30_MAX_DIS_DTC_DCS_LEN
#define T30_MAX_DIS_DTC_DCS_LEN
Definition t30.h:142
t30_phase_d_handler_t
int t30_phase_d_handler_t(t30_state_t *s, void *user_data, int result)
T.30 phase D callback handler.
Definition t30.h:171
t30_real_time_frame_handler_t
void t30_real_time_frame_handler_t(t30_state_t *s, void *user_data, int direction, const uint8_t msg[], int len)
T.30 real time frame handler.
Definition t30.h:191
t30_set_handler_t
void t30_set_handler_t(void *user_data, int type, int bit_rate, int short_train, int use_hdlc)
T.30 set a receive or transmit type handler.
Definition t30.h:215
t30_send_hdlc_handler_t
void t30_send_hdlc_handler_t(void *user_data, const uint8_t msg[], int len)
T.30 send HDLC handler.
Definition t30.h:224
t30_document_handler_t
int t30_document_handler_t(t30_state_t *s, void *user_data, int status)
T.30 document handler.
Definition t30.h:204
t30_phase_b_handler_t
int t30_phase_b_handler_t(t30_state_t *s, void *user_data, int result)
T.30 phase B callback handler.
Definition t30.h:161
t4_image_width_t
t4_image_width_t
Definition t4_rx.h:125