forked from Mirrors/freeswitch
Tweaks to logging in spandsp
This commit is contained in:
parent
a34095a4b7
commit
1d76b2f907
@ -101,6 +101,50 @@
|
||||
|
||||
#define HDLC_FRAMING_OK_THRESHOLD 5
|
||||
|
||||
SPAN_DECLARE(const char *) fax_modem_to_str(int modem)
|
||||
{
|
||||
switch (modem)
|
||||
{
|
||||
case FAX_MODEM_NONE:
|
||||
return "None";
|
||||
case FAX_MODEM_FLUSH:
|
||||
return "Flush";
|
||||
case FAX_MODEM_SILENCE_TX:
|
||||
return "Silence Tx";
|
||||
case FAX_MODEM_SILENCE_RX:
|
||||
return "Silence Rx";
|
||||
case FAX_MODEM_CED_TONE_TX:
|
||||
return "CED Tx";
|
||||
case FAX_MODEM_CNG_TONE_TX:
|
||||
return "CNG Tx";
|
||||
case FAX_MODEM_NOCNG_TONE_TX:
|
||||
return "No CNG Tx";
|
||||
case FAX_MODEM_CED_TONE_RX:
|
||||
return "CED Rx";
|
||||
case FAX_MODEM_CNG_TONE_RX:
|
||||
return "CNG Rx";
|
||||
case FAX_MODEM_V21_TX:
|
||||
return "V.21 Tx";
|
||||
case FAX_MODEM_V17_TX:
|
||||
return "V.17 Tx";
|
||||
case FAX_MODEM_V27TER_TX:
|
||||
return "V.27ter Tx";
|
||||
case FAX_MODEM_V29_TX:
|
||||
return "V.29 Tx";
|
||||
case FAX_MODEM_V21_RX:
|
||||
return "V.21 Rx";
|
||||
case FAX_MODEM_V17_RX:
|
||||
return "V.17 Rx";
|
||||
case FAX_MODEM_V27TER_RX:
|
||||
return "V.27ter Rx";
|
||||
case FAX_MODEM_V29_RX:
|
||||
return "V.29 Rx";
|
||||
}
|
||||
/*endswitch*/
|
||||
return "???";
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
static void fax_modems_hdlc_accept(void *user_data, const uint8_t *msg, int len, int ok)
|
||||
{
|
||||
fax_modems_state_t *s;
|
||||
|
@ -42,7 +42,7 @@ extern "C"
|
||||
/*! \brief Find the bit position of the highest set bit in a word
|
||||
\param bits The word to be searched
|
||||
\return The bit number of the highest set bit, or -1 if the word is zero. */
|
||||
static __inline__ int top_bit(unsigned int bits)
|
||||
static __inline__ int top_bit(uint32_t bits)
|
||||
{
|
||||
#if defined(SPANDSP_USE_86_ASM)
|
||||
int res;
|
||||
@ -141,7 +141,7 @@ static __inline__ int top_bit(unsigned int bits)
|
||||
/*! \brief Find the bit position of the lowest set bit in a word
|
||||
\param bits The word to be searched
|
||||
\return The bit number of the lowest set bit, or -1 if the word is zero. */
|
||||
static __inline__ int bottom_bit(unsigned int bits)
|
||||
static __inline__ int bottom_bit(uint32_t bits)
|
||||
{
|
||||
int res;
|
||||
|
||||
|
@ -59,6 +59,12 @@ extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/*! Convert a FAX modem type to a short text description.
|
||||
\brief Convert a FAX modem type to a short text description.
|
||||
\param modem The modem code.
|
||||
\return A pointer to the description. */
|
||||
SPAN_DECLARE(const char *) fax_modem_to_str(int modem);
|
||||
|
||||
/* N.B. the following are currently a work in progress */
|
||||
SPAN_DECLARE_NONSTD(int) fax_modems_v17_v21_rx(void *user_data, const int16_t amp[], int len);
|
||||
SPAN_DECLARE_NONSTD(int) fax_modems_v27ter_v21_rx(void *user_data, const int16_t amp[], int len);
|
||||
|
@ -53,6 +53,12 @@ SPAN_DECLARE(void) t30_decode_dis_dtc_dcs(t30_state_t *s, const uint8_t *dis, in
|
||||
\return A pointer to the description. */
|
||||
SPAN_DECLARE(const char *) t30_completion_code_to_str(int result);
|
||||
|
||||
/*! Convert a T.30 modem type to a short text description.
|
||||
\brief Convert a T.30 modem type to a short text description.
|
||||
\param modem The modem code.
|
||||
\return A pointer to the description. */
|
||||
SPAN_DECLARE(const char *) t30_modem_to_str(int modem);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
@ -421,7 +421,7 @@ static const struct
|
||||
{ 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}
|
||||
{ 0, 0, 0, 0}
|
||||
};
|
||||
|
||||
static void queue_phase(t30_state_t *s, int phase);
|
||||
@ -437,6 +437,7 @@ static void decode_20digit_msg(t30_state_t *s, char *msg, const uint8_t *pkt, in
|
||||
static void decode_url_msg(t30_state_t *s, char *msg, const uint8_t *pkt, int len);
|
||||
static int decode_nsf_nss_nsc(t30_state_t *s, uint8_t *msg[], const uint8_t *pkt, int len);
|
||||
static void set_min_scan_time(t30_state_t *s);
|
||||
static int build_dcs(t30_state_t *s);
|
||||
static void timer_t2_start(t30_state_t *s);
|
||||
static void timer_t2a_start(t30_state_t *s);
|
||||
static void timer_t2b_start(t30_state_t *s);
|
||||
@ -470,6 +471,27 @@ static int find_fallback_entry(int dcs_code)
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
static int step_fallback_entry(t30_state_t *s)
|
||||
{
|
||||
while (fallback_sequence[++s->current_fallback].bit_rate)
|
||||
{
|
||||
if ((fallback_sequence[s->current_fallback].which & s->current_permitted_modems))
|
||||
break;
|
||||
}
|
||||
if (fallback_sequence[s->current_fallback].bit_rate == 0)
|
||||
{
|
||||
/* Reset the fallback sequence */
|
||||
s->current_fallback = 0;
|
||||
return -1;
|
||||
}
|
||||
/* We need to update the minimum scan time, in case we are in non-ECM mode. */
|
||||
set_min_scan_time(s);
|
||||
/* Now we need to rebuild the DCS message we will send. */
|
||||
build_dcs(s);
|
||||
return s->current_fallback;
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
static int terminate_operation_in_progress(t30_state_t *s)
|
||||
{
|
||||
/* Make sure any FAX in progress is tidied up. If the tidying up has
|
||||
@ -2242,23 +2264,6 @@ static int analyze_rx_dcs(t30_state_t *s, const uint8_t *msg, int len)
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
static int step_fallback_entry(t30_state_t *s)
|
||||
{
|
||||
while (fallback_sequence[++s->current_fallback].which)
|
||||
{
|
||||
if ((fallback_sequence[s->current_fallback].which & s->current_permitted_modems))
|
||||
break;
|
||||
}
|
||||
if (fallback_sequence[s->current_fallback].which == 0)
|
||||
return -1;
|
||||
/* We need to update the minimum scan time, in case we are in non-ECM mode. */
|
||||
set_min_scan_time(s);
|
||||
/* Now we need to rebuild the DCS message we will send. */
|
||||
build_dcs(s);
|
||||
return s->current_fallback;
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
static void send_dcn(t30_state_t *s)
|
||||
{
|
||||
queue_phase(s, T30_PHASE_D_TX);
|
||||
@ -2710,6 +2715,13 @@ static int process_rx_dis_dtc(t30_state_t *s, const uint8_t *msg, int len)
|
||||
send_dcn(s);
|
||||
return -1;
|
||||
}
|
||||
/* Start document transmission */
|
||||
span_log(&s->logging,
|
||||
SPAN_LOG_FLOW,
|
||||
"Put document with modem (%d) %s at %dbps\n",
|
||||
fallback_sequence[s->current_fallback].modem_type,
|
||||
t30_modem_to_str(fallback_sequence[s->current_fallback].modem_type),
|
||||
fallback_sequence[s->current_fallback].bit_rate);
|
||||
s->retries = 0;
|
||||
send_dcs_sequence(s, true);
|
||||
return 0;
|
||||
@ -2773,9 +2785,10 @@ static int process_rx_dcs(t30_state_t *s, const uint8_t *msg, int len)
|
||||
/* Start document reception */
|
||||
span_log(&s->logging,
|
||||
SPAN_LOG_FLOW,
|
||||
"Get document at %dbps, modem %d\n",
|
||||
fallback_sequence[s->current_fallback].bit_rate,
|
||||
fallback_sequence[s->current_fallback].modem_type);
|
||||
"Get document with modem (%d) %s at %dbps\n",
|
||||
fallback_sequence[s->current_fallback].modem_type,
|
||||
t30_modem_to_str(fallback_sequence[s->current_fallback].modem_type),
|
||||
fallback_sequence[s->current_fallback].bit_rate);
|
||||
if (s->rx_file[0] == '\0')
|
||||
{
|
||||
span_log(&s->logging, SPAN_LOG_FLOW, "No document to receive\n");
|
||||
@ -3439,7 +3452,6 @@ static void process_state_d_post_tcf(t30_state_t *s, const uint8_t *msg, int len
|
||||
if (step_fallback_entry(s) < 0)
|
||||
{
|
||||
/* We have fallen back as far as we can go. Give up. */
|
||||
s->current_fallback = 0;
|
||||
t30_set_status(s, T30_ERR_CANNOT_TRAIN);
|
||||
send_dcn(s);
|
||||
break;
|
||||
@ -4091,7 +4103,6 @@ static void process_state_ii_q(t30_state_t *s, const uint8_t *msg, int len)
|
||||
if (step_fallback_entry(s) < 0)
|
||||
{
|
||||
/* We have fallen back as far as we can go. Give up. */
|
||||
s->current_fallback = 0;
|
||||
t30_set_status(s, T30_ERR_CANNOT_TRAIN);
|
||||
send_dcn(s);
|
||||
break;
|
||||
@ -4152,7 +4163,6 @@ static void process_state_ii_q(t30_state_t *s, const uint8_t *msg, int len)
|
||||
if (step_fallback_entry(s) < 0)
|
||||
{
|
||||
/* We have fallen back as far as we can go. Give up. */
|
||||
s->current_fallback = 0;
|
||||
t30_set_status(s, T30_ERR_CANNOT_TRAIN);
|
||||
send_dcn(s);
|
||||
break;
|
||||
@ -4186,7 +4196,6 @@ static void process_state_ii_q(t30_state_t *s, const uint8_t *msg, int len)
|
||||
if (step_fallback_entry(s) < 0)
|
||||
{
|
||||
/* We have fallen back as far as we can go. Give up. */
|
||||
s->current_fallback = 0;
|
||||
t30_set_status(s, T30_ERR_CANNOT_TRAIN);
|
||||
send_dcn(s);
|
||||
break;
|
||||
|
@ -246,6 +246,36 @@ SPAN_DECLARE(const char *) t30_completion_code_to_str(int result)
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
SPAN_DECLARE(const char *) t30_modem_to_str(int modem)
|
||||
{
|
||||
switch (modem)
|
||||
{
|
||||
case T30_MODEM_NONE:
|
||||
return "None";
|
||||
case T30_MODEM_PAUSE:
|
||||
return "Pause";
|
||||
case T30_MODEM_CED:
|
||||
return "CED";
|
||||
case T30_MODEM_CNG:
|
||||
return "CNG";
|
||||
case T30_MODEM_V21:
|
||||
return "V.21";
|
||||
case T30_MODEM_V27TER:
|
||||
return "V.27ter";
|
||||
case T30_MODEM_V29:
|
||||
return "V.29";
|
||||
case T30_MODEM_V17:
|
||||
return "V.17";
|
||||
case T30_MODEM_V34HDX:
|
||||
return "V.34HDX";
|
||||
case T30_MODEM_DONE:
|
||||
return "Done";
|
||||
}
|
||||
/*endswitch*/
|
||||
return "???";
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
SPAN_DECLARE(const char *) t30_frametype(uint8_t x)
|
||||
{
|
||||
switch (x)
|
||||
|
Loading…
Reference in New Issue
Block a user