Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
F
freeswitch
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
张华
freeswitch
Commits
6cb3be7d
提交
6cb3be7d
authored
1月 19, 2013
作者:
Steve Underwood
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Some cleanups of FAX modem tone handling
上级
8e6460fe
全部展开
显示空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
238 行增加
和
285 行删除
+238
-285
at_interpreter.c
libs/spandsp/src/at_interpreter.c
+3
-3
fax.c
libs/spandsp/src/fax.c
+2
-6
fax_modems.c
libs/spandsp/src/fax_modems.c
+25
-2
modem_connect_tones.c
libs/spandsp/src/modem_connect_tones.c
+6
-0
fax_modems.h
libs/spandsp/src/spandsp/fax_modems.h
+5
-3
modem_connect_tones.h
libs/spandsp/src/spandsp/modem_connect_tones.h
+10
-1
fax_modems.h
libs/spandsp/src/spandsp/private/fax_modems.h
+5
-0
t31.c
libs/spandsp/src/t31.c
+15
-21
t38_core.c
libs/spandsp/src/t38_core.c
+1
-1
t38_gateway.c
libs/spandsp/src/t38_gateway.c
+2
-4
fax_tester.c
libs/spandsp/tests/fax_tester.c
+9
-77
regression_tests.sh
libs/spandsp/tests/regression_tests.sh
+16
-18
t31_tests.c
libs/spandsp/tests/t31_tests.c
+1
-1
v18_tests.c
libs/spandsp/tests/v18_tests.c
+138
-148
没有找到文件。
libs/spandsp/src/at_interpreter.c
浏览文件 @
6cb3be7d
...
@@ -291,7 +291,7 @@ SPAN_DECLARE(void) at_call_event(at_state_t *s, int event)
...
@@ -291,7 +291,7 @@ SPAN_DECLARE(void) at_call_event(at_state_t *s, int event)
{
{
/* FAX modem connection */
/* FAX modem connection */
at_set_at_rx_mode
(
s
,
AT_MODE_DELIVERY
);
at_set_at_rx_mode
(
s
,
AT_MODE_DELIVERY
);
at_modem_control
(
s
,
AT_MODEM_CONTROL_RESTART
,
(
void
*
)
FAX_MODEM_CED_TONE
);
at_modem_control
(
s
,
AT_MODEM_CONTROL_RESTART
,
(
void
*
)
FAX_MODEM_CED_TONE
_TX
);
}
}
break
;
break
;
case
AT_CALL_EVENT_CONNECTED
:
case
AT_CALL_EVENT_CONNECTED
:
...
@@ -315,9 +315,9 @@ SPAN_DECLARE(void) at_call_event(at_state_t *s, int event)
...
@@ -315,9 +315,9 @@ SPAN_DECLARE(void) at_call_event(at_state_t *s, int event)
/* FAX modem connection */
/* FAX modem connection */
at_set_at_rx_mode
(
s
,
AT_MODE_DELIVERY
);
at_set_at_rx_mode
(
s
,
AT_MODE_DELIVERY
);
if
(
s
->
silent_dial
)
if
(
s
->
silent_dial
)
at_modem_control
(
s
,
AT_MODEM_CONTROL_RESTART
,
(
void
*
)
FAX_MODEM_NOCNG_TONE
);
at_modem_control
(
s
,
AT_MODEM_CONTROL_RESTART
,
(
void
*
)
FAX_MODEM_NOCNG_TONE
_TX
);
else
else
at_modem_control
(
s
,
AT_MODEM_CONTROL_RESTART
,
(
void
*
)
FAX_MODEM_CNG_TONE
);
at_modem_control
(
s
,
AT_MODEM_CONTROL_RESTART
,
(
void
*
)
FAX_MODEM_CNG_TONE
_TX
);
s
->
dte_is_waiting
=
TRUE
;
s
->
dte_is_waiting
=
TRUE
;
}
}
}
}
...
...
libs/spandsp/src/fax.c
浏览文件 @
6cb3be7d
...
@@ -323,12 +323,8 @@ static void fax_set_tx_type(void *user_data, int type, int bit_rate, int short_t
...
@@ -323,12 +323,8 @@ static void fax_set_tx_type(void *user_data, int type, int bit_rate, int short_t
break
;
break
;
case
T30_MODEM_CED
:
case
T30_MODEM_CED
:
case
T30_MODEM_CNG
:
case
T30_MODEM_CNG
:
if
(
type
==
T30_MODEM_CED
)
tone
=
(
type
==
T30_MODEM_CED
)
?
FAX_MODEM_CED_TONE_TX
:
FAX_MODEM_CNG_TONE_TX
;
tone
=
MODEM_CONNECT_TONES_FAX_CED
;
fax_modems_start_slow_modem
(
t
,
tone
);
else
tone
=
MODEM_CONNECT_TONES_FAX_CNG
;
modem_connect_tones_tx_init
(
&
t
->
connect_tx
,
tone
);
fax_modems_set_tx_handler
(
t
,
(
span_tx_handler_t
)
&
modem_connect_tones_tx
,
&
t
->
connect_tx
);
fax_modems_set_next_tx_handler
(
t
,
(
span_tx_handler_t
)
NULL
,
NULL
);
fax_modems_set_next_tx_handler
(
t
,
(
span_tx_handler_t
)
NULL
,
NULL
);
t
->
transmit
=
TRUE
;
t
->
transmit
=
TRUE
;
break
;
break
;
...
...
libs/spandsp/src/fax_modems.c
浏览文件 @
6cb3be7d
...
@@ -261,11 +261,32 @@ SPAN_DECLARE(void) fax_modems_start_slow_modem(fax_modems_state_t *s, int which)
...
@@ -261,11 +261,32 @@ SPAN_DECLARE(void) fax_modems_start_slow_modem(fax_modems_state_t *s, int which)
{
{
case
FAX_MODEM_V21_RX
:
case
FAX_MODEM_V21_RX
:
fsk_rx_init
(
&
s
->
v21_rx
,
&
preset_fsk_specs
[
FSK_V21CH2
],
FSK_FRAME_MODE_SYNC
,
(
put_bit_func_t
)
hdlc_rx_put_bit
,
&
s
->
hdlc_rx
);
fsk_rx_init
(
&
s
->
v21_rx
,
&
preset_fsk_specs
[
FSK_V21CH2
],
FSK_FRAME_MODE_SYNC
,
(
put_bit_func_t
)
hdlc_rx_put_bit
,
&
s
->
hdlc_rx
);
fax_modems_set_rx_handler
(
s
,
(
span_rx_handler_t
)
&
fsk_rx
,
&
s
->
v21_rx
,
(
span_rx_fillin_handler_t
)
&
fsk_rx_fillin
,
&
s
->
v21_rx
);
fsk_rx_signal_cutoff
(
&
s
->
v21_rx
,
-
39
.
09
f
);
fsk_rx_signal_cutoff
(
&
s
->
v21_rx
,
-
39
.
09
f
);
s
->
rx_frame_received
=
FALSE
;
s
->
rx_frame_received
=
FALSE
;
break
;
break
;
case
FAX_MODEM_CED_TONE_RX
:
modem_connect_tones_rx_init
(
&
s
->
connect_rx
,
MODEM_CONNECT_TONES_FAX_CED
,
s
->
tone_callback
,
s
->
tone_callback_user_data
);
fax_modems_set_rx_handler
(
s
,
(
span_rx_handler_t
)
&
modem_connect_tones_rx
,
&
s
->
connect_rx
,
(
span_rx_fillin_handler_t
)
&
modem_connect_tones_rx_fillin
,
&
s
->
connect_rx
);
break
;
case
FAX_MODEM_CNG_TONE_RX
:
modem_connect_tones_rx_init
(
&
s
->
connect_rx
,
MODEM_CONNECT_TONES_FAX_CNG
,
s
->
tone_callback
,
s
->
tone_callback_user_data
);
fax_modems_set_rx_handler
(
s
,
(
span_rx_handler_t
)
&
modem_connect_tones_rx
,
&
s
->
connect_rx
,
(
span_rx_fillin_handler_t
)
&
modem_connect_tones_rx_fillin
,
&
s
->
connect_rx
);
break
;
case
FAX_MODEM_V21_TX
:
case
FAX_MODEM_V21_TX
:
fsk_tx_init
(
&
s
->
v21_tx
,
&
preset_fsk_specs
[
FSK_V21CH2
],
(
get_bit_func_t
)
hdlc_tx_get_bit
,
&
s
->
hdlc_tx
);
fsk_tx_init
(
&
s
->
v21_tx
,
&
preset_fsk_specs
[
FSK_V21CH2
],
(
get_bit_func_t
)
hdlc_tx_get_bit
,
&
s
->
hdlc_tx
);
fax_modems_set_tx_handler
(
s
,
(
span_tx_handler_t
)
&
fsk_tx
,
&
s
->
v21_tx
);
fax_modems_set_next_tx_handler
(
s
,
(
span_tx_handler_t
)
NULL
,
NULL
);
break
;
case
FAX_MODEM_CED_TONE_TX
:
modem_connect_tones_tx_init
(
&
s
->
connect_tx
,
MODEM_CONNECT_TONES_FAX_CED
);
fax_modems_set_tx_handler
(
s
,
(
span_tx_handler_t
)
&
modem_connect_tones_tx
,
&
s
->
connect_tx
);
fax_modems_set_next_tx_handler
(
s
,
(
span_tx_handler_t
)
NULL
,
NULL
);
break
;
case
FAX_MODEM_CNG_TONE_TX
:
modem_connect_tones_tx_init
(
&
s
->
connect_tx
,
MODEM_CONNECT_TONES_FAX_CNG
);
fax_modems_set_tx_handler
(
s
,
(
span_tx_handler_t
)
&
modem_connect_tones_tx
,
&
s
->
connect_tx
);
fax_modems_set_next_tx_handler
(
s
,
(
span_tx_handler_t
)
NULL
,
NULL
);
break
;
break
;
}
}
}
}
...
@@ -490,12 +511,14 @@ SPAN_DECLARE(fax_modems_state_t *) fax_modems_init(fax_modems_state_t *s,
...
@@ -490,12 +511,14 @@ SPAN_DECLARE(fax_modems_state_t *) fax_modems_init(fax_modems_state_t *s,
s
->
use_tep
=
use_tep
;
s
->
use_tep
=
use_tep
;
modem_connect_tones_tx_init
(
&
s
->
connect_tx
,
MODEM_CONNECT_TONES_FAX_CNG
);
modem_connect_tones_tx_init
(
&
s
->
connect_tx
,
MODEM_CONNECT_TONES_FAX_CNG
);
s
->
tone_callback
=
tone_callback
;
s
->
tone_callback_user_data
=
user_data
;
if
(
tone_callback
)
if
(
tone_callback
)
{
{
modem_connect_tones_rx_init
(
&
s
->
connect_rx
,
modem_connect_tones_rx_init
(
&
s
->
connect_rx
,
MODEM_CONNECT_TONES_FAX_CNG
,
MODEM_CONNECT_TONES_FAX_CNG
,
tone_callback
,
s
->
tone_callback
,
user_data
);
s
->
tone_callback_
user_data
);
}
}
/*endif*/
/*endif*/
span_log_init
(
&
s
->
logging
,
SPAN_LOG_NONE
,
NULL
);
span_log_init
(
&
s
->
logging
,
SPAN_LOG_NONE
,
NULL
);
...
...
libs/spandsp/src/modem_connect_tones.c
浏览文件 @
6cb3be7d
...
@@ -693,6 +693,12 @@ SPAN_DECLARE_NONSTD(int) modem_connect_tones_rx(modem_connect_tones_rx_state_t *
...
@@ -693,6 +693,12 @@ SPAN_DECLARE_NONSTD(int) modem_connect_tones_rx(modem_connect_tones_rx_state_t *
}
}
/*- End of function --------------------------------------------------------*/
/*- End of function --------------------------------------------------------*/
SPAN_DECLARE_NONSTD
(
int
)
modem_connect_tones_rx_fillin
(
modem_connect_tones_rx_state_t
*
s
,
int
len
)
{
return
0
;
}
/*- End of function --------------------------------------------------------*/
SPAN_DECLARE
(
int
)
modem_connect_tones_rx_get
(
modem_connect_tones_rx_state_t
*
s
)
SPAN_DECLARE
(
int
)
modem_connect_tones_rx_get
(
modem_connect_tones_rx_state_t
*
s
)
{
{
int
x
;
int
x
;
...
...
libs/spandsp/src/spandsp/fax_modems.h
浏览文件 @
6cb3be7d
...
@@ -34,9 +34,11 @@ enum
...
@@ -34,9 +34,11 @@ enum
FAX_MODEM_FLUSH
=
0
,
FAX_MODEM_FLUSH
=
0
,
FAX_MODEM_SILENCE_TX
,
FAX_MODEM_SILENCE_TX
,
FAX_MODEM_SILENCE_RX
,
FAX_MODEM_SILENCE_RX
,
FAX_MODEM_CED_TONE
,
FAX_MODEM_CED_TONE_TX
,
FAX_MODEM_CNG_TONE
,
FAX_MODEM_CNG_TONE_TX
,
FAX_MODEM_NOCNG_TONE
,
FAX_MODEM_NOCNG_TONE_TX
,
FAX_MODEM_CED_TONE_RX
,
FAX_MODEM_CNG_TONE_RX
,
FAX_MODEM_V21_TX
,
FAX_MODEM_V21_TX
,
FAX_MODEM_V17_TX
,
FAX_MODEM_V17_TX
,
FAX_MODEM_V27TER_TX
,
FAX_MODEM_V27TER_TX
,
...
...
libs/spandsp/src/spandsp/modem_connect_tones.h
浏览文件 @
6cb3be7d
...
@@ -142,6 +142,15 @@ SPAN_DECLARE_NONSTD(int) modem_connect_tones_rx(modem_connect_tones_rx_state_t *
...
@@ -142,6 +142,15 @@ SPAN_DECLARE_NONSTD(int) modem_connect_tones_rx(modem_connect_tones_rx_state_t *
const
int16_t
amp
[],
const
int16_t
amp
[],
int
len
);
int
len
);
/*! Fake processing of a missing block of received modem connect tone samples
(e.g due to packet loss).
\brief Fake processing of a missing block of received modem connect tone samples.
\param s The context.
\param len The number of samples to fake.
\return The number of samples unprocessed.
*/
SPAN_DECLARE_NONSTD
(
int
)
modem_connect_tones_rx_fillin
(
modem_connect_tones_rx_state_t
*
s
,
int
len
);
/*! \brief Test if a modem_connect tone has been detected.
/*! \brief Test if a modem_connect tone has been detected.
\param s The context.
\param s The context.
\return TRUE if tone is detected, else FALSE.
\return TRUE if tone is detected, else FALSE.
...
...
libs/spandsp/src/spandsp/private/fax_modems.h
浏览文件 @
6cb3be7d
...
@@ -82,6 +82,11 @@ struct fax_modems_state_s
...
@@ -82,6 +82,11 @@ struct fax_modems_state_s
/*! \brief */
/*! \brief */
dc_restore_state_t
dc_restore
;
dc_restore_state_t
dc_restore
;
/*! \brief The callback function used to report detected tones. */
tone_report_func_t
tone_callback
;
/*! \brief A user specified opaque pointer passed to the tone_callback function. */
void
*
tone_callback_user_data
;
/*! \brief The fast modem type currently in use */
/*! \brief The fast modem type currently in use */
int
fast_modem
;
int
fast_modem
;
...
...
libs/spandsp/src/t31.c
浏览文件 @
6cb3be7d
...
@@ -187,7 +187,7 @@ static void hdlc_accept_frame(void *user_data, const uint8_t *msg, int len, int
...
@@ -187,7 +187,7 @@ static void hdlc_accept_frame(void *user_data, const uint8_t *msg, int len, int
static
void
hdlc_accept_t38_frame
(
void
*
user_data
,
const
uint8_t
*
msg
,
int
len
,
int
ok
);
static
void
hdlc_accept_t38_frame
(
void
*
user_data
,
const
uint8_t
*
msg
,
int
len
,
int
ok
);
static
void
hdlc_accept_non_ecm_frame
(
void
*
user_data
,
const
uint8_t
*
msg
,
int
len
,
int
ok
);
static
void
hdlc_accept_non_ecm_frame
(
void
*
user_data
,
const
uint8_t
*
msg
,
int
len
,
int
ok
);
static
int
silence_rx
(
void
*
user_data
,
const
int16_t
amp
[],
int
len
);
static
int
silence_rx
(
void
*
user_data
,
const
int16_t
amp
[],
int
len
);
static
int
cng
_rx
(
void
*
user_data
,
const
int16_t
amp
[],
int
len
);
static
int
initial_timed
_rx
(
void
*
user_data
,
const
int16_t
amp
[],
int
len
);
static
void
non_ecm_put_bit
(
void
*
user_data
,
int
bit
);
static
void
non_ecm_put_bit
(
void
*
user_data
,
int
bit
);
static
void
non_ecm_put
(
void
*
user_data
,
const
uint8_t
buf
[],
int
len
);
static
void
non_ecm_put
(
void
*
user_data
,
const
uint8_t
buf
[],
int
len
);
static
int
non_ecm_get
(
void
*
user_data
,
uint8_t
buf
[],
int
len
);
static
int
non_ecm_get
(
void
*
user_data
,
uint8_t
buf
[],
int
len
);
...
@@ -223,7 +223,7 @@ static int front_end_status(t31_state_t *s, int status)
...
@@ -223,7 +223,7 @@ static int front_end_status(t31_state_t *s, int status)
}
}
/*endif*/
/*endif*/
break
;
break
;
case
FAX_MODEM_CED_TONE
:
case
FAX_MODEM_CED_TONE
_TX
:
/* Go directly to V.21/HDLC transmit. */
/* Go directly to V.21/HDLC transmit. */
s
->
modem
=
FAX_MODEM_NONE
;
s
->
modem
=
FAX_MODEM_NONE
;
restart_modem
(
s
,
FAX_MODEM_V21_TX
);
restart_modem
(
s
,
FAX_MODEM_V21_TX
);
...
@@ -1599,7 +1599,6 @@ static int non_ecm_get(void *user_data, uint8_t buf[], int len)
...
@@ -1599,7 +1599,6 @@ static int non_ecm_get(void *user_data, uint8_t buf[], int len)
s
->
non_ecm_tx
.
final
=
FALSE
;
s
->
non_ecm_tx
.
final
=
FALSE
;
/* This will put the modem into its shutdown sequence. When
/* This will put the modem into its shutdown sequence. When
it has finally shut down, an OK response will be sent. */
it has finally shut down, an OK response will be sent. */
//return SIG_STATUS_END_OF_DATA;
return
i
;
return
i
;
}
}
/*endif*/
/*endif*/
...
@@ -1679,7 +1678,7 @@ static void hdlc_rx_status(void *user_data, int status)
...
@@ -1679,7 +1678,7 @@ static void hdlc_rx_status(void *user_data, int status)
s
->
audio
.
modems
.
rx_trained
=
TRUE
;
s
->
audio
.
modems
.
rx_trained
=
TRUE
;
break
;
break
;
case
SIG_STATUS_CARRIER_UP
:
case
SIG_STATUS_CARRIER_UP
:
if
(
s
->
modem
==
FAX_MODEM_CNG_TONE
||
s
->
modem
==
FAX_MODEM_NOCNG_TONE
||
s
->
modem
==
FAX_MODEM_V21_RX
)
if
(
s
->
modem
==
FAX_MODEM_CNG_TONE
_TX
||
s
->
modem
==
FAX_MODEM_NOCNG_TONE_TX
||
s
->
modem
==
FAX_MODEM_V21_RX
)
{
{
s
->
at_state
.
rx_signal_present
=
TRUE
;
s
->
at_state
.
rx_signal_present
=
TRUE
;
s
->
rx_frame_received
=
FALSE
;
s
->
rx_frame_received
=
FALSE
;
...
@@ -1718,7 +1717,7 @@ static void hdlc_rx_status(void *user_data, int status)
...
@@ -1718,7 +1717,7 @@ static void hdlc_rx_status(void *user_data, int status)
s
->
audio
.
modems
.
rx_trained
=
FALSE
;
s
->
audio
.
modems
.
rx_trained
=
FALSE
;
break
;
break
;
case
SIG_STATUS_FRAMING_OK
:
case
SIG_STATUS_FRAMING_OK
:
if
(
s
->
modem
==
FAX_MODEM_CNG_TONE
||
s
->
modem
==
FAX_MODEM_NOCNG_TONE
)
if
(
s
->
modem
==
FAX_MODEM_CNG_TONE
_TX
||
s
->
modem
==
FAX_MODEM_NOCNG_TONE_TX
)
{
{
/* Once we get any valid HDLC the CNG tone stops, and we drop
/* Once we get any valid HDLC the CNG tone stops, and we drop
to the V.21 receive modem on its own. */
to the V.21 receive modem on its own. */
...
@@ -2028,7 +2027,7 @@ static int restart_modem(t31_state_t *s, int new_modem)
...
@@ -2028,7 +2027,7 @@ static int restart_modem(t31_state_t *s, int new_modem)
use_hdlc
=
FALSE
;
use_hdlc
=
FALSE
;
switch
(
s
->
modem
)
switch
(
s
->
modem
)
{
{
case
FAX_MODEM_CNG_TONE
:
case
FAX_MODEM_CNG_TONE
_TX
:
if
(
s
->
t38_mode
)
if
(
s
->
t38_mode
)
{
{
s
->
t38_fe
.
next_tx_samples
=
s
->
t38_fe
.
samples
;
s
->
t38_fe
.
next_tx_samples
=
s
->
t38_fe
.
samples
;
...
@@ -2037,35 +2036,34 @@ static int restart_modem(t31_state_t *s, int new_modem)
...
@@ -2037,35 +2036,34 @@ static int restart_modem(t31_state_t *s, int new_modem)
}
}
else
else
{
{
modem_connect_tones_tx_init
(
&
t
->
connect_tx
,
MODEM_CONNECT_TONES_FAX_CNG
);
fax_modems_start_slow_modem
(
t
,
FAX_MODEM_CNG_TONE_TX
);
/* CNG is special, since we need to receive V.21 HDLC messages while sending the
/* CNG is special, since we need to receive V.21 HDLC messages while sending the
tone. Everything else in FAX processing sends only one way at a time. */
tone. Everything else in FAX processing sends only one way at a time. */
/* Do V.21/HDLC receive in parallel. The other end may send its
/* Do V.21/HDLC receive in parallel. The other end may send its
first message at any time. The CNG tone will continue until
first message at any time. The CNG tone will continue until
we get a valid preamble. */
we get a valid preamble. */
t31_v21_rx
(
s
);
t31_v21_rx
(
s
);
fax_modems_set_rx_handler
(
t
,
(
span_rx_handler_t
)
&
cng_rx
,
s
,
(
span_rx_fillin_handler_t
)
&
span_dummy_rx_fillin
,
NULL
);
fax_modems_set_rx_handler
(
t
,
(
span_rx_handler_t
)
&
initial_timed_rx
,
s
,
(
span_rx_fillin_handler_t
)
&
span_dummy_rx_fillin
,
NULL
);
fax_modems_set_tx_handler
(
t
,
(
span_tx_handler_t
)
&
modem_connect_tones_tx
,
&
t
->
connect_tx
);
fax_modems_set_next_tx_handler
(
t
,
(
span_tx_handler_t
)
NULL
,
NULL
);
fax_modems_set_next_tx_handler
(
t
,
(
span_tx_handler_t
)
NULL
,
NULL
);
}
}
/*endif*/
/*endif*/
s
->
at_state
.
transmit
=
TRUE
;
s
->
at_state
.
transmit
=
TRUE
;
break
;
break
;
case
FAX_MODEM_NOCNG_TONE
:
case
FAX_MODEM_NOCNG_TONE
_TX
:
if
(
s
->
t38_mode
)
if
(
s
->
t38_mode
)
{
{
}
}
else
else
{
{
t31_v21_rx
(
s
);
t31_v21_rx
(
s
);
fax_modems_set_rx_handler
(
t
,
(
span_rx_handler_t
)
&
cng
_rx
,
s
,
(
span_rx_fillin_handler_t
)
&
span_dummy_rx_fillin
,
NULL
);
fax_modems_set_rx_handler
(
t
,
(
span_rx_handler_t
)
&
initial_timed
_rx
,
s
,
(
span_rx_fillin_handler_t
)
&
span_dummy_rx_fillin
,
NULL
);
silence_gen_set
(
&
t
->
silence_gen
,
0
);
silence_gen_set
(
&
t
->
silence_gen
,
0
);
fax_modems_set_tx_handler
(
t
,
(
span_tx_handler_t
)
&
silence_gen
,
&
t
->
silence_gen
);
fax_modems_set_tx_handler
(
t
,
(
span_tx_handler_t
)
&
silence_gen
,
&
t
->
silence_gen
);
}
}
/*endif*/
/*endif*/
s
->
at_state
.
transmit
=
FALSE
;
s
->
at_state
.
transmit
=
FALSE
;
break
;
break
;
case
FAX_MODEM_CED_TONE
:
case
FAX_MODEM_CED_TONE
_TX
:
if
(
s
->
t38_mode
)
if
(
s
->
t38_mode
)
{
{
s
->
t38_fe
.
next_tx_samples
=
s
->
t38_fe
.
samples
;
s
->
t38_fe
.
next_tx_samples
=
s
->
t38_fe
.
samples
;
...
@@ -2074,8 +2072,7 @@ static int restart_modem(t31_state_t *s, int new_modem)
...
@@ -2074,8 +2072,7 @@ static int restart_modem(t31_state_t *s, int new_modem)
}
}
else
else
{
{
modem_connect_tones_tx_init
(
&
t
->
connect_tx
,
MODEM_CONNECT_TONES_FAX_CED
);
fax_modems_start_slow_modem
(
t
,
FAX_MODEM_CED_TONE_TX
);
fax_modems_set_tx_handler
(
t
,
(
span_tx_handler_t
)
&
modem_connect_tones_tx
,
&
t
->
connect_tx
);
fax_modems_set_next_tx_handler
(
t
,
(
span_tx_handler_t
)
NULL
,
NULL
);
fax_modems_set_next_tx_handler
(
t
,
(
span_tx_handler_t
)
NULL
,
NULL
);
}
}
/*endif*/
/*endif*/
...
@@ -2121,9 +2118,9 @@ static int restart_modem(t31_state_t *s, int new_modem)
...
@@ -2121,9 +2118,9 @@ static int restart_modem(t31_state_t *s, int new_modem)
case
FAX_MODEM_V29_RX
:
case
FAX_MODEM_V29_RX
:
if
(
!
s
->
t38_mode
)
if
(
!
s
->
t38_mode
)
{
{
fax_modems_start_fast_modem
(
t
,
s
->
modem
,
s
->
bit_rate
,
s
->
short_train
,
use_hdlc
);
/* Allow for +FCERROR/+FRH:3 */
/* Allow for +FCERROR/+FRH:3 */
t31_v21_rx
(
s
);
t31_v21_rx
(
s
);
fax_modems_start_fast_modem
(
t
,
s
->
modem
,
s
->
bit_rate
,
s
->
short_train
,
use_hdlc
);
}
}
/*endif*/
/*endif*/
s
->
at_state
.
transmit
=
FALSE
;
s
->
at_state
.
transmit
=
FALSE
;
...
@@ -2743,7 +2740,7 @@ static int silence_rx(void *user_data, const int16_t amp[], int len)
...
@@ -2743,7 +2740,7 @@ static int silence_rx(void *user_data, const int16_t amp[], int len)
}
}
/*- End of function --------------------------------------------------------*/
/*- End of function --------------------------------------------------------*/
static
int
cng
_rx
(
void
*
user_data
,
const
int16_t
amp
[],
int
len
)
static
int
initial_timed
_rx
(
void
*
user_data
,
const
int16_t
amp
[],
int
len
)
{
{
t31_state_t
*
s
;
t31_state_t
*
s
;
...
@@ -2755,12 +2752,9 @@ static int cng_rx(void *user_data, const int16_t amp[], int len)
...
@@ -2755,12 +2752,9 @@ static int cng_rx(void *user_data, const int16_t amp[], int len)
restart_modem
(
s
,
FAX_MODEM_SILENCE_TX
);
restart_modem
(
s
,
FAX_MODEM_SILENCE_TX
);
at_modem_control
(
&
s
->
at_state
,
AT_MODEM_CONTROL_HANGUP
,
NULL
);
at_modem_control
(
&
s
->
at_state
,
AT_MODEM_CONTROL_HANGUP
,
NULL
);
t31_set_at_rx_mode
(
s
,
AT_MODE_ONHOOK_COMMAND
);
t31_set_at_rx_mode
(
s
,
AT_MODE_ONHOOK_COMMAND
);
return
0
;
}
}
else
{
fsk_rx
(
&
s
->
audio
.
modems
.
v21_rx
,
amp
,
len
);
fsk_rx
(
&
s
->
audio
.
modems
.
v21_rx
,
amp
,
len
);
}
/*endif*/
return
0
;
return
0
;
}
}
/*- End of function --------------------------------------------------------*/
/*- End of function --------------------------------------------------------*/
...
...
libs/spandsp/src/t38_core.c
浏览文件 @
6cb3be7d
...
@@ -867,7 +867,7 @@ static int t38_encode_data(t38_core_state_t *s, uint8_t buf[], int data_type, co
...
@@ -867,7 +867,7 @@ static int t38_encode_data(t38_core_state_t *s, uint8_t buf[], int data_type, co
if
(
s
->
data_transport_protocol
==
T38_TRANSPORT_TCP_TPKT
)
if
(
s
->
data_transport_protocol
==
T38_TRANSPORT_TCP_TPKT
)
{
{
/* Fill in the TPKT header (se RFC1006) */
/* Fill in the TPKT header (se
e
RFC1006) */
/* Version */
/* Version */
buf
[
0
]
=
3
;
buf
[
0
]
=
3
;
/* Reserved */
/* Reserved */
...
...
libs/spandsp/src/t38_gateway.c
浏览文件 @
6cb3be7d
...
@@ -321,16 +321,14 @@ static int set_next_tx_type(t38_gateway_state_t *s)
...
@@ -321,16 +321,14 @@ static int set_next_tx_type(t38_gateway_state_t *s)
break
;
break
;
case
T38_IND_CNG
:
case
T38_IND_CNG
:
t
->
tx_bit_rate
=
0
;
t
->
tx_bit_rate
=
0
;
modem_connect_tones_tx_init
(
&
t
->
connect_tx
,
MODEM_CONNECT_TONES_FAX_CNG
);
fax_modems_start_slow_modem
(
t
,
FAX_MODEM_CNG_TONE_TX
);
silence_gen_set
(
&
t
->
silence_gen
,
0
);
silence_gen_set
(
&
t
->
silence_gen
,
0
);
fax_modems_set_tx_handler
(
t
,
(
span_tx_handler_t
)
&
modem_connect_tones_tx
,
&
t
->
connect_tx
);
fax_modems_set_next_tx_handler
(
t
,
(
span_tx_handler_t
)
&
silence_gen
,
&
t
->
silence_gen
);
fax_modems_set_next_tx_handler
(
t
,
(
span_tx_handler_t
)
&
silence_gen
,
&
t
->
silence_gen
);
fax_modems_set_rx_active
(
t
,
TRUE
);
fax_modems_set_rx_active
(
t
,
TRUE
);
break
;
break
;
case
T38_IND_CED
:
case
T38_IND_CED
:
t
->
tx_bit_rate
=
0
;
t
->
tx_bit_rate
=
0
;
modem_connect_tones_tx_init
(
&
t
->
connect_tx
,
MODEM_CONNECT_TONES_FAX_CED
);
fax_modems_start_slow_modem
(
t
,
FAX_MODEM_CED_TONE_TX
);
fax_modems_set_tx_handler
(
t
,
(
span_tx_handler_t
)
&
modem_connect_tones_tx
,
&
t
->
connect_tx
);
fax_modems_set_next_tx_handler
(
t
,
(
span_tx_handler_t
)
NULL
,
NULL
);
fax_modems_set_next_tx_handler
(
t
,
(
span_tx_handler_t
)
NULL
,
NULL
);
fax_modems_set_rx_active
(
t
,
TRUE
);
fax_modems_set_rx_active
(
t
,
TRUE
);
break
;
break
;
...
...
libs/spandsp/tests/fax_tester.c
浏览文件 @
6cb3be7d
...
@@ -312,66 +312,13 @@ static void hdlc_accept(void *user_data, const uint8_t *msg, int len, int ok)
...
@@ -312,66 +312,13 @@ static void hdlc_accept(void *user_data, const uint8_t *msg, int len, int ok)
}
}
/*- End of function --------------------------------------------------------*/
/*- End of function --------------------------------------------------------*/
static
int
v17_v21_rx
(
void
*
user_data
,
const
int16_t
amp
[],
int
len
)
{
fax_modems_state_t
*
s
;
s
=
(
fax_modems_state_t
*
)
user_data
;
v17_rx
(
&
s
->
fast_modems
.
v17_rx
,
amp
,
len
);
fsk_rx
(
&
s
->
v21_rx
,
amp
,
len
);
if
(
s
->
rx_trained
)
{
/* 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.17 + V.21 to V.17 (%.2fdBm0)
\n
"
,
v17_rx_signal_power
(
&
s
->
fast_modems
.
v17_rx
));
fax_modems_set_rx_handler
(
s
,
(
span_rx_handler_t
)
&
v17_rx
,
&
s
->
fast_modems
.
v17_rx
,
NULL
,
NULL
);
}
return
0
;
}
/*- End of function --------------------------------------------------------*/
static
int
v27ter_v21_rx
(
void
*
user_data
,
const
int16_t
amp
[],
int
len
)
{
fax_modems_state_t
*
s
;
s
=
(
fax_modems_state_t
*
)
user_data
;
v27ter_rx
(
&
s
->
fast_modems
.
v27ter_rx
,
amp
,
len
);
fsk_rx
(
&
s
->
v21_rx
,
amp
,
len
);
if
(
s
->
rx_trained
)
{
/* 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.27ter + V.21 to V.27ter (%.2fdBm0)
\n
"
,
v27ter_rx_signal_power
(
&
s
->
fast_modems
.
v27ter_rx
));
fax_modems_set_rx_handler
(
s
,
(
span_rx_handler_t
)
&
v27ter_rx
,
&
s
->
fast_modems
.
v27ter_rx
,
NULL
,
NULL
);
}
return
0
;
}
/*- End of function --------------------------------------------------------*/
static
int
v29_v21_rx
(
void
*
user_data
,
const
int16_t
amp
[],
int
len
)
{
fax_modems_state_t
*
s
;
s
=
(
fax_modems_state_t
*
)
user_data
;
v29_rx
(
&
s
->
fast_modems
.
v29_rx
,
amp
,
len
);
fsk_rx
(
&
s
->
v21_rx
,
amp
,
len
);
if
(
s
->
rx_trained
)
{
/* 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
));
fax_modems_set_rx_handler
(
s
,
(
span_rx_handler_t
)
&
v29_rx
,
&
s
->
fast_modems
.
v29_rx
,
NULL
,
NULL
);
}
return
0
;
}
/*- End of function --------------------------------------------------------*/
int
faxtester_rx
(
faxtester_state_t
*
s
,
int16_t
*
amp
,
int
len
)
int
faxtester_rx
(
faxtester_state_t
*
s
,
int16_t
*
amp
,
int
len
)
{
{
int
i
;
int
i
;
for
(
i
=
0
;
i
<
len
;
i
++
)
for
(
i
=
0
;
i
<
len
;
i
++
)
amp
[
i
]
=
dc_restore
(
&
s
->
modems
.
dc_restore
,
amp
[
i
]);
amp
[
i
]
=
dc_restore
(
&
s
->
modems
.
dc_restore
,
amp
[
i
]);
if
(
s
->
modems
.
rx_handler
)
s
->
modems
.
rx_handler
(
s
->
modems
.
rx_user_data
,
amp
,
len
);
s
->
modems
.
rx_handler
(
s
->
modems
.
rx_user_data
,
amp
,
len
);
timer_update
(
s
,
len
);
timer_update
(
s
,
len
);
if
(
s
->
wait_for_silence
)
if
(
s
->
wait_for_silence
)
...
@@ -432,7 +379,6 @@ void faxtester_set_rx_type(void *user_data, int type, int bit_rate, int short_tr
...
@@ -432,7 +379,6 @@ void faxtester_set_rx_type(void *user_data, int type, int bit_rate, int short_tr
{
{
faxtester_state_t
*
s
;
faxtester_state_t
*
s
;
fax_modems_state_t
*
t
;
fax_modems_state_t
*
t
;
int
tone
;
s
=
(
faxtester_state_t
*
)
user_data
;
s
=
(
faxtester_state_t
*
)
user_data
;
t
=
&
s
->
modems
;
t
=
&
s
->
modems
;
...
@@ -445,37 +391,31 @@ void faxtester_set_rx_type(void *user_data, int type, int bit_rate, int short_tr
...
@@ -445,37 +391,31 @@ void faxtester_set_rx_type(void *user_data, int type, int bit_rate, int short_tr
switch
(
type
)
switch
(
type
)
{
{
case
T30_MODEM_CED
:
case
T30_MODEM_CED
:
fax_modems_start_slow_modem
(
t
,
FAX_MODEM_CED_TONE_RX
);
s
->
tone_state
=
MODEM_CONNECT_TONES_NONE
;
break
;
case
T30_MODEM_CNG
:
case
T30_MODEM_CNG
:
tone
=
(
type
==
T30_MODEM_CED
)
?
MODEM_CONNECT_TONES_FAX_CED
:
MODEM_CONNECT_TONES_FAX_CNG
;
fax_modems_start_slow_modem
(
t
,
FAX_MODEM_CNG_TONE_RX
);
modem_connect_tones_rx_init
(
&
t
->
connect_rx
,
tone
,
tone_detected
,
(
void
*
)
s
);
fax_modems_set_rx_handler
(
t
,
(
span_rx_handler_t
)
&
modem_connect_tones_rx
,
&
t
->
connect_rx
,
NULL
,
NULL
);
s
->
tone_state
=
MODEM_CONNECT_TONES_NONE
;
s
->
tone_state
=
MODEM_CONNECT_TONES_NONE
;
break
;
break
;
case
T30_MODEM_V21
:
case
T30_MODEM_V21
:
if
(
s
->
flush_handler
)
if
(
s
->
flush_handler
)
s
->
flush_handler
(
s
,
s
->
flush_user_data
,
3
);
s
->
flush_handler
(
s
,
s
->
flush_user_data
,
3
);
fax_modems_start_slow_modem
(
t
,
FAX_MODEM_V21_RX
);
fax_modems_start_slow_modem
(
t
,
FAX_MODEM_V21_RX
);
fax_modems_set_rx_handler
(
t
,
(
span_rx_handler_t
)
&
fsk_rx
,
&
t
->
v21_rx
,
NULL
,
NULL
);
break
;
break
;
case
T30_MODEM_V27TER
:
case
T30_MODEM_V27TER
:
fax_modems_start_fast_modem
(
t
,
FAX_MODEM_V27TER_RX
,
bit_rate
,
short_train
,
use_hdlc
);
fax_modems_start_fast_modem
(
t
,
FAX_MODEM_V27TER_RX
,
bit_rate
,
short_train
,
use_hdlc
);
fax_modems_set_rx_handler
(
t
,
(
span_rx_handler_t
)
&
v27ter_v21_rx
,
t
,
NULL
,
NULL
);
break
;
break
;
case
T30_MODEM_V29
:
case
T30_MODEM_V29
:
fax_modems_start_fast_modem
(
t
,
FAX_MODEM_V29_RX
,
bit_rate
,
short_train
,
use_hdlc
);
fax_modems_start_fast_modem
(
t
,
FAX_MODEM_V29_RX
,
bit_rate
,
short_train
,
use_hdlc
);
fax_modems_set_rx_handler
(
t
,
(
span_rx_handler_t
)
&
v29_v21_rx
,
t
,
NULL
,
NULL
);
break
;
break
;
case
T30_MODEM_V17
:
case
T30_MODEM_V17
:
fax_modems_start_fast_modem
(
t
,
FAX_MODEM_V17_RX
,
bit_rate
,
short_train
,
use_hdlc
);
fax_modems_start_fast_modem
(
t
,
FAX_MODEM_V17_RX
,
bit_rate
,
short_train
,
use_hdlc
);
fax_modems_set_rx_handler
(
t
,
(
span_rx_handler_t
)
&
v17_v21_rx
,
t
,
NULL
,
NULL
);
break
;
break
;
case
T30_MODEM_DONE
:
case
T30_MODEM_DONE
:
span_log
(
&
s
->
logging
,
SPAN_LOG_FLOW
,
"FAX exchange complete
\n
"
);
span_log
(
&
s
->
logging
,
SPAN_LOG_FLOW
,
"FAX exchange complete
\n
"
);
default:
default:
fax_modems_set_rx_handler
(
t
,
(
span_rx_handler_t
)
&
span_dummy_rx
,
s
,
NULL
,
NULL
);
fax_modems_set_rx_handler
(
t
,
(
span_rx_handler_t
)
&
span_dummy_rx
,
s
,
NULL
,
s
);
break
;
break
;
}
}
}
}
...
@@ -513,25 +453,19 @@ void faxtester_set_tx_type(void *user_data, int type, int bit_rate, int short_tr
...
@@ -513,25 +453,19 @@ void faxtester_set_tx_type(void *user_data, int type, int bit_rate, int short_tr
break
;
break
;
case
T30_MODEM_CED
:
case
T30_MODEM_CED
:
case
T30_MODEM_CNG
:
case
T30_MODEM_CNG
:
if
(
type
==
T30_MODEM_CED
)
tone
=
(
type
==
T30_MODEM_CED
)
?
MODEM_CONNECT_TONES_FAX_CED
:
MODEM_CONNECT_TONES_FAX_CNG
;
tone
=
MODEM_CONNECT_TONES_FAX_CED
;
fax_modems_start_slow_modem
(
t
,
tone
);
else
tone
=
MODEM_CONNECT_TONES_FAX_CNG
;
modem_connect_tones_tx_init
(
&
t
->
connect_tx
,
tone
);
fax_modems_set_tx_handler
(
t
,
(
span_tx_handler_t
)
&
modem_connect_tones_tx
,
&
t
->
connect_tx
);
s
->
transmit
=
TRUE
;
s
->
transmit
=
TRUE
;
break
;
break
;
case
T30_MODEM_V21
:
case
T30_MODEM_V21
:
fax_modems_start_slow_modem
(
t
,
FAX_MODEM_V21_TX
);
fax_modems_start_slow_modem
(
t
,
FAX_MODEM_V21_TX
);
fsk_tx_set_modem_status_handler
(
&
t
->
v21_tx
,
modem_tx_status
,
(
void
*
)
s
);
fsk_tx_set_modem_status_handler
(
&
t
->
v21_tx
,
modem_tx_status
,
(
void
*
)
s
);
fax_modems_set_tx_handler
(
t
,
(
span_tx_handler_t
)
&
fsk_tx
,
&
t
->
v21_tx
);
s
->
transmit
=
TRUE
;
s
->
transmit
=
TRUE
;
break
;
break
;
case
T30_MODEM_V27TER
:
case
T30_MODEM_V27TER
:
fax_modems_set_get_bit
(
t
,
get_bit_func
,
get_bit_user_data
);
fax_modems_set_get_bit
(
t
,
get_bit_func
,
get_bit_user_data
);
fax_modems_start_fast_modem
(
t
,
FAX_MODEM_V27TER_TX
,
bit_rate
,
short_train
,
use_hdlc
);
fax_modems_start_fast_modem
(
t
,
FAX_MODEM_V27TER_TX
,
bit_rate
,
short_train
,
use_hdlc
);
v27ter_tx_set_modem_status_handler
(
&
t
->
fast_modems
.
v27ter_tx
,
modem_tx_status
,
(
void
*
)
s
);
v27ter_tx_set_modem_status_handler
(
&
t
->
fast_modems
.
v27ter_tx
,
modem_tx_status
,
(
void
*
)
s
);
fax_modems_set_tx_handler
(
t
,
(
span_tx_handler_t
)
&
v27ter_tx
,
&
t
->
fast_modems
.
v27ter_tx
);
/* For any fast modem, set 200ms of preamble flags */
/* For any fast modem, set 200ms of preamble flags */
hdlc_tx_flags
(
&
t
->
hdlc_tx
,
bit_rate
/
(
8
*
5
));
hdlc_tx_flags
(
&
t
->
hdlc_tx
,
bit_rate
/
(
8
*
5
));
s
->
transmit
=
TRUE
;
s
->
transmit
=
TRUE
;
...
@@ -540,7 +474,6 @@ void faxtester_set_tx_type(void *user_data, int type, int bit_rate, int short_tr
...
@@ -540,7 +474,6 @@ void faxtester_set_tx_type(void *user_data, int type, int bit_rate, int short_tr
fax_modems_set_get_bit
(
t
,
get_bit_func
,
get_bit_user_data
);
fax_modems_set_get_bit
(
t
,
get_bit_func
,
get_bit_user_data
);
fax_modems_start_fast_modem
(
t
,
FAX_MODEM_V29_TX
,
bit_rate
,
short_train
,
use_hdlc
);
fax_modems_start_fast_modem
(
t
,
FAX_MODEM_V29_TX
,
bit_rate
,
short_train
,
use_hdlc
);
v29_tx_set_modem_status_handler
(
&
t
->
fast_modems
.
v29_tx
,
modem_tx_status
,
(
void
*
)
s
);
v29_tx_set_modem_status_handler
(
&
t
->
fast_modems
.
v29_tx
,
modem_tx_status
,
(
void
*
)
s
);
fax_modems_set_tx_handler
(
t
,
(
span_tx_handler_t
)
&
v29_tx
,
&
t
->
fast_modems
.
v29_tx
);
/* For any fast modem, set 200ms of preamble flags */
/* For any fast modem, set 200ms of preamble flags */
hdlc_tx_flags
(
&
t
->
hdlc_tx
,
bit_rate
/
(
8
*
5
));
hdlc_tx_flags
(
&
t
->
hdlc_tx
,
bit_rate
/
(
8
*
5
));
s
->
transmit
=
TRUE
;
s
->
transmit
=
TRUE
;
...
@@ -549,7 +482,6 @@ void faxtester_set_tx_type(void *user_data, int type, int bit_rate, int short_tr
...
@@ -549,7 +482,6 @@ void faxtester_set_tx_type(void *user_data, int type, int bit_rate, int short_tr
fax_modems_set_get_bit
(
t
,
get_bit_func
,
get_bit_user_data
);
fax_modems_set_get_bit
(
t
,
get_bit_func
,
get_bit_user_data
);
fax_modems_start_fast_modem
(
t
,
FAX_MODEM_V17_TX
,
bit_rate
,
short_train
,
use_hdlc
);
fax_modems_start_fast_modem
(
t
,
FAX_MODEM_V17_TX
,
bit_rate
,
short_train
,
use_hdlc
);
v17_tx_set_modem_status_handler
(
&
t
->
fast_modems
.
v17_tx
,
modem_tx_status
,
(
void
*
)
s
);
v17_tx_set_modem_status_handler
(
&
t
->
fast_modems
.
v17_tx
,
modem_tx_status
,
(
void
*
)
s
);
fax_modems_set_tx_handler
(
t
,
(
span_tx_handler_t
)
&
v17_tx
,
&
t
->
fast_modems
.
v17_tx
);
/* For any fast modem, set 200ms of preamble flags */
/* For any fast modem, set 200ms of preamble flags */
hdlc_tx_flags
(
&
t
->
hdlc_tx
,
bit_rate
/
(
8
*
5
));
hdlc_tx_flags
(
&
t
->
hdlc_tx
,
bit_rate
/
(
8
*
5
));
s
->
transmit
=
TRUE
;
s
->
transmit
=
TRUE
;
...
...
libs/spandsp/tests/regression_tests.sh
浏览文件 @
6cb3be7d
...
@@ -415,15 +415,14 @@ then
...
@@ -415,15 +415,14 @@ then
fi
fi
echo
schedule_tests completed OK
echo
schedule_tests completed OK
#./sig_tone_tests >$STDOUT_DEST 2>$STDERR_DEST
./sig_tone_tests
>
$STDOUT_DEST
2>
$STDERR_DEST
#RETVAL=$?
RETVAL
=
$?
#if [ $RETVAL != 0 ]
if
[
$RETVAL
!=
0
]
#then
then
# echo sig_tone_tests failed!
echo
sig_tone_tests failed!
# exit $RETVAL
exit
$RETVAL
#fi
fi
#echo sig_tone_tests completed OK
echo
sig_tone_tests completed OK
echo
sig_tone_tests not enabled
#./super_tone_rx_tests >$STDOUT_DEST 2>$STDERR_DEST
#./super_tone_rx_tests >$STDOUT_DEST 2>$STDERR_DEST
#RETVAL=$?
#RETVAL=$?
...
@@ -445,15 +444,14 @@ echo super_tone_rx_tests not enabled
...
@@ -445,15 +444,14 @@ echo super_tone_rx_tests not enabled
#echo super_tone_tx_tests completed OK
#echo super_tone_tx_tests completed OK
echo
super_tone_tx_tests not enabled
echo
super_tone_tx_tests not enabled
#./swept_tone_tests >$STDOUT_DEST 2>$STDERR_DEST
./swept_tone_tests
>
$STDOUT_DEST
2>
$STDERR_DEST
#RETVAL=$?
RETVAL
=
$?
#if [ $RETVAL != 0 ]
if
[
$RETVAL
!=
0
]
#then
then
# echo swept_tone_tests failed!
echo
swept_tone_tests failed!
# exit $RETVAL
exit
$RETVAL
#fi
fi
#echo swept_tone_tests completed OK
echo
swept_tone_tests completed OK
echo
swept_tone_tests not enabled
./t31_tests
-r
>
$STDOUT_DEST
2>
$STDERR_DEST
./t31_tests
-r
>
$STDOUT_DEST
2>
$STDERR_DEST
RETVAL
=
$?
RETVAL
=
$?
...
...
libs/spandsp/tests/t31_tests.c
浏览文件 @
6cb3be7d
...
@@ -105,7 +105,7 @@ static const struct command_response_s fax_send_test_seq[] =
...
@@ -105,7 +105,7 @@ static const struct command_response_s fax_send_test_seq[] =
RESPONSE
(
"
\r\n
OK
\r\n
"
),
RESPONSE
(
"
\r\n
OK
\r\n
"
),
EXCHANGE
(
"AT+FRH=3
\r
"
,
"
\r\n
CONNECT
\r\n
"
),
EXCHANGE
(
"AT+FRH=3
\r
"
,
"
\r\n
CONNECT
\r\n
"
),
//<DIS frame data>
//<DIS frame data>
#if
0
#if
1
RESPONSE
(
"
\xFF\x13\x80\x00\xEE\xF8\x80\x80\x91\x80\x80\x80\x18\x78\x57\x10\x03
"
),
// For audio FAXing
RESPONSE
(
"
\xFF\x13\x80\x00\xEE\xF8\x80\x80\x91\x80\x80\x80\x18\x78\x57\x10\x03
"
),
// For audio FAXing
#else
#else
RESPONSE
(
"
\xFF\x13\x80\x04\xEE\xF8\x80\x80\x91\x80\x80\x80\x18\xE4\xE7\x10\x03
"
),
// For T.38 FAXing
RESPONSE
(
"
\xFF\x13\x80\x04\xEE\xF8\x80\x80\x91\x80\x80\x80\x18\xE4\xE7\x10\x03
"
),
// For T.38 FAXing
...
...
libs/spandsp/tests/v18_tests.c
浏览文件 @
6cb3be7d
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论