}
/*- End of function --------------------------------------------------------*/
-SPAN_DECLARE(int) fax_restart(fax_state_t *s, int calling_party)
+SPAN_DECLARE(int) fax_restart(fax_state_t *s, bool calling_party)
{
v8_parms_t v8_parms;
v8_parms.nsf = -1;
v8_parms.t66 = -1;
v8_restart(&s->v8, calling_party, &v8_parms);
- t30_restart(&s->t30);
+ t30_restart(&s->t30, calling_party);
#if defined(LOG_FAX_AUDIO)
{
char buf[100 + 1];
}
/*- End of function --------------------------------------------------------*/
-SPAN_DECLARE(fax_state_t *) fax_init(fax_state_t *s, int calling_party)
+SPAN_DECLARE(fax_state_t *) fax_init(fax_state_t *s, bool calling_party)
{
v8_parms_t v8_parms;
\param calling_party True if the context is for a calling party. False if the
context is for an answering party.
\return 0 for OK, else -1. */
-SPAN_DECLARE(int) fax_restart(fax_state_t *s, int calling_party);
+SPAN_DECLARE(int) fax_restart(fax_state_t *s, bool calling_party);
/*! Initialise a FAX context.
\brief Initialise a FAX context.
context is for an answering party.
\return A pointer to the FAX context, or NULL if there was a problem.
*/
-SPAN_DECLARE(fax_state_t *) fax_init(fax_state_t *s, int calling_party);
+SPAN_DECLARE(fax_state_t *) fax_init(fax_state_t *s, bool calling_party);
/*! Release a FAX context.
\brief Release a FAX context.
\brief T.30 send HDLC handler.
\param user_data An opaque pointer.
\param msg The HDLC message.
- \param len The length of the message.
+ \param len The length of the message. -1 to flush the HDLC queue.
*/
typedef void (*t30_send_hdlc_handler_t)(void *user_data, const uint8_t msg[], int len);
\param send_hdlc_user_data
\return A pointer to the context, or NULL if there was a problem. */
SPAN_DECLARE(t30_state_t *) t30_init(t30_state_t *s,
- int calling_party,
+ bool calling_party,
t30_set_handler_t set_rx_type_handler,
void *set_rx_type_user_data,
t30_set_handler_t set_tx_type_handler,
/*! Restart a T.30 context.
\brief Restart a T.30 context.
\param s The T.30 context.
+ \param calling_party True if the context is for a calling party. False if the
+ context is for an answering party.
\return 0 for OK, else -1. */
-SPAN_DECLARE(int) t30_restart(t30_state_t *s);
+SPAN_DECLARE(int) t30_restart(t30_state_t *s, bool calling_party);
/*! Check if a T.30 call is still active. This may be used to regularly poll
if the job has finished.
uint8_t dcs_code;
} fallback_sequence[] =
{
- {14400, T30_MODEM_V17, T30_SUPPORT_V17, DISBIT6},
- {12000, T30_MODEM_V17, T30_SUPPORT_V17, (DISBIT6 | DISBIT4)},
- { 9600, T30_MODEM_V17, T30_SUPPORT_V17, (DISBIT6 | DISBIT3)},
- { 9600, T30_MODEM_V29, T30_SUPPORT_V29, DISBIT3},
+ {14400, T30_MODEM_V17, T30_SUPPORT_V17, (DISBIT6 )},
+ {12000, T30_MODEM_V17, T30_SUPPORT_V17, (DISBIT6 | DISBIT4 )},
+ { 9600, T30_MODEM_V17, T30_SUPPORT_V17, (DISBIT6 | DISBIT3)},
+ { 9600, T30_MODEM_V29, T30_SUPPORT_V29, ( DISBIT3)},
{ 7200, T30_MODEM_V17, T30_SUPPORT_V17, (DISBIT6 | DISBIT4 | DISBIT3)},
- { 7200, T30_MODEM_V29, T30_SUPPORT_V29, (DISBIT4 | DISBIT3)},
- { 4800, T30_MODEM_V27TER, T30_SUPPORT_V27TER, DISBIT4},
- { 2400, T30_MODEM_V27TER, T30_SUPPORT_V27TER, 0},
- { 0, 0, 0, 0}
+ { 7200, T30_MODEM_V29, T30_SUPPORT_V29, ( DISBIT4 | DISBIT3)},
+ { 4800, T30_MODEM_V27TER, T30_SUPPORT_V27TER, ( DISBIT4 )},
+ { 2400, T30_MODEM_V27TER, T30_SUPPORT_V27TER, (0 )},
+ { 0, 0, 0, (0 )}
};
static void queue_phase(t30_state_t *s, int phase);
}
/*- End of function --------------------------------------------------------*/
-SPAN_DECLARE(int) t30_restart(t30_state_t *s)
+SPAN_DECLARE(int) t30_restart(t30_state_t *s, bool calling_party)
{
+ release_resources(s);
+ s->calling_party = calling_party;
s->phase = T30_PHASE_IDLE;
s->next_phase = T30_PHASE_IDLE;
s->current_fallback = 0;
memset(&s->far_dis_dtc_frame, 0, sizeof(s->far_dis_dtc_frame));
t30_build_dis_or_dtc(s);
memset(&s->rx_info, 0, sizeof(s->rx_info));
- release_resources(s);
/* The page number is only reset at call establishment */
s->rx_page_number = 0;
s->tx_page_number = 0;
/*- End of function --------------------------------------------------------*/
SPAN_DECLARE(t30_state_t *) t30_init(t30_state_t *s,
- int calling_party,
+ bool calling_party,
t30_set_handler_t set_rx_type_handler,
void *set_rx_type_user_data,
t30_set_handler_t set_tx_type_handler,
return NULL;
}
memset(s, 0, sizeof(*s));
- s->calling_party = calling_party;
s->set_rx_type_handler = set_rx_type_handler;
s->set_rx_type_user_data = set_rx_type_user_data;
s->set_tx_type_handler = set_tx_type_handler;
s->local_min_scan_time_code = T30_MIN_SCAN_0MS;
span_log_init(&s->logging, SPAN_LOG_NONE, NULL);
span_log_set_protocol(&s->logging, "T.30");
- t30_restart(s);
+ t30_restart(s, calling_party);
return s;
}
/*- End of function --------------------------------------------------------*/
uint8_t dcs_code;
} modem_codes[] =
{
- {14400, FAX_MODEM_V17_RX, DISBIT6},
- {12000, FAX_MODEM_V17_RX, (DISBIT6 | DISBIT4)},
- { 9600, FAX_MODEM_V17_RX, (DISBIT6 | DISBIT3)},
- { 9600, FAX_MODEM_V29_RX, DISBIT3},
+ {14400, FAX_MODEM_V17_RX, (DISBIT6 )},
+ {12000, FAX_MODEM_V17_RX, (DISBIT6 | DISBIT4 )},
+ { 9600, FAX_MODEM_V17_RX, (DISBIT6 | DISBIT3)},
+ { 9600, FAX_MODEM_V29_RX, ( DISBIT3)},
{ 7200, FAX_MODEM_V17_RX, (DISBIT6 | DISBIT4 | DISBIT3)},
- { 7200, FAX_MODEM_V29_RX, (DISBIT4 | DISBIT3)},
- { 4800, FAX_MODEM_V27TER_RX, DISBIT4},
- { 2400, FAX_MODEM_V27TER_RX, 0},
- { 0, FAX_MODEM_NONE, 0}
+ { 7200, FAX_MODEM_V29_RX, ( DISBIT4 | DISBIT3)},
+ { 4800, FAX_MODEM_V27TER_RX, ( DISBIT4 )},
+ { 2400, FAX_MODEM_V27TER_RX, (0 )},
+ { 0, FAX_MODEM_NONE, (0 )}
};
static const int minimum_scan_line_times[8] =
{
- 20,
- 5,
- 10,
- 0,
- 40,
- 0,
- 0,
- 0
+ 20, 5, 10, 0, 40, 0, 0, 0
};
int dcs_code;
int i;
bool calling_party)
{
t38_terminal_t38_fe_restart(s);
- t30_restart(&s->t30);
+ t30_restart(&s->t30, calling_party);
return 0;
}
/*- End of function --------------------------------------------------------*/
t30_set_iaf_mode(&s->t30, s->t38_fe.iaf);
t30_set_supported_modems(&s->t30,
T30_SUPPORT_V27TER | T30_SUPPORT_V29 | T30_SUPPORT_V17 | T30_SUPPORT_IAF);
- t30_restart(&s->t30);
+ t30_restart(&s->t30, calling_party);
return s;
}
/*- End of function --------------------------------------------------------*/