A lot of tweaks to clean up some inconsistencies in spandsp. They should
have no functional effect.
This commit is contained in:
parent
b1ae97466d
commit
2b75169c07
|
@ -787,7 +787,7 @@ static void generate_ad_edd(void)
|
|||
float offset;
|
||||
float amp;
|
||||
float phase;
|
||||
float delay;
|
||||
//float delay;
|
||||
float pw;
|
||||
#if defined(HAVE_FFTW3_H)
|
||||
double in[FFT_SIZE][2];
|
||||
|
@ -836,7 +836,7 @@ static void generate_ad_edd(void)
|
|||
amp = (1.0 - offset)*ad[l - 1].ad[j] + offset*ad[l].ad[j];
|
||||
amp = pow(10.0, -amp/20.0);
|
||||
}
|
||||
delay = 0.0f;
|
||||
//delay = 0.0f;
|
||||
for (l = 0; l < (int) (sizeof(edd)/sizeof(edd[0])); l++)
|
||||
{
|
||||
if (f < edd[l].freq)
|
||||
|
@ -845,7 +845,7 @@ static void generate_ad_edd(void)
|
|||
if (l < (int) (sizeof(edd)/sizeof(edd[0])))
|
||||
{
|
||||
offset = (f - edd[l - 1].freq)/(edd[l].freq - edd[l - 1].freq);
|
||||
delay = (1.0f - offset)*edd[l - 1].edd[k] + offset*edd[l].edd[k];
|
||||
//delay = (1.0f - offset)*edd[l - 1].edd[k] + offset*edd[l].edd[k];
|
||||
}
|
||||
//phase = 2.0f*M_PI*f*delay*0.001f;
|
||||
phase = 0.0f;
|
||||
|
@ -915,7 +915,7 @@ static void generate_proakis(void)
|
|||
float offset;
|
||||
float amp;
|
||||
float phase;
|
||||
float delay;
|
||||
//float delay;
|
||||
float pw;
|
||||
int index;
|
||||
int i;
|
||||
|
@ -953,7 +953,7 @@ static void generate_proakis(void)
|
|||
|
||||
/* Linear interpolation */
|
||||
amp = ((1.0f - offset)*proakis[index].amp + offset*proakis[index + 1].amp)/2.3f;
|
||||
delay = (1.0f - offset)*proakis[index].delay + offset*proakis[index + 1].delay;
|
||||
//delay = (1.0f - offset)*proakis[index].delay + offset*proakis[index + 1].delay;
|
||||
//phase = 2.0f*M_PI*f*delay*0.001f;
|
||||
phase = 0.0f;
|
||||
#if defined(HAVE_FFTW3_H)
|
||||
|
|
|
@ -5501,9 +5501,9 @@ SPAN_DECLARE(void) at_set_class1_handler(at_state_t *s, at_class1_handler_t hand
|
|||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
SPAN_DECLARE(at_state_t *) at_init(at_state_t *s,
|
||||
at_tx_handler_t *at_tx_handler,
|
||||
at_tx_handler_t at_tx_handler,
|
||||
void *at_tx_user_data,
|
||||
at_modem_control_handler_t *modem_control_handler,
|
||||
at_modem_control_handler_t modem_control_handler,
|
||||
void *modem_control_user_data)
|
||||
{
|
||||
if (s == NULL)
|
||||
|
|
|
@ -173,8 +173,8 @@ static void hdlc_underflow_handler(void *user_data)
|
|||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
static void set_rx_handler(fax_state_t *s,
|
||||
span_rx_handler_t *rx_handler,
|
||||
span_rx_fillin_handler_t *fillin_handler,
|
||||
span_rx_handler_t rx_handler,
|
||||
span_rx_fillin_handler_t fillin_handler,
|
||||
void *user_data)
|
||||
{
|
||||
s->modems.rx_handler = rx_handler;
|
||||
|
@ -183,14 +183,14 @@ static void set_rx_handler(fax_state_t *s,
|
|||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
static void fax_modems_set_tx_handler(fax_state_t *s, span_tx_handler_t *handler, void *user_data)
|
||||
static void fax_modems_set_tx_handler(fax_state_t *s, span_tx_handler_t handler, void *user_data)
|
||||
{
|
||||
s->modems.tx_handler = handler;
|
||||
s->modems.tx_user_data = user_data;
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
static void fax_modems_set_next_tx_handler(fax_state_t *s, span_tx_handler_t *handler, void *user_data)
|
||||
static void fax_modems_set_next_tx_handler(fax_state_t *s, span_tx_handler_t handler, void *user_data)
|
||||
{
|
||||
s->modems.next_tx_handler = handler;
|
||||
s->modems.next_tx_user_data = user_data;
|
||||
|
@ -209,7 +209,7 @@ static int v17_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
{
|
||||
/* The fast modem has trained, so we no longer need to run the slow one in parallel. */
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.17 + V.21 to V.17 (%.2fdBm0)\n", v17_rx_signal_power(&s->fast_modems.v17_rx));
|
||||
set_rx_handler(t, (span_rx_handler_t *) &v17_rx, (span_rx_fillin_handler_t *) &v17_rx_fillin, &s->fast_modems.v17_rx);
|
||||
set_rx_handler(t, (span_rx_handler_t) &v17_rx, (span_rx_fillin_handler_t) &v17_rx_fillin, &s->fast_modems.v17_rx);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -219,7 +219,7 @@ static int v17_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
/* We have received something, and the fast modem has not trained. We must
|
||||
be receiving valid V.21 */
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.17 + V.21 to V.21 (%.2fdBm0)\n", fsk_rx_signal_power(&s->v21_rx));
|
||||
set_rx_handler(t, (span_rx_handler_t *) &fsk_rx, (span_rx_fillin_handler_t *) &fsk_rx_fillin, &s->v21_rx);
|
||||
set_rx_handler(t, (span_rx_handler_t) &fsk_rx, (span_rx_fillin_handler_t) &fsk_rx_fillin, &s->v21_rx);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
@ -251,7 +251,7 @@ static int v27ter_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
{
|
||||
/* The fast modem has trained, so we no longer need to run the slow one in parallel. */
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.27ter + V.21 to V.27ter (%.2fdBm0)\n", v27ter_rx_signal_power(&s->fast_modems.v27ter_rx));
|
||||
set_rx_handler(t, (span_rx_handler_t *) &v27ter_rx, (span_rx_fillin_handler_t *) &v27ter_rx_fillin, &s->fast_modems.v27ter_rx);
|
||||
set_rx_handler(t, (span_rx_handler_t) &v27ter_rx, (span_rx_fillin_handler_t) &v27ter_rx_fillin, &s->fast_modems.v27ter_rx);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -261,7 +261,7 @@ static int v27ter_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
/* We have received something, and the fast modem has not trained. We must
|
||||
be receiving valid V.21 */
|
||||
span_log(&s->logging, SPAN_LOG_FLOW, "Switching from V.27ter + V.21 to V.21 (%.2fdBm0)\n", fsk_rx_signal_power(&s->v21_rx));
|
||||
set_rx_handler(t, (span_rx_handler_t *) &fsk_rx, (span_rx_fillin_handler_t *) &fsk_rx_fillin, &s->v21_rx);
|
||||
set_rx_handler(t, (span_rx_handler_t) &fsk_rx, (span_rx_fillin_handler_t) &fsk_rx_fillin, &s->v21_rx);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
@ -293,7 +293,7 @@ static int v29_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
{
|
||||
/* The fast modem has trained, so we no longer need to run the slow one in parallel. */
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.29 + V.21 to V.29 (%.2fdBm0)\n", v29_rx_signal_power(&s->fast_modems.v29_rx));
|
||||
set_rx_handler(t, (span_rx_handler_t *) &v29_rx, (span_rx_fillin_handler_t *) &v29_rx_fillin, &s->fast_modems.v29_rx);
|
||||
set_rx_handler(t, (span_rx_handler_t) &v29_rx, (span_rx_fillin_handler_t) &v29_rx_fillin, &s->fast_modems.v29_rx);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -303,7 +303,7 @@ static int v29_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
/* We have received something, and the fast modem has not trained. We must
|
||||
be receiving valid V.21 */
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.29 + V.21 to V.21 (%.2fdBm0)\n", fsk_rx_signal_power(&s->v21_rx));
|
||||
set_rx_handler(t, (span_rx_handler_t *) &fsk_rx, (span_rx_fillin_handler_t *) &fsk_rx_fillin, &s->v21_rx);
|
||||
set_rx_handler(t, (span_rx_handler_t) &fsk_rx, (span_rx_fillin_handler_t) &fsk_rx_fillin, &s->v21_rx);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
@ -380,8 +380,8 @@ static int set_next_tx_type(fax_state_t *s)
|
|||
}
|
||||
/* If there is nothing else to change to, so use zero length silence */
|
||||
silence_gen_alter(&t->silence_gen, 0);
|
||||
fax_modems_set_tx_handler(s, (span_tx_handler_t *) &silence_gen, &t->silence_gen);
|
||||
fax_modems_set_next_tx_handler(s, (span_tx_handler_t *) NULL, NULL);
|
||||
fax_modems_set_tx_handler(s, (span_tx_handler_t) &silence_gen, &t->silence_gen);
|
||||
fax_modems_set_next_tx_handler(s, (span_tx_handler_t) NULL, NULL);
|
||||
t->transmit = FALSE;
|
||||
return -1;
|
||||
}
|
||||
|
@ -466,7 +466,7 @@ static void fax_set_rx_type(void *user_data, int type, int bit_rate, int short_t
|
|||
case T30_MODEM_V21:
|
||||
fsk_rx_init(&t->v21_rx, &preset_fsk_specs[FSK_V21CH2], FSK_FRAME_MODE_SYNC, (put_bit_func_t) hdlc_rx_put_bit, put_bit_user_data);
|
||||
fsk_rx_signal_cutoff(&t->v21_rx, -45.5f);
|
||||
set_rx_handler(s, (span_rx_handler_t *) &fsk_rx, (span_rx_fillin_handler_t *) &fsk_rx_fillin, &t->v21_rx);
|
||||
set_rx_handler(s, (span_rx_handler_t) &fsk_rx, (span_rx_fillin_handler_t) &fsk_rx_fillin, &t->v21_rx);
|
||||
break;
|
||||
case T30_MODEM_V27TER:
|
||||
v27ter_rx_restart(&t->fast_modems.v27ter_rx, bit_rate, FALSE);
|
||||
|
@ -486,7 +486,7 @@ static void fax_set_rx_type(void *user_data, int type, int bit_rate, int short_t
|
|||
case T30_MODEM_DONE:
|
||||
span_log(&s->logging, SPAN_LOG_FLOW, "FAX exchange complete\n");
|
||||
default:
|
||||
set_rx_handler(s, (span_rx_handler_t *) &span_dummy_rx, (span_rx_fillin_handler_t *) &span_dummy_rx_fillin, s);
|
||||
set_rx_handler(s, (span_rx_handler_t) &span_dummy_rx, (span_rx_fillin_handler_t) &span_dummy_rx_fillin, s);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -519,8 +519,8 @@ static void fax_set_tx_type(void *user_data, int type, int bit_rate, int short_t
|
|||
{
|
||||
case T30_MODEM_PAUSE:
|
||||
silence_gen_alter(&t->silence_gen, ms_to_samples(short_train));
|
||||
fax_modems_set_tx_handler(s, (span_tx_handler_t *) &silence_gen, &t->silence_gen);
|
||||
fax_modems_set_next_tx_handler(s, (span_tx_handler_t *) NULL, NULL);
|
||||
fax_modems_set_tx_handler(s, (span_tx_handler_t) &silence_gen, &t->silence_gen);
|
||||
fax_modems_set_next_tx_handler(s, (span_tx_handler_t) NULL, NULL);
|
||||
t->transmit = TRUE;
|
||||
break;
|
||||
case T30_MODEM_CED:
|
||||
|
@ -530,8 +530,8 @@ static void fax_set_tx_type(void *user_data, int type, int bit_rate, int short_t
|
|||
else
|
||||
tone = MODEM_CONNECT_TONES_FAX_CNG;
|
||||
modem_connect_tones_tx_init(&t->connect_tx, tone);
|
||||
fax_modems_set_tx_handler(s, (span_tx_handler_t *) &modem_connect_tones_tx, &t->connect_tx);
|
||||
fax_modems_set_next_tx_handler(s, (span_tx_handler_t *) NULL, NULL);
|
||||
fax_modems_set_tx_handler(s, (span_tx_handler_t) &modem_connect_tones_tx, &t->connect_tx);
|
||||
fax_modems_set_next_tx_handler(s, (span_tx_handler_t) NULL, NULL);
|
||||
t->transmit = TRUE;
|
||||
break;
|
||||
case T30_MODEM_V21:
|
||||
|
@ -543,8 +543,8 @@ static void fax_set_tx_type(void *user_data, int type, int bit_rate, int short_t
|
|||
a 75ms gap before any V.21 transmission is harmless, adds little to the overall length of
|
||||
a call, and ensures the receiving end is ready. */
|
||||
silence_gen_alter(&t->silence_gen, ms_to_samples(75));
|
||||
fax_modems_set_tx_handler(s, (span_tx_handler_t *) &silence_gen, &t->silence_gen);
|
||||
fax_modems_set_next_tx_handler(s, (span_tx_handler_t *) &fsk_tx, &t->v21_tx);
|
||||
fax_modems_set_tx_handler(s, (span_tx_handler_t) &silence_gen, &t->silence_gen);
|
||||
fax_modems_set_next_tx_handler(s, (span_tx_handler_t) &fsk_tx, &t->v21_tx);
|
||||
t->transmit = TRUE;
|
||||
break;
|
||||
case T30_MODEM_V27TER:
|
||||
|
@ -553,8 +553,8 @@ static void fax_set_tx_type(void *user_data, int type, int bit_rate, int short_t
|
|||
hdlc_tx_flags(&t->hdlc_tx, bit_rate/(8*5));
|
||||
v27ter_tx_restart(&t->fast_modems.v27ter_tx, bit_rate, t->use_tep);
|
||||
v27ter_tx_set_get_bit(&t->fast_modems.v27ter_tx, get_bit_func, get_bit_user_data);
|
||||
fax_modems_set_tx_handler(s, (span_tx_handler_t *) &silence_gen, &t->silence_gen);
|
||||
fax_modems_set_next_tx_handler(s, (span_tx_handler_t *) &v27ter_tx, &t->fast_modems.v27ter_tx);
|
||||
fax_modems_set_tx_handler(s, (span_tx_handler_t) &silence_gen, &t->silence_gen);
|
||||
fax_modems_set_next_tx_handler(s, (span_tx_handler_t) &v27ter_tx, &t->fast_modems.v27ter_tx);
|
||||
t->transmit = TRUE;
|
||||
break;
|
||||
case T30_MODEM_V29:
|
||||
|
@ -563,8 +563,8 @@ static void fax_set_tx_type(void *user_data, int type, int bit_rate, int short_t
|
|||
hdlc_tx_flags(&t->hdlc_tx, bit_rate/(8*5));
|
||||
v29_tx_restart(&t->fast_modems.v29_tx, bit_rate, t->use_tep);
|
||||
v29_tx_set_get_bit(&t->fast_modems.v29_tx, get_bit_func, get_bit_user_data);
|
||||
fax_modems_set_tx_handler(s, (span_tx_handler_t *) &silence_gen, &t->silence_gen);
|
||||
fax_modems_set_next_tx_handler(s, (span_tx_handler_t *) &v29_tx, &t->fast_modems.v29_tx);
|
||||
fax_modems_set_tx_handler(s, (span_tx_handler_t) &silence_gen, &t->silence_gen);
|
||||
fax_modems_set_next_tx_handler(s, (span_tx_handler_t) &v29_tx, &t->fast_modems.v29_tx);
|
||||
t->transmit = TRUE;
|
||||
break;
|
||||
case T30_MODEM_V17:
|
||||
|
@ -573,8 +573,8 @@ static void fax_set_tx_type(void *user_data, int type, int bit_rate, int short_t
|
|||
hdlc_tx_flags(&t->hdlc_tx, bit_rate/(8*5));
|
||||
v17_tx_restart(&t->fast_modems.v17_tx, bit_rate, t->use_tep, short_train);
|
||||
v17_tx_set_get_bit(&t->fast_modems.v17_tx, get_bit_func, get_bit_user_data);
|
||||
fax_modems_set_tx_handler(s, (span_tx_handler_t *) &silence_gen, &t->silence_gen);
|
||||
fax_modems_set_next_tx_handler(s, (span_tx_handler_t *) &v17_tx, &t->fast_modems.v17_tx);
|
||||
fax_modems_set_tx_handler(s, (span_tx_handler_t) &silence_gen, &t->silence_gen);
|
||||
fax_modems_set_next_tx_handler(s, (span_tx_handler_t) &v17_tx, &t->fast_modems.v17_tx);
|
||||
t->transmit = TRUE;
|
||||
break;
|
||||
case T30_MODEM_DONE:
|
||||
|
@ -582,8 +582,8 @@ static void fax_set_tx_type(void *user_data, int type, int bit_rate, int short_t
|
|||
/* Fall through */
|
||||
default:
|
||||
silence_gen_alter(&t->silence_gen, 0);
|
||||
fax_modems_set_tx_handler(s, (span_tx_handler_t *) &silence_gen, &t->silence_gen);
|
||||
fax_modems_set_next_tx_handler(s, (span_tx_handler_t *) NULL, NULL);
|
||||
fax_modems_set_tx_handler(s, (span_tx_handler_t) &silence_gen, &t->silence_gen);
|
||||
fax_modems_set_next_tx_handler(s, (span_tx_handler_t) NULL, NULL);
|
||||
t->transmit = FALSE;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -98,8 +98,8 @@ SPAN_DECLARE_NONSTD(int) fax_modems_v17_v21_rx(void *user_data, const int16_t am
|
|||
/* We have received something, and the fast modem has not trained. We must
|
||||
be receiving valid V.21 */
|
||||
span_log(&s->logging, SPAN_LOG_FLOW, "Switching from V.17 + V.21 to V.21 (%.2fdBm0)\n", fsk_rx_signal_power(&s->v21_rx));
|
||||
s->rx_handler = (span_rx_handler_t *) &fsk_rx;
|
||||
s->rx_fillin_handler = (span_rx_fillin_handler_t *) &fsk_rx_fillin;
|
||||
s->rx_handler = (span_rx_handler_t) &fsk_rx;
|
||||
s->rx_fillin_handler = (span_rx_fillin_handler_t) &fsk_rx_fillin;
|
||||
s->rx_user_data = &s->v21_rx;
|
||||
}
|
||||
return 0;
|
||||
|
@ -129,8 +129,8 @@ SPAN_DECLARE_NONSTD(int) fax_modems_v27ter_v21_rx(void *user_data, const int16_t
|
|||
/* We have received something, and the fast modem has not trained. We must
|
||||
be receiving valid V.21 */
|
||||
span_log(&s->logging, SPAN_LOG_FLOW, "Switching from V.27ter + V.21 to V.21 (%.2fdBm0)\n", fsk_rx_signal_power(&s->v21_rx));
|
||||
s->rx_handler = (span_rx_handler_t *) &fsk_rx;
|
||||
s->rx_fillin_handler = (span_rx_fillin_handler_t *) &fsk_rx_fillin;
|
||||
s->rx_handler = (span_rx_handler_t) &fsk_rx;
|
||||
s->rx_fillin_handler = (span_rx_fillin_handler_t) &fsk_rx_fillin;
|
||||
s->rx_user_data = &s->v21_rx;
|
||||
}
|
||||
return 0;
|
||||
|
@ -160,8 +160,8 @@ SPAN_DECLARE_NONSTD(int) fax_modems_v29_v21_rx(void *user_data, const int16_t am
|
|||
/* We have received something, and the fast modem has not trained. We must
|
||||
be receiving valid V.21 */
|
||||
span_log(&s->logging, SPAN_LOG_FLOW, "Switching from V.29 + V.21 to V.21 (%.2fdBm0)\n", fsk_rx_signal_power(&s->v21_rx));
|
||||
s->rx_handler = (span_rx_handler_t *) &fsk_rx;
|
||||
s->rx_fillin_handler = (span_rx_fillin_handler_t *) &fsk_rx_fillin;
|
||||
s->rx_handler = (span_rx_handler_t) &fsk_rx;
|
||||
s->rx_fillin_handler = (span_rx_fillin_handler_t) &fsk_rx_fillin;
|
||||
s->rx_user_data = &s->v21_rx;
|
||||
}
|
||||
return 0;
|
||||
|
@ -181,9 +181,11 @@ SPAN_DECLARE_NONSTD(int) fax_modems_v29_v21_rx_fillin(void *user_data, int len)
|
|||
|
||||
static void v21_rx_status_handler(void *user_data, int status)
|
||||
{
|
||||
#if 0
|
||||
fax_modems_state_t *s;
|
||||
|
||||
s = (fax_modems_state_t *) user_data;
|
||||
#endif
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
|
@ -196,8 +198,8 @@ static void v17_rx_status_handler(void *user_data, int status)
|
|||
{
|
||||
case SIG_STATUS_TRAINING_SUCCEEDED:
|
||||
span_log(&s->logging, SPAN_LOG_FLOW, "Switching to V.17 (%.2fdBm0)\n", v17_rx_signal_power(&s->fast_modems.v17_rx));
|
||||
s->rx_handler = (span_rx_handler_t *) &v17_rx;
|
||||
s->rx_fillin_handler = (span_rx_fillin_handler_t *) &v17_rx_fillin;
|
||||
s->rx_handler = (span_rx_handler_t) &v17_rx;
|
||||
s->rx_fillin_handler = (span_rx_fillin_handler_t) &v17_rx_fillin;
|
||||
s->rx_user_data = &s->fast_modems.v17_rx;
|
||||
break;
|
||||
}
|
||||
|
@ -213,8 +215,8 @@ static void v27ter_rx_status_handler(void *user_data, int status)
|
|||
{
|
||||
case SIG_STATUS_TRAINING_SUCCEEDED:
|
||||
span_log(&s->logging, SPAN_LOG_FLOW, "Switching to V.27ter (%.2fdBm0)\n", v27ter_rx_signal_power(&s->fast_modems.v27ter_rx));
|
||||
s->rx_handler = (span_rx_handler_t *) &v27ter_rx;
|
||||
s->rx_fillin_handler = (span_rx_fillin_handler_t *) &v27ter_rx_fillin;
|
||||
s->rx_handler = (span_rx_handler_t) &v27ter_rx;
|
||||
s->rx_fillin_handler = (span_rx_fillin_handler_t) &v27ter_rx_fillin;
|
||||
s->rx_user_data = &s->fast_modems.v27ter_rx;
|
||||
break;
|
||||
}
|
||||
|
@ -230,8 +232,8 @@ static void v29_rx_status_handler(void *user_data, int status)
|
|||
{
|
||||
case SIG_STATUS_TRAINING_SUCCEEDED:
|
||||
span_log(&s->logging, SPAN_LOG_FLOW, "Switching to V.29 (%.2fdBm0)\n", v29_rx_signal_power(&s->fast_modems.v29_rx));
|
||||
s->rx_handler = (span_rx_handler_t *) &v29_rx;
|
||||
s->rx_fillin_handler = (span_rx_fillin_handler_t *) &v29_rx_fillin;
|
||||
s->rx_handler = (span_rx_handler_t) &v29_rx;
|
||||
s->rx_fillin_handler = (span_rx_fillin_handler_t) &v29_rx_fillin;
|
||||
s->rx_user_data = &s->fast_modems.v29_rx;
|
||||
break;
|
||||
}
|
||||
|
@ -315,10 +317,10 @@ SPAN_DECLARE(fax_modems_state_t *) fax_modems_init(fax_modems_state_t *s,
|
|||
dc_restore_init(&s->dc_restore);
|
||||
|
||||
s->rx_signal_present = FALSE;
|
||||
s->rx_handler = (span_rx_handler_t *) &span_dummy_rx;
|
||||
s->rx_fillin_handler = (span_rx_fillin_handler_t *) &span_dummy_rx;
|
||||
s->rx_handler = (span_rx_handler_t) &span_dummy_rx;
|
||||
s->rx_fillin_handler = (span_rx_fillin_handler_t) &span_dummy_rx;
|
||||
s->rx_user_data = NULL;
|
||||
s->tx_handler = (span_tx_handler_t *) &silence_gen;
|
||||
s->tx_handler = (span_tx_handler_t) &silence_gen;
|
||||
s->tx_user_data = &s->silence_gen;
|
||||
return s;
|
||||
}
|
||||
|
|
|
@ -38,9 +38,9 @@ modem control commands.
|
|||
|
||||
typedef struct at_state_s at_state_t;
|
||||
|
||||
typedef int (at_modem_control_handler_t)(at_state_t *s, void *user_data, int op, const char *num);
|
||||
typedef int (at_tx_handler_t)(at_state_t *s, void *user_data, const uint8_t *buf, size_t len);
|
||||
typedef int (at_class1_handler_t)(at_state_t *s, void *user_data, int direction, int operation, int val);
|
||||
typedef int (*at_modem_control_handler_t)(at_state_t *s, void *user_data, int op, const char *num);
|
||||
typedef int (*at_tx_handler_t)(at_state_t *s, void *user_data, const uint8_t *buf, size_t len);
|
||||
typedef int (*at_class1_handler_t)(at_state_t *s, void *user_data, int direction, int operation, int val);
|
||||
|
||||
enum at_rx_mode_e
|
||||
{
|
||||
|
@ -172,9 +172,9 @@ SPAN_DECLARE(void) at_set_class1_handler(at_state_t *s, at_class1_handler_t hand
|
|||
\param modem_control_user_data x.
|
||||
\return A pointer to the AT context, or NULL if there was a problem. */
|
||||
SPAN_DECLARE(at_state_t *) at_init(at_state_t *s,
|
||||
at_tx_handler_t *at_tx_handler,
|
||||
at_tx_handler_t at_tx_handler,
|
||||
void *at_tx_user_data,
|
||||
at_modem_control_handler_t *modem_control_handler,
|
||||
at_modem_control_handler_t modem_control_handler,
|
||||
void *modem_control_user_data);
|
||||
|
||||
/*! Release an AT interpreter context.
|
||||
|
|
|
@ -113,11 +113,11 @@ struct at_state_s
|
|||
char line[256];
|
||||
int line_ptr;
|
||||
|
||||
at_modem_control_handler_t *modem_control_handler;
|
||||
at_modem_control_handler_t modem_control_handler;
|
||||
void *modem_control_user_data;
|
||||
at_tx_handler_t *at_tx_handler;
|
||||
at_tx_handler_t at_tx_handler;
|
||||
void *at_tx_user_data;
|
||||
at_class1_handler_t *class1_handler;
|
||||
at_class1_handler_t class1_handler;
|
||||
void *class1_user_data;
|
||||
|
||||
/*! \brief Error and flow logging control */
|
||||
|
|
|
@ -95,18 +95,18 @@ struct fax_modems_state_s
|
|||
int rx_frame_received;
|
||||
|
||||
/*! \brief The current receive signal handler */
|
||||
span_rx_handler_t *rx_handler;
|
||||
span_rx_handler_t rx_handler;
|
||||
/*! \brief The current receive missing signal fill-in handler */
|
||||
span_rx_fillin_handler_t *rx_fillin_handler;
|
||||
span_rx_fillin_handler_t rx_fillin_handler;
|
||||
void *rx_user_data;
|
||||
|
||||
/*! \brief The current transmit signal handler */
|
||||
span_tx_handler_t *tx_handler;
|
||||
span_tx_handler_t tx_handler;
|
||||
void *tx_user_data;
|
||||
|
||||
/*! The next transmit signal handler, for two stage transmit operations.
|
||||
E.g. a short silence followed by a modem signal. */
|
||||
span_tx_handler_t *next_tx_handler;
|
||||
span_tx_handler_t next_tx_handler;
|
||||
void *next_tx_user_data;
|
||||
|
||||
/*! The current bit rate of the transmitter. */
|
||||
|
|
|
@ -94,42 +94,42 @@ struct t30_state_s
|
|||
|
||||
/*! \brief A pointer to a callback routine to be called when phase B events
|
||||
occur. */
|
||||
t30_phase_b_handler_t *phase_b_handler;
|
||||
t30_phase_b_handler_t phase_b_handler;
|
||||
/*! \brief An opaque pointer supplied in event B callbacks. */
|
||||
void *phase_b_user_data;
|
||||
/*! \brief A pointer to a callback routine to be called when phase D events
|
||||
occur. */
|
||||
t30_phase_d_handler_t *phase_d_handler;
|
||||
t30_phase_d_handler_t phase_d_handler;
|
||||
/*! \brief An opaque pointer supplied in event D callbacks. */
|
||||
void *phase_d_user_data;
|
||||
/*! \brief A pointer to a callback routine to be called when phase E events
|
||||
occur. */
|
||||
t30_phase_e_handler_t *phase_e_handler;
|
||||
t30_phase_e_handler_t phase_e_handler;
|
||||
/*! \brief An opaque pointer supplied in event E callbacks. */
|
||||
void *phase_e_user_data;
|
||||
/*! \brief A pointer to a callback routine to be called when frames are
|
||||
exchanged. */
|
||||
t30_real_time_frame_handler_t *real_time_frame_handler;
|
||||
t30_real_time_frame_handler_t real_time_frame_handler;
|
||||
/*! \brief An opaque pointer supplied in real time frame callbacks. */
|
||||
void *real_time_frame_user_data;
|
||||
|
||||
/*! \brief A pointer to a callback routine to be called when document events
|
||||
(e.g. end of transmitted document) occur. */
|
||||
t30_document_handler_t *document_handler;
|
||||
t30_document_handler_t document_handler;
|
||||
/*! \brief An opaque pointer supplied in document callbacks. */
|
||||
void *document_user_data;
|
||||
|
||||
/*! \brief The handler for changes to the receive mode */
|
||||
t30_set_handler_t *set_rx_type_handler;
|
||||
t30_set_handler_t set_rx_type_handler;
|
||||
/*! \brief An opaque pointer passed to the handler for changes to the receive mode */
|
||||
void *set_rx_type_user_data;
|
||||
/*! \brief The handler for changes to the transmit mode */
|
||||
t30_set_handler_t *set_tx_type_handler;
|
||||
t30_set_handler_t set_tx_type_handler;
|
||||
/*! \brief An opaque pointer passed to the handler for changes to the transmit mode */
|
||||
void *set_tx_type_user_data;
|
||||
|
||||
/*! \brief The transmitted HDLC frame handler. */
|
||||
t30_send_hdlc_handler_t *send_hdlc_handler;
|
||||
t30_send_hdlc_handler_t send_hdlc_handler;
|
||||
/*! \brief An opaque pointer passed to the transmitted HDLC frame handler. */
|
||||
void *send_hdlc_user_data;
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ typedef struct
|
|||
v8_state_t v8;
|
||||
|
||||
/*! The transmit signal handler to be used when the current one has finished sending. */
|
||||
span_tx_handler_t *next_tx_handler;
|
||||
span_tx_handler_t next_tx_handler;
|
||||
void *next_tx_user_data;
|
||||
|
||||
/*! \brief No of data bits in current_byte. */
|
||||
|
@ -136,7 +136,7 @@ typedef struct
|
|||
struct t31_state_s
|
||||
{
|
||||
at_state_t at_state;
|
||||
t31_modem_control_handler_t *modem_control_handler;
|
||||
t31_modem_control_handler_t modem_control_handler;
|
||||
void *modem_control_user_data;
|
||||
|
||||
t31_audio_front_end_state_t audio;
|
||||
|
|
|
@ -32,16 +32,16 @@
|
|||
struct t38_core_state_s
|
||||
{
|
||||
/*! \brief Handler routine to transmit IFP packets generated by the T.38 protocol engine */
|
||||
t38_tx_packet_handler_t *tx_packet_handler;
|
||||
t38_tx_packet_handler_t tx_packet_handler;
|
||||
/*! \brief An opaque pointer passed to tx_packet_handler */
|
||||
void *tx_packet_user_data;
|
||||
|
||||
/*! \brief Handler routine to process received indicator packets */
|
||||
t38_rx_indicator_handler_t *rx_indicator_handler;
|
||||
t38_rx_indicator_handler_t rx_indicator_handler;
|
||||
/*! \brief Handler routine to process received data packets */
|
||||
t38_rx_data_handler_t *rx_data_handler;
|
||||
t38_rx_data_handler_t rx_data_handler;
|
||||
/*! \brief Handler routine to process the missing packet condition */
|
||||
t38_rx_missing_handler_t *rx_missing_handler;
|
||||
t38_rx_missing_handler_t rx_missing_handler;
|
||||
/*! \brief An opaque pointer passed to any of the above receive handling routines */
|
||||
void *rx_user_data;
|
||||
|
||||
|
|
|
@ -61,8 +61,8 @@ typedef struct
|
|||
fax_modems_state_t modems;
|
||||
/*! \brief The current receive signal handler. Actual receiving hops between this
|
||||
and a dummy receive routine. */
|
||||
span_rx_handler_t *base_rx_handler;
|
||||
span_rx_fillin_handler_t *base_rx_fillin_handler;
|
||||
span_rx_handler_t base_rx_handler;
|
||||
span_rx_fillin_handler_t base_rx_fillin_handler;
|
||||
} t38_gateway_audio_state_t;
|
||||
|
||||
/*!
|
||||
|
@ -183,7 +183,7 @@ typedef struct
|
|||
|
||||
/*! \brief A pointer to a callback routine to be called when frames are
|
||||
exchanged. */
|
||||
t38_gateway_real_time_frame_handler_t *real_time_frame_handler;
|
||||
t38_gateway_real_time_frame_handler_t real_time_frame_handler;
|
||||
/*! \brief An opaque pointer supplied in real time frame callbacks. */
|
||||
void *real_time_frame_user_data;
|
||||
} t38_gateway_core_state_t;
|
||||
|
|
|
@ -32,7 +32,7 @@ struct v8_state_s
|
|||
int calling_party;
|
||||
|
||||
/*! \brief A handler to process the V.8 signals */
|
||||
v8_result_handler_t *result_handler;
|
||||
v8_result_handler_t result_handler;
|
||||
/*! \brief An opaque pointer passed to result_handler */
|
||||
void *result_handler_user_data;
|
||||
|
||||
|
|
|
@ -158,7 +158,7 @@ typedef struct t30_state_s t30_state_t;
|
|||
\param result The phase B event code.
|
||||
\return The new status. Normally, T30_ERR_OK is returned.
|
||||
*/
|
||||
typedef int (t30_phase_b_handler_t)(t30_state_t *s, void *user_data, int result);
|
||||
typedef int (*t30_phase_b_handler_t)(t30_state_t *s, void *user_data, int result);
|
||||
|
||||
/*!
|
||||
T.30 phase D callback handler.
|
||||
|
@ -168,7 +168,7 @@ typedef int (t30_phase_b_handler_t)(t30_state_t *s, void *user_data, int result)
|
|||
\param result The phase D event code.
|
||||
\return The new status. Normally, T30_ERR_OK is returned.
|
||||
*/
|
||||
typedef int (t30_phase_d_handler_t)(t30_state_t *s, void *user_data, int result);
|
||||
typedef int (*t30_phase_d_handler_t)(t30_state_t *s, void *user_data, int result);
|
||||
|
||||
/*!
|
||||
T.30 phase E callback handler.
|
||||
|
@ -177,7 +177,7 @@ typedef int (t30_phase_d_handler_t)(t30_state_t *s, void *user_data, int result)
|
|||
\param user_data An opaque pointer.
|
||||
\param completion_code The phase E completion code.
|
||||
*/
|
||||
typedef void (t30_phase_e_handler_t)(t30_state_t *s, void *user_data, int completion_code);
|
||||
typedef void (*t30_phase_e_handler_t)(t30_state_t *s, void *user_data, int completion_code);
|
||||
|
||||
/*!
|
||||
T.30 real time frame handler.
|
||||
|
@ -188,11 +188,11 @@ typedef void (t30_phase_e_handler_t)(t30_state_t *s, void *user_data, int comple
|
|||
\param msg The HDLC message.
|
||||
\param len The length of the message.
|
||||
*/
|
||||
typedef void (t30_real_time_frame_handler_t)(t30_state_t *s,
|
||||
void *user_data,
|
||||
int direction,
|
||||
const uint8_t msg[],
|
||||
int len);
|
||||
typedef void (*t30_real_time_frame_handler_t)(t30_state_t *s,
|
||||
void *user_data,
|
||||
int direction,
|
||||
const uint8_t msg[],
|
||||
int len);
|
||||
|
||||
/*!
|
||||
T.30 document handler.
|
||||
|
@ -201,7 +201,7 @@ typedef void (t30_real_time_frame_handler_t)(t30_state_t *s,
|
|||
\param user_data An opaque pointer.
|
||||
\param result The document event code.
|
||||
*/
|
||||
typedef int (t30_document_handler_t)(t30_state_t *s, void *user_data, int status);
|
||||
typedef int (*t30_document_handler_t)(t30_state_t *s, void *user_data, int status);
|
||||
|
||||
/*!
|
||||
T.30 set a receive or transmit type handler.
|
||||
|
@ -212,7 +212,7 @@ typedef int (t30_document_handler_t)(t30_state_t *s, void *user_data, int status
|
|||
\param short_train TRUE if the short training sequence should be used (where one exists).
|
||||
\param use_hdlc FALSE for bit stream, TRUE for HDLC framing.
|
||||
*/
|
||||
typedef void (t30_set_handler_t)(void *user_data, int type, int bit_rate, int short_train, int use_hdlc);
|
||||
typedef void (*t30_set_handler_t)(void *user_data, int type, int bit_rate, int short_train, int use_hdlc);
|
||||
|
||||
/*!
|
||||
T.30 send HDLC handler.
|
||||
|
@ -221,7 +221,7 @@ typedef void (t30_set_handler_t)(void *user_data, int type, int bit_rate, int sh
|
|||
\param msg The HDLC message.
|
||||
\param len The length of the message.
|
||||
*/
|
||||
typedef void (t30_send_hdlc_handler_t)(void *user_data, const uint8_t msg[], int len);
|
||||
typedef void (*t30_send_hdlc_handler_t)(void *user_data, const uint8_t msg[], int len);
|
||||
|
||||
/*!
|
||||
T.30 protocol completion codes, at phase E.
|
||||
|
@ -572,11 +572,11 @@ extern "C"
|
|||
\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,
|
||||
t30_set_handler_t *set_rx_type_handler,
|
||||
t30_set_handler_t set_rx_type_handler,
|
||||
void *set_rx_type_user_data,
|
||||
t30_set_handler_t *set_tx_type_handler,
|
||||
t30_set_handler_t set_tx_type_handler,
|
||||
void *set_tx_type_user_data,
|
||||
t30_send_hdlc_handler_t *send_hdlc_handler,
|
||||
t30_send_hdlc_handler_t send_hdlc_handler,
|
||||
void *send_hdlc_user_data);
|
||||
|
||||
/*! Release a T.30 context.
|
||||
|
|
|
@ -507,28 +507,28 @@ SPAN_DECLARE(int) t30_set_receiver_not_ready(t30_state_t *s, int count);
|
|||
\param s The T.30 context.
|
||||
\param handler The callback function.
|
||||
\param user_data An opaque pointer passed to the callback function. */
|
||||
SPAN_DECLARE(void) t30_set_phase_b_handler(t30_state_t *s, t30_phase_b_handler_t *handler, void *user_data);
|
||||
SPAN_DECLARE(void) t30_set_phase_b_handler(t30_state_t *s, t30_phase_b_handler_t handler, void *user_data);
|
||||
|
||||
/*! Set a callback function for T.30 phase D handling.
|
||||
\brief Set a callback function for T.30 phase D handling.
|
||||
\param s The T.30 context.
|
||||
\param handler The callback function.
|
||||
\param user_data An opaque pointer passed to the callback function. */
|
||||
SPAN_DECLARE(void) t30_set_phase_d_handler(t30_state_t *s, t30_phase_d_handler_t *handler, void *user_data);
|
||||
SPAN_DECLARE(void) t30_set_phase_d_handler(t30_state_t *s, t30_phase_d_handler_t handler, void *user_data);
|
||||
|
||||
/*! Set a callback function for T.30 phase E handling.
|
||||
\brief Set a callback function for T.30 phase E handling.
|
||||
\param s The T.30 context.
|
||||
\param handler The callback function.
|
||||
\param user_data An opaque pointer passed to the callback function. */
|
||||
SPAN_DECLARE(void) t30_set_phase_e_handler(t30_state_t *s, t30_phase_e_handler_t *handler, void *user_data);
|
||||
SPAN_DECLARE(void) t30_set_phase_e_handler(t30_state_t *s, t30_phase_e_handler_t handler, void *user_data);
|
||||
|
||||
/*! Set a callback function for T.30 end of document handling.
|
||||
\brief Set a callback function for T.30 end of document handling.
|
||||
\param s The T.30 context.
|
||||
\param handler The callback function.
|
||||
\param user_data An opaque pointer passed to the callback function. */
|
||||
SPAN_DECLARE(void) t30_set_document_handler(t30_state_t *s, t30_document_handler_t *handler, void *user_data);
|
||||
SPAN_DECLARE(void) t30_set_document_handler(t30_state_t *s, t30_document_handler_t handler, void *user_data);
|
||||
|
||||
/*! Set a callback function for T.30 frame exchange monitoring. This is called from the heart
|
||||
of the signal processing, so don't take too long in the handler routine.
|
||||
|
@ -536,7 +536,7 @@ SPAN_DECLARE(void) t30_set_document_handler(t30_state_t *s, t30_document_handler
|
|||
\param s The T.30 context.
|
||||
\param handler The callback function.
|
||||
\param user_data An opaque pointer passed to the callback function. */
|
||||
SPAN_DECLARE(void) t30_set_real_time_frame_handler(t30_state_t *s, t30_real_time_frame_handler_t *handler, void *user_data);
|
||||
SPAN_DECLARE(void) t30_set_real_time_frame_handler(t30_state_t *s, t30_real_time_frame_handler_t handler, void *user_data);
|
||||
|
||||
/*! Get a pointer to the logging context associated with a T.30 context.
|
||||
\brief Get a pointer to the logging context associated with a T.30 context.
|
||||
|
|
|
@ -42,7 +42,7 @@ modems in spandsp.
|
|||
*/
|
||||
typedef struct t31_state_s t31_state_t;
|
||||
|
||||
typedef int (t31_modem_control_handler_t)(t31_state_t *s, void *user_data, int op, const char *num);
|
||||
typedef int (*t31_modem_control_handler_t)(t31_state_t *s, void *user_data, int op, const char *num);
|
||||
|
||||
#define T31_TX_BUF_LEN (4096)
|
||||
#define T31_TX_BUF_HIGH_TIDE (4096 - 1024)
|
||||
|
@ -133,11 +133,11 @@ SPAN_DECLARE(t38_core_state_t *) t31_get_t38_core_state(t31_state_t *s);
|
|||
\param tx_t38_packet_user_data ???
|
||||
\return A pointer to the T.31 context. */
|
||||
SPAN_DECLARE(t31_state_t *) t31_init(t31_state_t *s,
|
||||
at_tx_handler_t *at_tx_handler,
|
||||
at_tx_handler_t at_tx_handler,
|
||||
void *at_tx_user_data,
|
||||
t31_modem_control_handler_t *modem_control_handler,
|
||||
t31_modem_control_handler_t modem_control_handler,
|
||||
void *modem_control_user_data,
|
||||
t38_tx_packet_handler_t *tx_t38_packet_handler,
|
||||
t38_tx_packet_handler_t tx_t38_packet_handler,
|
||||
void *tx_t38_packet_user_data);
|
||||
|
||||
/*! Release a T.31 context.
|
||||
|
|
|
@ -201,11 +201,11 @@ typedef struct
|
|||
*/
|
||||
typedef struct t38_core_state_s t38_core_state_t;
|
||||
|
||||
typedef int (t38_tx_packet_handler_t)(t38_core_state_t *s, void *user_data, const uint8_t *buf, int len, int count);
|
||||
typedef int (*t38_tx_packet_handler_t)(t38_core_state_t *s, void *user_data, const uint8_t *buf, int len, int count);
|
||||
|
||||
typedef int (t38_rx_indicator_handler_t)(t38_core_state_t *s, void *user_data, int indicator);
|
||||
typedef int (t38_rx_data_handler_t)(t38_core_state_t *s, void *user_data, int data_type, int field_type, const uint8_t *buf, int len);
|
||||
typedef int (t38_rx_missing_handler_t)(t38_core_state_t *s, void *user_data, int rx_seq_no, int expected_seq_no);
|
||||
typedef int (*t38_rx_indicator_handler_t)(t38_core_state_t *s, void *user_data, int indicator);
|
||||
typedef int (*t38_rx_data_handler_t)(t38_core_state_t *s, void *user_data, int data_type, int field_type, const uint8_t *buf, int len);
|
||||
typedef int (*t38_rx_missing_handler_t)(t38_core_state_t *s, void *user_data, int rx_seq_no, int expected_seq_no);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C"
|
||||
|
@ -398,11 +398,11 @@ SPAN_DECLARE(int) t38_core_restart(t38_core_state_t *s);
|
|||
\param tx_packet_user_data An opaque pointer passed to the tx_packet_handler.
|
||||
\return A pointer to the T.38 context, or NULL if there was a problem. */
|
||||
SPAN_DECLARE(t38_core_state_t *) t38_core_init(t38_core_state_t *s,
|
||||
t38_rx_indicator_handler_t *rx_indicator_handler,
|
||||
t38_rx_data_handler_t *rx_data_handler,
|
||||
t38_rx_missing_handler_t *rx_missing_handler,
|
||||
t38_rx_indicator_handler_t rx_indicator_handler,
|
||||
t38_rx_data_handler_t rx_data_handler,
|
||||
t38_rx_missing_handler_t rx_missing_handler,
|
||||
void *rx_user_data,
|
||||
t38_tx_packet_handler_t *tx_packet_handler,
|
||||
t38_tx_packet_handler_t tx_packet_handler,
|
||||
void *tx_packet_user_data);
|
||||
|
||||
/*! Release a signaling tone transmitter context.
|
||||
|
|
|
@ -56,11 +56,11 @@ typedef struct t38_gateway_state_s t38_gateway_state_t;
|
|||
\param msg The HDLC message.
|
||||
\param len The length of the message.
|
||||
*/
|
||||
typedef void (t38_gateway_real_time_frame_handler_t)(t38_gateway_state_t *s,
|
||||
void *user_data,
|
||||
int direction,
|
||||
const uint8_t *msg,
|
||||
int len);
|
||||
typedef void (*t38_gateway_real_time_frame_handler_t)(t38_gateway_state_t *s,
|
||||
void *user_data,
|
||||
int direction,
|
||||
const uint8_t *msg,
|
||||
int len);
|
||||
|
||||
/*!
|
||||
T.38 gateway results.
|
||||
|
@ -86,7 +86,7 @@ extern "C"
|
|||
\param tx_packet_user_data An opaque pointer passed to the tx_packet_handler routine.
|
||||
\return A pointer to the termination mode T.38 context, or NULL if there was a problem. */
|
||||
SPAN_DECLARE(t38_gateway_state_t *) t38_gateway_init(t38_gateway_state_t *s,
|
||||
t38_tx_packet_handler_t *tx_packet_handler,
|
||||
t38_tx_packet_handler_t tx_packet_handler,
|
||||
void *tx_packet_user_data);
|
||||
|
||||
/*! Release a gateway mode T.38 context.
|
||||
|
@ -212,7 +212,7 @@ SPAN_DECLARE(logging_state_t *) t38_gateway_get_logging_state(t38_gateway_state_
|
|||
\param handler The callback function.
|
||||
\param user_data An opaque pointer passed to the callback function. */
|
||||
SPAN_DECLARE(void) t38_gateway_set_real_time_frame_handler(t38_gateway_state_t *s,
|
||||
t38_gateway_real_time_frame_handler_t *handler,
|
||||
t38_gateway_real_time_frame_handler_t handler,
|
||||
void *user_data);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
|
|
|
@ -123,7 +123,7 @@ SPAN_DECLARE(int) t38_terminal_restart(t38_terminal_state_t *s,
|
|||
\return A pointer to the termination mode T.38 context, or NULL if there was a problem. */
|
||||
SPAN_DECLARE(t38_terminal_state_t *) t38_terminal_init(t38_terminal_state_t *s,
|
||||
int calling_party,
|
||||
t38_tx_packet_handler_t *tx_packet_handler,
|
||||
t38_tx_packet_handler_t tx_packet_handler,
|
||||
void *tx_packet_user_data);
|
||||
|
||||
/*! Release a termination mode T.38 context.
|
||||
|
|
|
@ -56,16 +56,16 @@
|
|||
#define DBOV_MAX_SINE_POWER (-3.02f)
|
||||
|
||||
/*! \brief A handler for pure receive. The buffer cannot be altered. */
|
||||
typedef int (span_rx_handler_t)(void *s, const int16_t amp[], int len);
|
||||
typedef int (*span_rx_handler_t)(void *s, const int16_t amp[], int len);
|
||||
|
||||
/*! \brief A handler for receive, where the buffer can be altered. */
|
||||
typedef int (span_mod_handler_t)(void *s, int16_t amp[], int len);
|
||||
typedef int (*span_mod_handler_t)(void *s, int16_t amp[], int len);
|
||||
|
||||
/*! \brief A handler for missing receive data fill-in. */
|
||||
typedef int (span_rx_fillin_handler_t)(void *s, int len);
|
||||
typedef int (*span_rx_fillin_handler_t)(void *s, int len);
|
||||
|
||||
/*! \brief A handler for transmit, where the buffer will be filled. */
|
||||
typedef int (span_tx_handler_t)(void *s, int16_t amp[], int max_len);
|
||||
typedef int (*span_tx_handler_t)(void *s, int16_t amp[], int max_len);
|
||||
|
||||
#define ms_to_samples(t) ((t)*(SAMPLE_RATE/1000))
|
||||
#define us_to_samples(t) ((t)/(1000000/SAMPLE_RATE))
|
||||
|
|
|
@ -43,7 +43,7 @@ being negotiating and training with their chosen modem standard.
|
|||
|
||||
typedef struct v8_parms_s v8_parms_t;
|
||||
|
||||
typedef void (v8_result_handler_t)(void *user_data, v8_parms_t *result);
|
||||
typedef void (*v8_result_handler_t)(void *user_data, v8_parms_t *result);
|
||||
|
||||
enum v8_call_function_e
|
||||
{
|
||||
|
@ -147,7 +147,7 @@ SPAN_DECLARE(int) v8_restart(v8_state_t *s,
|
|||
SPAN_DECLARE(v8_state_t *) v8_init(v8_state_t *s,
|
||||
int calling_party,
|
||||
v8_parms_t *parms,
|
||||
v8_result_handler_t *result_handler,
|
||||
v8_result_handler_t result_handler,
|
||||
void *user_data);
|
||||
|
||||
/*! Release a V.8 context.
|
||||
|
|
|
@ -6345,11 +6345,11 @@ SPAN_DECLARE(int) t30_restart(t30_state_t *s)
|
|||
|
||||
SPAN_DECLARE(t30_state_t *) t30_init(t30_state_t *s,
|
||||
int calling_party,
|
||||
t30_set_handler_t *set_rx_type_handler,
|
||||
t30_set_handler_t set_rx_type_handler,
|
||||
void *set_rx_type_user_data,
|
||||
t30_set_handler_t *set_tx_type_handler,
|
||||
t30_set_handler_t set_tx_type_handler,
|
||||
void *set_tx_type_user_data,
|
||||
t30_send_hdlc_handler_t *send_hdlc_handler,
|
||||
t30_send_hdlc_handler_t send_hdlc_handler,
|
||||
void *send_hdlc_user_data)
|
||||
{
|
||||
if (s == NULL)
|
||||
|
|
|
@ -765,35 +765,35 @@ SPAN_DECLARE(int) t30_set_receiver_not_ready(t30_state_t *s, int count)
|
|||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
SPAN_DECLARE(void) t30_set_phase_b_handler(t30_state_t *s, t30_phase_b_handler_t *handler, void *user_data)
|
||||
SPAN_DECLARE(void) t30_set_phase_b_handler(t30_state_t *s, t30_phase_b_handler_t handler, void *user_data)
|
||||
{
|
||||
s->phase_b_handler = handler;
|
||||
s->phase_b_user_data = user_data;
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
SPAN_DECLARE(void) t30_set_phase_d_handler(t30_state_t *s, t30_phase_d_handler_t *handler, void *user_data)
|
||||
SPAN_DECLARE(void) t30_set_phase_d_handler(t30_state_t *s, t30_phase_d_handler_t handler, void *user_data)
|
||||
{
|
||||
s->phase_d_handler = handler;
|
||||
s->phase_d_user_data = user_data;
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
SPAN_DECLARE(void) t30_set_phase_e_handler(t30_state_t *s, t30_phase_e_handler_t *handler, void *user_data)
|
||||
SPAN_DECLARE(void) t30_set_phase_e_handler(t30_state_t *s, t30_phase_e_handler_t handler, void *user_data)
|
||||
{
|
||||
s->phase_e_handler = handler;
|
||||
s->phase_e_user_data = user_data;
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
SPAN_DECLARE(void) t30_set_document_handler(t30_state_t *s, t30_document_handler_t *handler, void *user_data)
|
||||
SPAN_DECLARE(void) t30_set_document_handler(t30_state_t *s, t30_document_handler_t handler, void *user_data)
|
||||
{
|
||||
s->document_handler = handler;
|
||||
s->document_user_data = user_data;
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
SPAN_DECLARE(void) t30_set_real_time_frame_handler(t30_state_t *s, t30_real_time_frame_handler_t *handler, void *user_data)
|
||||
SPAN_DECLARE(void) t30_set_real_time_frame_handler(t30_state_t *s, t30_real_time_frame_handler_t handler, void *user_data)
|
||||
{
|
||||
s->real_time_frame_handler = handler;
|
||||
s->real_time_frame_user_data = user_data;
|
||||
|
|
|
@ -186,9 +186,9 @@ enum
|
|||
|
||||
static int restart_modem(t31_state_t *s, int new_modem);
|
||||
static void hdlc_accept_frame(void *user_data, const uint8_t *msg, int len, int ok);
|
||||
static void set_rx_handler(t31_state_t *s, span_rx_handler_t *rx_handler, span_rx_fillin_handler_t *fillin_handler, void *user_data);
|
||||
static void set_tx_handler(t31_state_t *s, span_tx_handler_t *handler, void *user_data);
|
||||
static void set_next_tx_handler(t31_state_t *s, span_tx_handler_t *handler, void *user_data);
|
||||
static void set_rx_handler(t31_state_t *s, span_rx_handler_t rx_handler, span_rx_fillin_handler_t fillin_handler, void *user_data);
|
||||
static void set_tx_handler(t31_state_t *s, span_tx_handler_t handler, void *user_data);
|
||||
static void set_next_tx_handler(t31_state_t *s, span_tx_handler_t handler, void *user_data);
|
||||
static int v17_v21_rx(void *user_data, const int16_t amp[], int len);
|
||||
static int v17_v21_rx_fillin(void *user_data, int len);
|
||||
static int v27ter_v21_rx(void *user_data, const int16_t amp[], int len);
|
||||
|
@ -1327,6 +1327,7 @@ static void tone_detected(void *user_data, int tone, int level, int delay)
|
|||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
#if 0
|
||||
static void v8_handler(void *user_data, v8_parms_t *result)
|
||||
{
|
||||
t31_state_t *s;
|
||||
|
@ -1335,6 +1336,7 @@ static void v8_handler(void *user_data, v8_parms_t *result)
|
|||
span_log(&s->logging, SPAN_LOG_FLOW, "V.8 report received\n");
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
#endif
|
||||
|
||||
static void hdlc_tx_underflow(void *user_data)
|
||||
{
|
||||
|
@ -1564,7 +1566,7 @@ static int restart_modem(t31_state_t *s, int new_modem)
|
|||
s->at_state.rx_signal_present = FALSE;
|
||||
s->at_state.rx_trained = FALSE;
|
||||
s->rx_frame_received = FALSE;
|
||||
set_rx_handler(s, (span_rx_handler_t *) &span_dummy_rx, (span_rx_fillin_handler_t *) &span_dummy_rx_fillin, NULL);
|
||||
set_rx_handler(s, (span_rx_handler_t) &span_dummy_rx, (span_rx_fillin_handler_t) &span_dummy_rx_fillin, NULL);
|
||||
use_hdlc = FALSE;
|
||||
switch (s->modem)
|
||||
{
|
||||
|
@ -1583,10 +1585,10 @@ static int restart_modem(t31_state_t *s, int new_modem)
|
|||
/* Do V.21/HDLC receive in parallel. The other end may send its
|
||||
first message at any time. The CNG tone will continue until
|
||||
we get a valid preamble. */
|
||||
set_rx_handler(s, (span_rx_handler_t *) &cng_rx, (span_rx_fillin_handler_t *) &span_dummy_rx_fillin, s);
|
||||
set_rx_handler(s, (span_rx_handler_t) &cng_rx, (span_rx_fillin_handler_t) &span_dummy_rx_fillin, s);
|
||||
t31_v21_rx(s);
|
||||
set_tx_handler(s, (span_tx_handler_t *) &modem_connect_tones_tx, &t->connect_tx);
|
||||
set_next_tx_handler(s, (span_tx_handler_t *) NULL, NULL);
|
||||
set_tx_handler(s, (span_tx_handler_t) &modem_connect_tones_tx, &t->connect_tx);
|
||||
set_next_tx_handler(s, (span_tx_handler_t) NULL, NULL);
|
||||
}
|
||||
s->at_state.transmit = TRUE;
|
||||
break;
|
||||
|
@ -1596,10 +1598,10 @@ static int restart_modem(t31_state_t *s, int new_modem)
|
|||
}
|
||||
else
|
||||
{
|
||||
set_rx_handler(s, (span_rx_handler_t *) &cng_rx, (span_rx_fillin_handler_t *) &span_dummy_rx_fillin, s);
|
||||
set_rx_handler(s, (span_rx_handler_t) &cng_rx, (span_rx_fillin_handler_t) &span_dummy_rx_fillin, s);
|
||||
t31_v21_rx(s);
|
||||
silence_gen_set(&t->silence_gen, 0);
|
||||
set_tx_handler(s, (span_tx_handler_t *) &silence_gen, &t->silence_gen);
|
||||
set_tx_handler(s, (span_tx_handler_t) &silence_gen, &t->silence_gen);
|
||||
}
|
||||
s->at_state.transmit = FALSE;
|
||||
break;
|
||||
|
@ -1613,8 +1615,8 @@ static int restart_modem(t31_state_t *s, int new_modem)
|
|||
else
|
||||
{
|
||||
modem_connect_tones_tx_init(&t->connect_tx, MODEM_CONNECT_TONES_FAX_CED);
|
||||
set_tx_handler(s, (span_tx_handler_t *) &modem_connect_tones_tx, &t->connect_tx);
|
||||
set_next_tx_handler(s, (span_tx_handler_t *) NULL, NULL);
|
||||
set_tx_handler(s, (span_tx_handler_t) &modem_connect_tones_tx, &t->connect_tx);
|
||||
set_next_tx_handler(s, (span_tx_handler_t) NULL, NULL);
|
||||
}
|
||||
s->at_state.transmit = TRUE;
|
||||
break;
|
||||
|
@ -1633,8 +1635,8 @@ static int restart_modem(t31_state_t *s, int new_modem)
|
|||
/* The spec says 1s +-15% of preamble. So, the minimum is 32 octets. */
|
||||
hdlc_tx_flags(&t->hdlc_tx, 32);
|
||||
fsk_tx_init(&t->v21_tx, &preset_fsk_specs[FSK_V21CH2], (get_bit_func_t) hdlc_tx_get_bit, &t->hdlc_tx);
|
||||
set_tx_handler(s, (span_tx_handler_t *) &fsk_tx, &t->v21_tx);
|
||||
set_next_tx_handler(s, (span_tx_handler_t *) NULL, NULL);
|
||||
set_tx_handler(s, (span_tx_handler_t) &fsk_tx, &t->v21_tx);
|
||||
set_next_tx_handler(s, (span_tx_handler_t) NULL, NULL);
|
||||
}
|
||||
s->hdlc_tx.final = FALSE;
|
||||
s->hdlc_tx.len = 0;
|
||||
|
@ -1647,7 +1649,7 @@ static int restart_modem(t31_state_t *s, int new_modem)
|
|||
}
|
||||
else
|
||||
{
|
||||
set_rx_handler(s, (span_rx_handler_t *) &fsk_rx, (span_rx_fillin_handler_t *) &fsk_rx_fillin, &t->v21_rx);
|
||||
set_rx_handler(s, (span_rx_handler_t) &fsk_rx, (span_rx_fillin_handler_t) &fsk_rx_fillin, &t->v21_rx);
|
||||
t31_v21_rx(s);
|
||||
}
|
||||
break;
|
||||
|
@ -1679,8 +1681,8 @@ static int restart_modem(t31_state_t *s, int new_modem)
|
|||
else
|
||||
{
|
||||
v17_tx_restart(&t->fast_modems.v17_tx, s->bit_rate, FALSE, s->short_train);
|
||||
set_tx_handler(s, (span_tx_handler_t *) &v17_tx, &t->fast_modems.v17_tx);
|
||||
set_next_tx_handler(s, (span_tx_handler_t *) NULL, NULL);
|
||||
set_tx_handler(s, (span_tx_handler_t) &v17_tx, &t->fast_modems.v17_tx);
|
||||
set_next_tx_handler(s, (span_tx_handler_t) NULL, NULL);
|
||||
}
|
||||
s->tx.out_bytes = 0;
|
||||
s->tx.data_started = FALSE;
|
||||
|
@ -1689,7 +1691,7 @@ static int restart_modem(t31_state_t *s, int new_modem)
|
|||
case FAX_MODEM_V17_RX:
|
||||
if (!s->t38_mode)
|
||||
{
|
||||
set_rx_handler(s, (span_rx_handler_t *) &v17_v21_rx, (span_rx_fillin_handler_t *) &v17_v21_rx_fillin, s);
|
||||
set_rx_handler(s, (span_rx_handler_t) &v17_v21_rx, (span_rx_fillin_handler_t) &v17_v21_rx_fillin, s);
|
||||
v17_rx_restart(&t->fast_modems.v17_rx, s->bit_rate, s->short_train);
|
||||
/* Allow for +FCERROR/+FRH:3 */
|
||||
t31_v21_rx(s);
|
||||
|
@ -1716,8 +1718,8 @@ static int restart_modem(t31_state_t *s, int new_modem)
|
|||
else
|
||||
{
|
||||
v27ter_tx_restart(&t->fast_modems.v27ter_tx, s->bit_rate, FALSE);
|
||||
set_tx_handler(s, (span_tx_handler_t *) &v27ter_tx, &t->fast_modems.v27ter_tx);
|
||||
set_next_tx_handler(s, (span_tx_handler_t *) NULL, NULL);
|
||||
set_tx_handler(s, (span_tx_handler_t) &v27ter_tx, &t->fast_modems.v27ter_tx);
|
||||
set_next_tx_handler(s, (span_tx_handler_t) NULL, NULL);
|
||||
}
|
||||
s->tx.out_bytes = 0;
|
||||
s->tx.data_started = FALSE;
|
||||
|
@ -1726,7 +1728,7 @@ static int restart_modem(t31_state_t *s, int new_modem)
|
|||
case FAX_MODEM_V27TER_RX:
|
||||
if (!s->t38_mode)
|
||||
{
|
||||
set_rx_handler(s, (span_rx_handler_t *) &v27ter_v21_rx, (span_rx_fillin_handler_t *) &v27ter_v21_rx_fillin, s);
|
||||
set_rx_handler(s, (span_rx_handler_t) &v27ter_v21_rx, (span_rx_fillin_handler_t) &v27ter_v21_rx_fillin, s);
|
||||
v27ter_rx_restart(&t->fast_modems.v27ter_rx, s->bit_rate, FALSE);
|
||||
/* Allow for +FCERROR/+FRH:3 */
|
||||
t31_v21_rx(s);
|
||||
|
@ -1753,8 +1755,8 @@ static int restart_modem(t31_state_t *s, int new_modem)
|
|||
else
|
||||
{
|
||||
v29_tx_restart(&t->fast_modems.v29_tx, s->bit_rate, FALSE);
|
||||
set_tx_handler(s, (span_tx_handler_t *) &v29_tx, &t->fast_modems.v29_tx);
|
||||
set_next_tx_handler(s, (span_tx_handler_t *) NULL, NULL);
|
||||
set_tx_handler(s, (span_tx_handler_t) &v29_tx, &t->fast_modems.v29_tx);
|
||||
set_next_tx_handler(s, (span_tx_handler_t) NULL, NULL);
|
||||
}
|
||||
s->tx.out_bytes = 0;
|
||||
s->tx.data_started = FALSE;
|
||||
|
@ -1763,7 +1765,7 @@ static int restart_modem(t31_state_t *s, int new_modem)
|
|||
case FAX_MODEM_V29_RX:
|
||||
if (!s->t38_mode)
|
||||
{
|
||||
set_rx_handler(s, (span_rx_handler_t *) &v29_v21_rx, (span_rx_fillin_handler_t *) &v29_v21_rx_fillin, s);
|
||||
set_rx_handler(s, (span_rx_handler_t) &v29_v21_rx, (span_rx_fillin_handler_t) &v29_v21_rx_fillin, s);
|
||||
v29_rx_restart(&t->fast_modems.v29_rx, s->bit_rate, FALSE);
|
||||
/* Allow for +FCERROR/+FRH:3 */
|
||||
t31_v21_rx(s);
|
||||
|
@ -1781,18 +1783,18 @@ static int restart_modem(t31_state_t *s, int new_modem)
|
|||
else
|
||||
{
|
||||
silence_gen_set(&t->silence_gen, 0);
|
||||
set_tx_handler(s, (span_tx_handler_t *) &silence_gen, &t->silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t *) NULL, NULL);
|
||||
set_tx_handler(s, (span_tx_handler_t) &silence_gen, &t->silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t) NULL, NULL);
|
||||
}
|
||||
s->at_state.transmit = FALSE;
|
||||
break;
|
||||
case FAX_MODEM_SILENCE_RX:
|
||||
if (!s->t38_mode)
|
||||
{
|
||||
set_rx_handler(s, (span_rx_handler_t *) &silence_rx, (span_rx_fillin_handler_t *) &span_dummy_rx_fillin, s);
|
||||
set_rx_handler(s, (span_rx_handler_t) &silence_rx, (span_rx_fillin_handler_t) &span_dummy_rx_fillin, s);
|
||||
silence_gen_set(&t->silence_gen, 0);
|
||||
set_tx_handler(s, (span_tx_handler_t *) &silence_gen, &t->silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t *) NULL, NULL);
|
||||
set_tx_handler(s, (span_tx_handler_t) &silence_gen, &t->silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t) NULL, NULL);
|
||||
}
|
||||
s->at_state.transmit = FALSE;
|
||||
break;
|
||||
|
@ -1806,8 +1808,8 @@ static int restart_modem(t31_state_t *s, int new_modem)
|
|||
{
|
||||
s->modem = FAX_MODEM_SILENCE_TX;
|
||||
silence_gen_alter(&t->silence_gen, ms_to_samples(200));
|
||||
set_tx_handler(s, (span_tx_handler_t *) &silence_gen, &t->silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t *) NULL, NULL);
|
||||
set_tx_handler(s, (span_tx_handler_t) &silence_gen, &t->silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t) NULL, NULL);
|
||||
s->at_state.transmit = TRUE;
|
||||
}
|
||||
break;
|
||||
|
@ -2150,7 +2152,7 @@ SPAN_DECLARE(int) t31_at_rx(t31_state_t *s, const char *t, int len)
|
|||
s->at_state.rx_data_bytes = 0;
|
||||
s->at_state.transmit = FALSE;
|
||||
s->modem = FAX_MODEM_SILENCE_TX;
|
||||
set_rx_handler(s, (span_rx_handler_t *) &span_dummy_rx, (span_rx_fillin_handler_t *) &span_dummy_rx_fillin, NULL);
|
||||
set_rx_handler(s, (span_rx_handler_t) &span_dummy_rx, (span_rx_fillin_handler_t) &span_dummy_rx_fillin, NULL);
|
||||
t31_set_at_rx_mode(s, AT_MODE_OFFHOOK_COMMAND);
|
||||
at_put_response_code(&s->at_state, AT_RESPONSE_CODE_OK);
|
||||
}
|
||||
|
@ -2177,8 +2179,8 @@ SPAN_DECLARE(int) t31_at_rx(t31_state_t *s, const char *t, int len)
|
|||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
static void set_rx_handler(t31_state_t *s,
|
||||
span_rx_handler_t *rx_handler,
|
||||
span_rx_fillin_handler_t *fillin_handler,
|
||||
span_rx_handler_t rx_handler,
|
||||
span_rx_fillin_handler_t fillin_handler,
|
||||
void *user_data)
|
||||
{
|
||||
s->audio.modems.rx_handler = rx_handler;
|
||||
|
@ -2187,14 +2189,14 @@ static void set_rx_handler(t31_state_t *s,
|
|||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
static void set_tx_handler(t31_state_t *s, span_tx_handler_t *handler, void *user_data)
|
||||
static void set_tx_handler(t31_state_t *s, span_tx_handler_t handler, void *user_data)
|
||||
{
|
||||
s->audio.modems.tx_handler = handler;
|
||||
s->audio.modems.tx_user_data = user_data;
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
static void set_next_tx_handler(t31_state_t *s, span_tx_handler_t *handler, void *user_data)
|
||||
static void set_next_tx_handler(t31_state_t *s, span_tx_handler_t handler, void *user_data)
|
||||
{
|
||||
s->audio.modems.next_tx_handler = handler;
|
||||
s->audio.modems.next_tx_user_data = user_data;
|
||||
|
@ -2252,7 +2254,7 @@ static int v17_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
/* The fast modem has trained, so we no longer need to run the slow
|
||||
one in parallel. */
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.17 + V.21 to V.17 (%.2fdBm0)\n", v17_rx_signal_power(&s->fast_modems.v17_rx));
|
||||
set_rx_handler(t, (span_rx_handler_t *) &v17_rx, (span_rx_fillin_handler_t *) &v17_rx_fillin, &s->fast_modems.v17_rx);
|
||||
set_rx_handler(t, (span_rx_handler_t) &v17_rx, (span_rx_fillin_handler_t) &v17_rx_fillin, &s->fast_modems.v17_rx);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2262,7 +2264,7 @@ static int v17_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
/* We have received something, and the fast modem has not trained. We must
|
||||
be receiving valid V.21 */
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.17 + V.21 to V.21 (%.2fdBm0)\n", fsk_rx_signal_power(&s->v21_rx));
|
||||
set_rx_handler(t, (span_rx_handler_t *) &fsk_rx, (span_rx_fillin_handler_t *) &fsk_rx_fillin, &s->v21_rx);
|
||||
set_rx_handler(t, (span_rx_handler_t) &fsk_rx, (span_rx_fillin_handler_t) &fsk_rx_fillin, &s->v21_rx);
|
||||
}
|
||||
}
|
||||
return len;
|
||||
|
@ -2295,7 +2297,7 @@ static int v27ter_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
/* The fast modem has trained, so we no longer need to run the slow
|
||||
one in parallel. */
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.27ter + V.21 to V.27ter (%.2fdBm0)\n", v27ter_rx_signal_power(&s->fast_modems.v27ter_rx));
|
||||
set_rx_handler(t, (span_rx_handler_t *) &v27ter_rx, (span_rx_fillin_handler_t *) &v27ter_rx_fillin, &s->fast_modems.v27ter_rx);
|
||||
set_rx_handler(t, (span_rx_handler_t) &v27ter_rx, (span_rx_fillin_handler_t) &v27ter_rx_fillin, &s->fast_modems.v27ter_rx);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2305,7 +2307,7 @@ static int v27ter_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
/* We have received something, and the fast modem has not trained. We must
|
||||
be receiving valid V.21 */
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.27ter + V.21 to V.21 (%.2fdBm0)\n", fsk_rx_signal_power(&s->v21_rx));
|
||||
set_rx_handler(t, (span_rx_handler_t *) &fsk_rx, (span_rx_fillin_handler_t *) &fsk_rx_fillin, &s->v21_rx);
|
||||
set_rx_handler(t, (span_rx_handler_t) &fsk_rx, (span_rx_fillin_handler_t) &fsk_rx_fillin, &s->v21_rx);
|
||||
}
|
||||
}
|
||||
return len;
|
||||
|
@ -2338,7 +2340,7 @@ static int v29_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
/* The fast modem has trained, so we no longer need to run the slow
|
||||
one in parallel. */
|
||||
span_log(&s->logging, SPAN_LOG_FLOW, "Switching from V.29 + V.21 to V.29 (%.2fdBm0)\n", v29_rx_signal_power(&s->fast_modems.v29_rx));
|
||||
set_rx_handler(t, (span_rx_handler_t *) &v29_rx, (span_rx_fillin_handler_t *) &v29_rx_fillin, &s->fast_modems.v29_rx);
|
||||
set_rx_handler(t, (span_rx_handler_t) &v29_rx, (span_rx_fillin_handler_t) &v29_rx_fillin, &s->fast_modems.v29_rx);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2348,7 +2350,7 @@ static int v29_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
/* We have received something, and the fast modem has not trained. We must
|
||||
be receiving valid V.21 */
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.29 + V.21 to V.21 (%.2fdBm0)\n", fsk_rx_signal_power(&s->v21_rx));
|
||||
set_rx_handler(t, (span_rx_handler_t *) &fsk_rx, (span_rx_fillin_handler_t *) &fsk_rx_fillin, &s->v21_rx);
|
||||
set_rx_handler(t, (span_rx_handler_t) &fsk_rx, (span_rx_fillin_handler_t) &fsk_rx_fillin, &s->v21_rx);
|
||||
}
|
||||
}
|
||||
return len;
|
||||
|
@ -2461,13 +2463,13 @@ static int set_next_tx_type(t31_state_t *s)
|
|||
if (s->audio.next_tx_handler)
|
||||
{
|
||||
set_tx_handler(s, s->audio.next_tx_handler, s->audio.next_tx_user_data);
|
||||
set_next_tx_handler(s, (span_tx_handler_t *) NULL, NULL);
|
||||
set_next_tx_handler(s, (span_tx_handler_t) NULL, NULL);
|
||||
return 0;
|
||||
}
|
||||
/* There is nothing else to change to, so use zero length silence */
|
||||
silence_gen_alter(&s->audio.modems.silence_gen, 0);
|
||||
set_tx_handler(s, (span_tx_handler_t *) &silence_gen, &s->audio.modems.silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t *) NULL, NULL);
|
||||
set_tx_handler(s, (span_tx_handler_t) &silence_gen, &s->audio.modems.silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t) NULL, NULL);
|
||||
return -1;
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
@ -2556,7 +2558,7 @@ SPAN_DECLARE(t38_core_state_t *) t31_get_t38_core_state(t31_state_t *s)
|
|||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
static int t31_t38_fe_init(t31_state_t *t,
|
||||
t38_tx_packet_handler_t *tx_packet_handler,
|
||||
t38_tx_packet_handler_t tx_packet_handler,
|
||||
void *tx_packet_user_data)
|
||||
{
|
||||
t31_t38_front_end_state_t *s;
|
||||
|
@ -2589,11 +2591,11 @@ static int t31_t38_fe_init(t31_state_t *t,
|
|||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
SPAN_DECLARE(t31_state_t *) t31_init(t31_state_t *s,
|
||||
at_tx_handler_t *at_tx_handler,
|
||||
at_tx_handler_t at_tx_handler,
|
||||
void *at_tx_user_data,
|
||||
t31_modem_control_handler_t *modem_control_handler,
|
||||
t31_modem_control_handler_t modem_control_handler,
|
||||
void *modem_control_user_data,
|
||||
t38_tx_packet_handler_t *tx_t38_packet_handler,
|
||||
t38_tx_packet_handler_t tx_t38_packet_handler,
|
||||
void *tx_t38_packet_user_data)
|
||||
{
|
||||
#if 0
|
||||
|
|
|
@ -1100,11 +1100,11 @@ SPAN_DECLARE(int) t38_core_restart(t38_core_state_t *s)
|
|||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
SPAN_DECLARE(t38_core_state_t *) t38_core_init(t38_core_state_t *s,
|
||||
t38_rx_indicator_handler_t *rx_indicator_handler,
|
||||
t38_rx_data_handler_t *rx_data_handler,
|
||||
t38_rx_missing_handler_t *rx_missing_handler,
|
||||
t38_rx_indicator_handler_t rx_indicator_handler,
|
||||
t38_rx_data_handler_t rx_data_handler,
|
||||
t38_rx_missing_handler_t rx_missing_handler,
|
||||
void *rx_user_data,
|
||||
t38_tx_packet_handler_t *tx_packet_handler,
|
||||
t38_tx_packet_handler_t tx_packet_handler,
|
||||
void *tx_packet_user_data)
|
||||
{
|
||||
if (s == NULL)
|
||||
|
|
|
@ -206,7 +206,7 @@ static void non_ecm_remove_fill_and_put_bit(void *user_data, int bit);
|
|||
static void non_ecm_push_residue(t38_gateway_state_t *s);
|
||||
static void tone_detected(void *user_data, int tone, int level, int delay);
|
||||
|
||||
static void set_rx_handler(t38_gateway_state_t *s, span_rx_handler_t *handler, span_rx_fillin_handler_t *fillin_handler, void *user_data)
|
||||
static void set_rx_handler(t38_gateway_state_t *s, span_rx_handler_t handler, span_rx_fillin_handler_t fillin_handler, void *user_data)
|
||||
{
|
||||
if (s->audio.modems.rx_handler != span_dummy_rx)
|
||||
{
|
||||
|
@ -220,14 +220,14 @@ static void set_rx_handler(t38_gateway_state_t *s, span_rx_handler_t *handler, s
|
|||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
static void set_tx_handler(t38_gateway_state_t *s, span_tx_handler_t *handler, void *user_data)
|
||||
static void set_tx_handler(t38_gateway_state_t *s, span_tx_handler_t handler, void *user_data)
|
||||
{
|
||||
s->audio.modems.tx_handler = handler;
|
||||
s->audio.modems.tx_user_data = user_data;
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
static void set_next_tx_handler(t38_gateway_state_t *s, span_tx_handler_t *handler, void *user_data)
|
||||
static void set_next_tx_handler(t38_gateway_state_t *s, span_tx_handler_t handler, void *user_data)
|
||||
{
|
||||
s->audio.modems.next_tx_handler = handler;
|
||||
s->audio.modems.next_tx_user_data = user_data;
|
||||
|
@ -267,7 +267,7 @@ static int v17_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
/* The fast modem has trained, so we no longer need to run the slow
|
||||
one in parallel. */
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.17 + V.21 to V.17 (%.2fdBm0)\n", v17_rx_signal_power(&s->fast_modems.v17_rx));
|
||||
set_rx_handler(t, (span_rx_handler_t *) &v17_rx, (span_rx_fillin_handler_t *) &v17_rx_fillin, &s->fast_modems.v17_rx);
|
||||
set_rx_handler(t, (span_rx_handler_t) &v17_rx, (span_rx_fillin_handler_t) &v17_rx_fillin, &s->fast_modems.v17_rx);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -275,7 +275,7 @@ static int v17_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
if (s->rx_signal_present)
|
||||
{
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.17 + V.21 to V.21 (%.2fdBm0)\n", fsk_rx_signal_power(&s->v21_rx));
|
||||
set_rx_handler(t, (span_rx_handler_t *) &fsk_rx, (span_rx_fillin_handler_t *) &fsk_rx_fillin, &s->v21_rx);
|
||||
set_rx_handler(t, (span_rx_handler_t) &fsk_rx, (span_rx_fillin_handler_t) &fsk_rx_fillin, &s->v21_rx);
|
||||
}
|
||||
/*endif*/
|
||||
}
|
||||
|
@ -310,7 +310,7 @@ static int v27ter_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
/* The fast modem has trained, so we no longer need to run the slow
|
||||
one in parallel. */
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.27ter + V.21 to V.27ter (%.2fdBm0)\n", v27ter_rx_signal_power(&s->fast_modems.v27ter_rx));
|
||||
set_rx_handler(t, (span_rx_handler_t *) &v27ter_rx, (span_rx_fillin_handler_t *) &v27ter_v21_rx_fillin, &s->fast_modems.v27ter_rx);
|
||||
set_rx_handler(t, (span_rx_handler_t) &v27ter_rx, (span_rx_fillin_handler_t) &v27ter_v21_rx_fillin, &s->fast_modems.v27ter_rx);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -318,7 +318,7 @@ static int v27ter_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
if (s->rx_signal_present)
|
||||
{
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.27ter + V.21 to V.21 (%.2fdBm0)\n", fsk_rx_signal_power(&s->v21_rx));
|
||||
set_rx_handler(t, (span_rx_handler_t *) &fsk_rx, (span_rx_fillin_handler_t *) &fsk_rx_fillin, &s->v21_rx);
|
||||
set_rx_handler(t, (span_rx_handler_t) &fsk_rx, (span_rx_fillin_handler_t) &fsk_rx_fillin, &s->v21_rx);
|
||||
}
|
||||
/*endif*/
|
||||
}
|
||||
|
@ -353,7 +353,7 @@ static int v29_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
/* The fast modem has trained, so we no longer need to run the slow
|
||||
one in parallel. */
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.29 + V.21 to V.29 (%.2fdBm0)\n", v29_rx_signal_power(&s->fast_modems.v29_rx));
|
||||
set_rx_handler(t, (span_rx_handler_t *) &v29_rx, (span_rx_fillin_handler_t *) &v29_rx_fillin, &s->fast_modems.v29_rx);
|
||||
set_rx_handler(t, (span_rx_handler_t) &v29_rx, (span_rx_fillin_handler_t) &v29_rx_fillin, &s->fast_modems.v29_rx);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -361,7 +361,7 @@ static int v29_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
if (s->rx_signal_present)
|
||||
{
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.29 + V.21 to V.21 (%.2fdBm0)\n", fsk_rx_signal_power(&s->v21_rx));
|
||||
set_rx_handler(t, (span_rx_handler_t *) &fsk_rx, (span_rx_fillin_handler_t *) &fsk_rx_fillin, &s->v21_rx);
|
||||
set_rx_handler(t, (span_rx_handler_t) &fsk_rx, (span_rx_fillin_handler_t) &fsk_rx_fillin, &s->v21_rx);
|
||||
}
|
||||
/*endif*/
|
||||
}
|
||||
|
@ -440,9 +440,9 @@ static int set_next_tx_type(t38_gateway_state_t *s)
|
|||
/* There is a handler queued, so that is the next one. */
|
||||
set_tx_handler(s, t->next_tx_handler, t->next_tx_user_data);
|
||||
set_next_tx_handler(s, NULL, NULL);
|
||||
if (t->tx_handler == (span_tx_handler_t *) &(silence_gen)
|
||||
if (t->tx_handler == (span_tx_handler_t) &(silence_gen)
|
||||
||
|
||||
t->tx_handler == (span_tx_handler_t *) &(tone_gen))
|
||||
t->tx_handler == (span_tx_handler_t) &(tone_gen))
|
||||
{
|
||||
set_rx_active(s, TRUE);
|
||||
}
|
||||
|
@ -489,23 +489,23 @@ static int set_next_tx_type(t38_gateway_state_t *s)
|
|||
t->tx_bit_rate = 0;
|
||||
/* Impose 75ms minimum on transmitted silence */
|
||||
//silence_gen_set(&t->silence_gen, ms_to_samples(75));
|
||||
set_tx_handler(s, (span_tx_handler_t *) &silence_gen, &t->silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t *) NULL, NULL);
|
||||
set_tx_handler(s, (span_tx_handler_t) &silence_gen, &t->silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t) NULL, NULL);
|
||||
set_rx_active(s, TRUE);
|
||||
break;
|
||||
case T38_IND_CNG:
|
||||
t->tx_bit_rate = 0;
|
||||
modem_connect_tones_tx_init(&t->connect_tx, MODEM_CONNECT_TONES_FAX_CNG);
|
||||
set_tx_handler(s, (span_tx_handler_t *) &modem_connect_tones_tx, &t->connect_tx);
|
||||
set_tx_handler(s, (span_tx_handler_t) &modem_connect_tones_tx, &t->connect_tx);
|
||||
silence_gen_set(&t->silence_gen, 0);
|
||||
set_next_tx_handler(s, (span_tx_handler_t *) &silence_gen, &t->silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t) &silence_gen, &t->silence_gen);
|
||||
set_rx_active(s, TRUE);
|
||||
break;
|
||||
case T38_IND_CED:
|
||||
t->tx_bit_rate = 0;
|
||||
modem_connect_tones_tx_init(&t->connect_tx, MODEM_CONNECT_TONES_FAX_CED);
|
||||
set_tx_handler(s, (span_tx_handler_t *) &modem_connect_tones_tx, &t->connect_tx);
|
||||
set_next_tx_handler(s, (span_tx_handler_t *) NULL, NULL);
|
||||
set_tx_handler(s, (span_tx_handler_t) &modem_connect_tones_tx, &t->connect_tx);
|
||||
set_next_tx_handler(s, (span_tx_handler_t) NULL, NULL);
|
||||
set_rx_active(s, TRUE);
|
||||
break;
|
||||
case T38_IND_V21_PREAMBLE:
|
||||
|
@ -515,8 +515,8 @@ static int set_next_tx_type(t38_gateway_state_t *s)
|
|||
silence_gen_alter(&t->silence_gen, ms_to_samples(75));
|
||||
u->buf[u->in].len = 0;
|
||||
fsk_tx_init(&t->v21_tx, &preset_fsk_specs[FSK_V21CH2], (get_bit_func_t) hdlc_tx_get_bit, &t->hdlc_tx);
|
||||
set_tx_handler(s, (span_tx_handler_t *) &silence_gen, &t->silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t *) &fsk_tx, &t->v21_tx);
|
||||
set_tx_handler(s, (span_tx_handler_t) &silence_gen, &t->silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t) &fsk_tx, &t->v21_tx);
|
||||
set_rx_active(s, TRUE);
|
||||
break;
|
||||
case T38_IND_V27TER_2400_TRAINING:
|
||||
|
@ -534,8 +534,8 @@ static int set_next_tx_type(t38_gateway_state_t *s)
|
|||
silence_gen_alter(&t->silence_gen, ms_to_samples(75));
|
||||
v27ter_tx_restart(&t->fast_modems.v27ter_tx, t->tx_bit_rate, t->use_tep);
|
||||
v27ter_tx_set_get_bit(&t->fast_modems.v27ter_tx, get_bit_func, get_bit_user_data);
|
||||
set_tx_handler(s, (span_tx_handler_t *) &silence_gen, &t->silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t *) &v27ter_tx, &t->fast_modems.v27ter_tx);
|
||||
set_tx_handler(s, (span_tx_handler_t) &silence_gen, &t->silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t) &v27ter_tx, &t->fast_modems.v27ter_tx);
|
||||
set_rx_active(s, TRUE);
|
||||
break;
|
||||
case T38_IND_V29_7200_TRAINING:
|
||||
|
@ -553,8 +553,8 @@ static int set_next_tx_type(t38_gateway_state_t *s)
|
|||
silence_gen_alter(&t->silence_gen, ms_to_samples(75));
|
||||
v29_tx_restart(&t->fast_modems.v29_tx, t->tx_bit_rate, t->use_tep);
|
||||
v29_tx_set_get_bit(&t->fast_modems.v29_tx, get_bit_func, get_bit_user_data);
|
||||
set_tx_handler(s, (span_tx_handler_t *) &silence_gen, &t->silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t *) &v29_tx, &t->fast_modems.v29_tx);
|
||||
set_tx_handler(s, (span_tx_handler_t) &silence_gen, &t->silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t) &v29_tx, &t->fast_modems.v29_tx);
|
||||
set_rx_active(s, TRUE);
|
||||
break;
|
||||
case T38_IND_V17_7200_SHORT_TRAINING:
|
||||
|
@ -601,8 +601,8 @@ static int set_next_tx_type(t38_gateway_state_t *s)
|
|||
silence_gen_alter(&t->silence_gen, ms_to_samples(75));
|
||||
v17_tx_restart(&t->fast_modems.v17_tx, t->tx_bit_rate, t->use_tep, short_train);
|
||||
v17_tx_set_get_bit(&t->fast_modems.v17_tx, get_bit_func, get_bit_user_data);
|
||||
set_tx_handler(s, (span_tx_handler_t *) &silence_gen, &t->silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t *) &v17_tx, &t->fast_modems.v17_tx);
|
||||
set_tx_handler(s, (span_tx_handler_t) &silence_gen, &t->silence_gen);
|
||||
set_next_tx_handler(s, (span_tx_handler_t) &v17_tx, &t->fast_modems.v17_tx);
|
||||
set_rx_active(s, TRUE);
|
||||
break;
|
||||
case T38_IND_V8_ANSAM:
|
||||
|
@ -2185,7 +2185,7 @@ static int restart_rx_modem(t38_gateway_state_t *s)
|
|||
s->core.fast_rx_active = FAX_MODEM_V17_RX;
|
||||
break;
|
||||
default:
|
||||
set_rx_handler(s, (span_rx_handler_t *) &fsk_rx, (span_rx_fillin_handler_t *) &fsk_rx_fillin, &t->v21_rx);
|
||||
set_rx_handler(s, (span_rx_handler_t) &fsk_rx, (span_rx_fillin_handler_t) &fsk_rx_fillin, &t->v21_rx);
|
||||
s->core.fast_rx_active = FAX_MODEM_NONE;
|
||||
break;
|
||||
}
|
||||
|
@ -2393,7 +2393,7 @@ SPAN_DECLARE(void) t38_gateway_set_fill_bit_removal(t38_gateway_state_t *s, int
|
|||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
SPAN_DECLARE(void) t38_gateway_set_real_time_frame_handler(t38_gateway_state_t *s,
|
||||
t38_gateway_real_time_frame_handler_t *handler,
|
||||
t38_gateway_real_time_frame_handler_t handler,
|
||||
void *user_data)
|
||||
{
|
||||
s->core.real_time_frame_handler = handler;
|
||||
|
@ -2424,7 +2424,7 @@ static int t38_gateway_audio_init(t38_gateway_state_t *s)
|
|||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
static int t38_gateway_t38_init(t38_gateway_state_t *t,
|
||||
t38_tx_packet_handler_t *tx_packet_handler,
|
||||
t38_tx_packet_handler_t tx_packet_handler,
|
||||
void *tx_packet_user_data)
|
||||
{
|
||||
t38_gateway_t38_state_t *s;
|
||||
|
@ -2447,7 +2447,7 @@ static int t38_gateway_t38_init(t38_gateway_state_t *t,
|
|||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
SPAN_DECLARE(t38_gateway_state_t *) t38_gateway_init(t38_gateway_state_t *s,
|
||||
t38_tx_packet_handler_t *tx_packet_handler,
|
||||
t38_tx_packet_handler_t tx_packet_handler,
|
||||
void *tx_packet_user_data)
|
||||
{
|
||||
if (tx_packet_handler == NULL)
|
||||
|
|
|
@ -1446,7 +1446,7 @@ static int t38_terminal_t38_fe_restart(t38_terminal_state_t *t)
|
|||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
static int t38_terminal_t38_fe_init(t38_terminal_state_t *t,
|
||||
t38_tx_packet_handler_t *tx_packet_handler,
|
||||
t38_tx_packet_handler_t tx_packet_handler,
|
||||
void *tx_packet_user_data)
|
||||
{
|
||||
t38_terminal_front_end_state_t *s;
|
||||
|
@ -1495,7 +1495,7 @@ SPAN_DECLARE(int) t38_terminal_restart(t38_terminal_state_t *s,
|
|||
|
||||
SPAN_DECLARE(t38_terminal_state_t *) t38_terminal_init(t38_terminal_state_t *s,
|
||||
int calling_party,
|
||||
t38_tx_packet_handler_t *tx_packet_handler,
|
||||
t38_tx_packet_handler_t tx_packet_handler,
|
||||
void *tx_packet_user_data)
|
||||
{
|
||||
if (tx_packet_handler == NULL)
|
||||
|
|
|
@ -1040,7 +1040,7 @@ SPAN_DECLARE(int) v8_restart(v8_state_t *s, int calling_party, v8_parms_t *parms
|
|||
SPAN_DECLARE(v8_state_t *) v8_init(v8_state_t *s,
|
||||
int calling_party,
|
||||
v8_parms_t *parms,
|
||||
v8_result_handler_t *result_handler,
|
||||
v8_result_handler_t result_handler,
|
||||
void *user_data)
|
||||
{
|
||||
if (s == NULL)
|
||||
|
|
|
@ -543,7 +543,6 @@ static int create_error_page(TIFF *tiff_file)
|
|||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int row;
|
||||
TIFF *tiff_file;
|
||||
struct tm *tm;
|
||||
time_t now;
|
||||
|
@ -553,24 +552,13 @@ int main(int argc, char *argv[])
|
|||
int i;
|
||||
int image_length;
|
||||
int opt;
|
||||
int compression;
|
||||
|
||||
compression = T4_COMPRESSION_ITU_T6;
|
||||
photo_metric = PHOTOMETRIC_MINISWHITE;
|
||||
fill_order = FILLORDER_LSB2MSB;
|
||||
while ((opt = getopt(argc, argv, "126ir")) != -1)
|
||||
while ((opt = getopt(argc, argv, "ir")) != -1)
|
||||
{
|
||||
switch (opt)
|
||||
{
|
||||
case '1':
|
||||
compression = T4_COMPRESSION_ITU_T4_1D;
|
||||
break;
|
||||
case '2':
|
||||
compression = T4_COMPRESSION_ITU_T4_2D;
|
||||
break;
|
||||
case '6':
|
||||
compression = T4_COMPRESSION_ITU_T6;
|
||||
break;
|
||||
case 'i':
|
||||
photo_metric = PHOTOMETRIC_MINISBLACK;
|
||||
break;
|
||||
|
@ -637,7 +625,6 @@ int main(int argc, char *argv[])
|
|||
image_length = sequence[i].length;
|
||||
|
||||
/* Write the image first.... */
|
||||
row = 0;
|
||||
switch (sequence[i].type)
|
||||
{
|
||||
case 0:
|
||||
|
|
|
@ -334,7 +334,7 @@ static int v17_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
/* The fast modem has trained, so we no longer need to run the slow
|
||||
one in parallel. */
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.17 + V.21 to V.17 (%.2fdBm0)\n", v17_rx_signal_power(&s->fast_modems.v17_rx));
|
||||
s->rx_handler = (span_rx_handler_t *) &v17_rx;
|
||||
s->rx_handler = (span_rx_handler_t) &v17_rx;
|
||||
s->rx_user_data = &s->fast_modems.v17_rx;
|
||||
}
|
||||
return 0;
|
||||
|
@ -355,7 +355,7 @@ static int v27ter_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
/* The fast modem has trained, so we no longer need to run the slow
|
||||
one in parallel. */
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.27ter + V.21 to V.27ter (%.2fdBm0)\n", v27ter_rx_signal_power(&s->fast_modems.v27ter_rx));
|
||||
s->rx_handler = (span_rx_handler_t *) &v27ter_rx;
|
||||
s->rx_handler = (span_rx_handler_t) &v27ter_rx;
|
||||
s->rx_user_data = &s->fast_modems.v27ter_rx;
|
||||
}
|
||||
return 0;
|
||||
|
@ -376,7 +376,7 @@ static int v29_v21_rx(void *user_data, const int16_t amp[], int len)
|
|||
/* The fast modem has trained, so we no longer need to run the slow
|
||||
one in parallel. */
|
||||
span_log(&t->logging, SPAN_LOG_FLOW, "Switching from V.29 + V.21 to V.29 (%.2fdBm0)\n", v29_rx_signal_power(&s->fast_modems.v29_rx));
|
||||
s->rx_handler = (span_rx_handler_t *) &v29_rx;
|
||||
s->rx_handler = (span_rx_handler_t) &v29_rx;
|
||||
s->rx_user_data = &s->fast_modems.v29_rx;
|
||||
}
|
||||
return 0;
|
||||
|
@ -482,7 +482,7 @@ void faxtester_set_rx_type(void *user_data, int type, int bit_rate, int short_tr
|
|||
tone,
|
||||
tone_detected,
|
||||
(void *) s);
|
||||
t->rx_handler = (span_rx_handler_t *) &modem_connect_tones_rx;
|
||||
t->rx_handler = (span_rx_handler_t) &modem_connect_tones_rx;
|
||||
t->rx_user_data = &t->connect_rx;
|
||||
s->tone_state = MODEM_CONNECT_TONES_NONE;
|
||||
break;
|
||||
|
@ -491,31 +491,31 @@ void faxtester_set_rx_type(void *user_data, int type, int bit_rate, int short_tr
|
|||
s->flush_handler(s, s->flush_user_data, 3);
|
||||
fsk_rx_init(&t->v21_rx, &preset_fsk_specs[FSK_V21CH2], FSK_FRAME_MODE_SYNC, (put_bit_func_t) hdlc_rx_put_bit, put_bit_user_data);
|
||||
fsk_rx_signal_cutoff(&t->v21_rx, -45.5);
|
||||
t->rx_handler = (span_rx_handler_t *) &fsk_rx;
|
||||
t->rx_handler = (span_rx_handler_t) &fsk_rx;
|
||||
t->rx_user_data = &t->v21_rx;
|
||||
break;
|
||||
case T30_MODEM_V27TER:
|
||||
v27ter_rx_restart(&t->fast_modems.v27ter_rx, bit_rate, FALSE);
|
||||
v27ter_rx_set_put_bit(&t->fast_modems.v27ter_rx, put_bit_func, put_bit_user_data);
|
||||
t->rx_handler = (span_rx_handler_t *) &v27ter_v21_rx;
|
||||
t->rx_handler = (span_rx_handler_t) &v27ter_v21_rx;
|
||||
t->rx_user_data = s;
|
||||
break;
|
||||
case T30_MODEM_V29:
|
||||
v29_rx_restart(&t->fast_modems.v29_rx, bit_rate, FALSE);
|
||||
v29_rx_set_put_bit(&t->fast_modems.v29_rx, put_bit_func, put_bit_user_data);
|
||||
t->rx_handler = (span_rx_handler_t *) &v29_v21_rx;
|
||||
t->rx_handler = (span_rx_handler_t) &v29_v21_rx;
|
||||
t->rx_user_data = s;
|
||||
break;
|
||||
case T30_MODEM_V17:
|
||||
v17_rx_restart(&t->fast_modems.v17_rx, bit_rate, short_train);
|
||||
v17_rx_set_put_bit(&t->fast_modems.v17_rx, put_bit_func, put_bit_user_data);
|
||||
t->rx_handler = (span_rx_handler_t *) &v17_v21_rx;
|
||||
t->rx_handler = (span_rx_handler_t) &v17_v21_rx;
|
||||
t->rx_user_data = s;
|
||||
break;
|
||||
case T30_MODEM_DONE:
|
||||
span_log(&s->logging, SPAN_LOG_FLOW, "FAX exchange complete\n");
|
||||
default:
|
||||
t->rx_handler = (span_rx_handler_t *) &span_dummy_rx;
|
||||
t->rx_handler = (span_rx_handler_t) &span_dummy_rx;
|
||||
t->rx_user_data = s;
|
||||
break;
|
||||
}
|
||||
|
@ -549,7 +549,7 @@ void faxtester_set_tx_type(void *user_data, int type, int bit_rate, int short_tr
|
|||
{
|
||||
case T30_MODEM_PAUSE:
|
||||
silence_gen_alter(&t->silence_gen, ms_to_samples(short_train));
|
||||
t->tx_handler = (span_tx_handler_t *) &silence_gen;
|
||||
t->tx_handler = (span_tx_handler_t) &silence_gen;
|
||||
t->tx_user_data = &t->silence_gen;
|
||||
s->transmit = TRUE;
|
||||
break;
|
||||
|
@ -560,14 +560,14 @@ void faxtester_set_tx_type(void *user_data, int type, int bit_rate, int short_tr
|
|||
else
|
||||
tone = MODEM_CONNECT_TONES_FAX_CNG;
|
||||
modem_connect_tones_tx_init(&t->connect_tx, tone);
|
||||
t->tx_handler = (span_tx_handler_t *) &modem_connect_tones_tx;
|
||||
t->tx_handler = (span_tx_handler_t) &modem_connect_tones_tx;
|
||||
t->tx_user_data = &t->connect_tx;
|
||||
s->transmit = TRUE;
|
||||
break;
|
||||
case T30_MODEM_V21:
|
||||
fsk_tx_init(&t->v21_tx, &preset_fsk_specs[FSK_V21CH2], get_bit_func, get_bit_user_data);
|
||||
fsk_tx_set_modem_status_handler(&t->v21_tx, modem_tx_status, (void *) s);
|
||||
t->tx_handler = (span_tx_handler_t *) &fsk_tx;
|
||||
t->tx_handler = (span_tx_handler_t) &fsk_tx;
|
||||
t->tx_user_data = &t->v21_tx;
|
||||
s->transmit = TRUE;
|
||||
break;
|
||||
|
@ -575,7 +575,7 @@ void faxtester_set_tx_type(void *user_data, int type, int bit_rate, int short_tr
|
|||
v27ter_tx_restart(&t->fast_modems.v27ter_tx, bit_rate, t->use_tep);
|
||||
v27ter_tx_set_get_bit(&t->fast_modems.v27ter_tx, get_bit_func, get_bit_user_data);
|
||||
v27ter_tx_set_modem_status_handler(&t->fast_modems.v27ter_tx, modem_tx_status, (void *) s);
|
||||
t->tx_handler = (span_tx_handler_t *) &v27ter_tx;
|
||||
t->tx_handler = (span_tx_handler_t) &v27ter_tx;
|
||||
t->tx_user_data = &t->fast_modems.v27ter_tx;
|
||||
/* For any fast modem, set 200ms of preamble flags */
|
||||
hdlc_tx_flags(&t->hdlc_tx, bit_rate/(8*5));
|
||||
|
@ -585,7 +585,7 @@ void faxtester_set_tx_type(void *user_data, int type, int bit_rate, int short_tr
|
|||
v29_tx_restart(&t->fast_modems.v29_tx, bit_rate, t->use_tep);
|
||||
v29_tx_set_get_bit(&t->fast_modems.v29_tx, get_bit_func, get_bit_user_data);
|
||||
v29_tx_set_modem_status_handler(&t->fast_modems.v29_tx, modem_tx_status, (void *) s);
|
||||
t->tx_handler = (span_tx_handler_t *) &v29_tx;
|
||||
t->tx_handler = (span_tx_handler_t) &v29_tx;
|
||||
t->tx_user_data = &t->fast_modems.v29_tx;
|
||||
/* For any fast modem, set 200ms of preamble flags */
|
||||
hdlc_tx_flags(&t->hdlc_tx, bit_rate/(8*5));
|
||||
|
@ -595,7 +595,7 @@ void faxtester_set_tx_type(void *user_data, int type, int bit_rate, int short_tr
|
|||
v17_tx_restart(&t->fast_modems.v17_tx, bit_rate, t->use_tep, short_train);
|
||||
v17_tx_set_get_bit(&t->fast_modems.v17_tx, get_bit_func, get_bit_user_data);
|
||||
v17_tx_set_modem_status_handler(&t->fast_modems.v17_tx, modem_tx_status, (void *) s);
|
||||
t->tx_handler = (span_tx_handler_t *) &v17_tx;
|
||||
t->tx_handler = (span_tx_handler_t) &v17_tx;
|
||||
t->tx_user_data = &t->fast_modems.v17_tx;
|
||||
/* For any fast modem, set 200ms of preamble flags */
|
||||
hdlc_tx_flags(&t->hdlc_tx, bit_rate/(8*5));
|
||||
|
@ -606,7 +606,7 @@ void faxtester_set_tx_type(void *user_data, int type, int bit_rate, int short_tr
|
|||
/* Fall through */
|
||||
default:
|
||||
silence_gen_alter(&t->silence_gen, 0);
|
||||
t->tx_handler = (span_tx_handler_t *) &silence_gen;
|
||||
t->tx_handler = (span_tx_handler_t) &silence_gen;
|
||||
t->tx_user_data = &t->silence_gen;
|
||||
s->transmit = FALSE;
|
||||
break;
|
||||
|
@ -636,21 +636,21 @@ void faxtester_set_tep_mode(faxtester_state_t *s, int use_tep)
|
|||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
void faxtester_set_real_time_frame_handler(faxtester_state_t *s, faxtester_real_time_frame_handler_t *handler, void *user_data)
|
||||
void faxtester_set_real_time_frame_handler(faxtester_state_t *s, faxtester_real_time_frame_handler_t handler, void *user_data)
|
||||
{
|
||||
s->real_time_frame_handler = handler;
|
||||
s->real_time_frame_user_data = user_data;
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
void faxtester_set_front_end_step_complete_handler(faxtester_state_t *s, faxtester_front_end_step_complete_handler_t *handler, void *user_data)
|
||||
void faxtester_set_front_end_step_complete_handler(faxtester_state_t *s, faxtester_front_end_step_complete_handler_t handler, void *user_data)
|
||||
{
|
||||
s->front_end_step_complete_handler = handler;
|
||||
s->front_end_step_complete_user_data = user_data;
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
void faxtester_set_front_end_step_timeout_handler(faxtester_state_t *s, faxtester_front_end_step_complete_handler_t *handler, void *user_data)
|
||||
void faxtester_set_front_end_step_timeout_handler(faxtester_state_t *s, faxtester_front_end_step_complete_handler_t handler, void *user_data)
|
||||
{
|
||||
s->front_end_step_timeout_handler = handler;
|
||||
s->front_end_step_timeout_user_data = user_data;
|
||||
|
@ -686,9 +686,9 @@ static void faxtester_fax_modems_init(fax_modems_state_t *s, int use_tep, void *
|
|||
dc_restore_init(&s->dc_restore);
|
||||
|
||||
s->rx_signal_present = FALSE;
|
||||
s->rx_handler = (span_rx_handler_t *) &span_dummy_rx;
|
||||
s->rx_handler = (span_rx_handler_t) &span_dummy_rx;
|
||||
s->rx_user_data = NULL;
|
||||
s->tx_handler = (span_tx_handler_t *) &silence_gen;
|
||||
s->tx_handler = (span_tx_handler_t) &silence_gen;
|
||||
s->tx_user_data = &s->silence_gen;
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
@ -725,7 +725,7 @@ int faxtester_free(faxtester_state_t *s)
|
|||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
void faxtester_set_flush_handler(faxtester_state_t *s, faxtester_flush_handler_t *handler, void *user_data)
|
||||
void faxtester_set_flush_handler(faxtester_state_t *s, faxtester_flush_handler_t handler, void *user_data)
|
||||
{
|
||||
s->flush_handler = handler;
|
||||
s->flush_user_data = user_data;
|
||||
|
|
|
@ -102,14 +102,12 @@ int rows_read = 0;
|
|||
|
||||
static void dump_image_as_xxx(t4_state_t *state)
|
||||
{
|
||||
uint8_t *s;
|
||||
int i;
|
||||
int j;
|
||||
int k;
|
||||
|
||||
/* Dump the entire image as text 'X's and spaces */
|
||||
printf("Image (%d x %d):\n", receive_state.image_width, receive_state.image_length);
|
||||
s = state->image_buffer;
|
||||
for (i = 0; i < state->image_length; i++)
|
||||
{
|
||||
for (j = 0; j < state->bytes_per_row; j++)
|
||||
|
@ -305,7 +303,7 @@ int main(int argc, char *argv[])
|
|||
int compression;
|
||||
int compression_step;
|
||||
int add_page_headers;
|
||||
int overlay_page_headers;
|
||||
//int overlay_page_headers;
|
||||
int min_row_bits;
|
||||
int restart_pages;
|
||||
int block_size;
|
||||
|
@ -329,7 +327,7 @@ int main(int argc, char *argv[])
|
|||
compression = -1;
|
||||
compression_step = 0;
|
||||
add_page_headers = FALSE;
|
||||
overlay_page_headers = FALSE;
|
||||
//overlay_page_headers = FALSE;
|
||||
restart_pages = FALSE;
|
||||
in_file_name = IN_FILE_NAME;
|
||||
decode_file_name = NULL;
|
||||
|
@ -395,11 +393,11 @@ int main(int argc, char *argv[])
|
|||
break;
|
||||
case 'h':
|
||||
add_page_headers = TRUE;
|
||||
overlay_page_headers = FALSE;
|
||||
//overlay_page_headers = FALSE;
|
||||
break;
|
||||
case 'H':
|
||||
add_page_headers = TRUE;
|
||||
overlay_page_headers = TRUE;
|
||||
//overlay_page_headers = TRUE;
|
||||
break;
|
||||
case 'r':
|
||||
restart_pages = TRUE;
|
||||
|
|
Loading…
Reference in New Issue