📄 tonemntn.c
字号:
/* toneMntn.c - 维护用 */
/* Copyright 1994-2001 Wuhan Jinglun Electronic Co., Ltd. */
/*
modification history
--------------------
*/
/*
DESCRIPTION 测试音频数据可控制的有效性
*/
#include "intfTone.h"
#include "intfMntn.h"
#include "intfAtth.h"
#include "..\inc\rtn_tone.h"
int gTONE_State_Mntn; //是否在维护状态
int gTONE_Mntn_Current; //当前测试的控制序列
#define TONE_TEST_WAIT_TIME (1000/10) // 1秒
NU_TIMER TONE_Timer_Mntn;
int gTONE_Test_Ctrl_Num;
TONE_TEST_CTRL_t gTONE_Test_Ctrl[] = {
// iReSchedule id code data0 data1 data2
TONE_TEST_INTERVAL_EACH, MNTN_TONE_START, MSG_TONE_TEST_MNTN, TONE_TEST_START, 0, 0, //开始测试
TONE_TEST_INTERVAL_KEYS, MNTN_TONE_KEYS_1, MSG_TONE_KEYS_UIMM, TONE_OUT_PHONE, '1', CHANNEL_B1, //号码键1
TONE_TEST_INTERVAL_KEYS, MNTN_TONE_KEYS_2, MSG_TONE_KEYS_UIMM, TONE_OUT_PHONE, '2', CHANNEL_B1, //号码键2
TONE_TEST_INTERVAL_KEYS, MNTN_TONE_KEYS_3, MSG_TONE_KEYS_UIMM, TONE_OUT_PHONE, '3', CHANNEL_B1, //号码键3
TONE_TEST_INTERVAL_KEYS, MNTN_TONE_KEYS_4, MSG_TONE_KEYS_UIMM, TONE_OUT_PHONE, '4', CHANNEL_B1, //号码键4
TONE_TEST_INTERVAL_KEYS, MNTN_TONE_KEYS_5, MSG_TONE_KEYS_UIMM, TONE_OUT_PHONE, '5', CHANNEL_B1, //号码键5
TONE_TEST_INTERVAL_KEYS, MNTN_TONE_KEYS_6, MSG_TONE_KEYS_UIMM, TONE_OUT_PHONE, '6', CHANNEL_B1, //号码键6
TONE_TEST_INTERVAL_KEYS, MNTN_TONE_KEYS_7, MSG_TONE_KEYS_UIMM, TONE_OUT_PHONE, '7', CHANNEL_B1, //号码键7
TONE_TEST_INTERVAL_KEYS, MNTN_TONE_KEYS_8, MSG_TONE_KEYS_UIMM, TONE_OUT_PHONE, '8', CHANNEL_B1, //号码键8
TONE_TEST_INTERVAL_KEYS, MNTN_TONE_KEYS_9, MSG_TONE_KEYS_UIMM, TONE_OUT_PHONE, '9', CHANNEL_B1, //号码键9
TONE_TEST_INTERVAL_KEYS, MNTN_TONE_KEYS_0, MSG_TONE_KEYS_UIMM, TONE_OUT_PHONE, '0', CHANNEL_B1, //号码键0
TONE_TEST_INTERVAL_KEYS, MNTN_TONE_KEYS_X, MSG_TONE_KEYS_UIMM, TONE_OUT_PHONE, '*', CHANNEL_B1, //号码键*
TONE_TEST_INTERVAL_KEYS, MNTN_TONE_KEYS_J, MSG_TONE_KEYS_UIMM, TONE_OUT_PHONE, '#', CHANNEL_B1, //号码键#
#if 1
TONE_TEST_INTERVAL_KEYS, MNTN_TONE_KEYS_A, MSG_TONE_KEYS_UIMM, TONE_OUT_PHONE, 'A', CHANNEL_B1, //号码键A
TONE_TEST_INTERVAL_KEYS, MNTN_TONE_KEYS_B, MSG_TONE_KEYS_UIMM, TONE_OUT_PHONE, 'B', CHANNEL_B1, //号码键B
TONE_TEST_INTERVAL_KEYS, MNTN_TONE_KEYS_C, MSG_TONE_KEYS_UIMM, TONE_OUT_PHONE, 'C', CHANNEL_B1, //号码键C
TONE_TEST_INTERVAL_KEYS, MNTN_TONE_KEYS_D, MSG_TONE_KEYS_UIMM, TONE_OUT_PHONE, 'D', CHANNEL_B1, //号码糄D
#endif
TONE_TEST_INTERVAL_REMV, MNTN_TONE_REMV, MSG_TONE_REMV_UIMM, TONE_OUT_SPEAK, TONE_TEST_CYCLE, 0, //取卡提示音
TONE_TEST_INTERVAL_EACH, 0, MSG_TONE_NULL_UIMM, TONE_OUT_SPEAK, 0, 0,
TONE_TEST_INTERVAL_CHGE, MNTN_TONE_CHGE, MSG_TONE_CHGE_UIMM, TONE_OUT_PHONE, TONE_TEST_CYCLE, 0, //换卡提示音
TONE_TEST_INTERVAL_EACH, 0, MSG_TONE_NULL_UIMM, TONE_OUT_PHONE, 0, 0,
TONE_TEST_INTERVAL_RING, MNTN_TONE_RING, MSG_TONE_RING_UIMM, TONE_OUT_SPEAK, TONE_TEST_CYCLE, 0, //被叫振铃音
TONE_TEST_INTERVAL_EACH, 0, MSG_TONE_NULL_UIMM, TONE_OUT_SPEAK, 0, 0,
TONE_TEST_INTERVAL_PUBL, MNTN_TONE_PUBL, MSG_TONE_PUBL_UIMM, TONE_OUT_PHONE/*+TONE_OUT_LINE*/, TONE_TEST_CYCLE, CHANNEL_B1, //公话提示音
TONE_TEST_INTERVAL_EACH, 0, MSG_TONE_NULL_UIMM, TONE_OUT_PHONE/*+TONE_OUT_LINE*/, 0, CHANNEL_B1,
TONE_TEST_INTERVAL_DIAL, MNTN_TONE_DIAL, MSG_TONE_DIAL_UIMM, TONE_OUT_PHONE, TONE_TEST_CYCLE+1, CHANNEL_B1, //拨号音
TONE_TEST_INTERVAL_EACH, 0, MSG_TONE_NULL_UIMM, TONE_OUT_PHONE, 0, CHANNEL_B1,
TONE_TEST_INTERVAL_BUSY, MNTN_TONE_BUSY, MSG_TONE_BUSY_UIMM, TONE_OUT_PHONE, TONE_TEST_CYCLE, CHANNEL_B1, //忙音
TONE_TEST_INTERVAL_EACH, 0, MSG_TONE_NULL_UIMM, TONE_OUT_PHONE, 0, CHANNEL_B1,
TONE_TEST_INTERVAL_DTMF, MNTN_TONE_DTMF_0, MSG_TONE_DTMF_UIMM, TONE_OUT_PHONE+TONE_OUT_LINE, '0', CHANNEL_B1, //号码键0
TONE_TEST_INTERVAL_DTMF, MNTN_TONE_DTMF_1, MSG_TONE_DTMF_UIMM, TONE_OUT_PHONE+TONE_OUT_LINE, '1', CHANNEL_B1, //号码键1
TONE_TEST_INTERVAL_DTMF, MNTN_TONE_DTMF_2, MSG_TONE_DTMF_UIMM, TONE_OUT_PHONE+TONE_OUT_LINE, '2', CHANNEL_B1, //号码键2
TONE_TEST_INTERVAL_DTMF, MNTN_TONE_DTMF_3, MSG_TONE_DTMF_UIMM, TONE_OUT_PHONE+TONE_OUT_LINE, '3', CHANNEL_B1, //号码键3
TONE_TEST_INTERVAL_DTMF, MNTN_TONE_DTMF_4, MSG_TONE_DTMF_UIMM, TONE_OUT_PHONE+TONE_OUT_LINE, '4', CHANNEL_B1, //号码键4
TONE_TEST_INTERVAL_DTMF, MNTN_TONE_DTMF_5, MSG_TONE_DTMF_UIMM, TONE_OUT_PHONE+TONE_OUT_LINE, '5', CHANNEL_B1, //号码键5
TONE_TEST_INTERVAL_DTMF, MNTN_TONE_DTMF_6, MSG_TONE_DTMF_UIMM, TONE_OUT_PHONE+TONE_OUT_LINE, '6', CHANNEL_B1, //号码键6
TONE_TEST_INTERVAL_DTMF, MNTN_TONE_DTMF_7, MSG_TONE_DTMF_UIMM, TONE_OUT_PHONE+TONE_OUT_LINE, '7', CHANNEL_B1, //号码键7
TONE_TEST_INTERVAL_DTMF, MNTN_TONE_DTMF_8, MSG_TONE_DTMF_UIMM, TONE_OUT_PHONE+TONE_OUT_LINE, '8', CHANNEL_B1, //号码键8
TONE_TEST_INTERVAL_DTMF, MNTN_TONE_DTMF_9, MSG_TONE_DTMF_UIMM, TONE_OUT_PHONE+TONE_OUT_LINE, '9', CHANNEL_B1, //号码键9
TONE_TEST_INTERVAL_DTMF, MNTN_TONE_DTMF_X, MSG_TONE_DTMF_UIMM, TONE_OUT_PHONE+TONE_OUT_LINE, '*', CHANNEL_B1, //号码键*
TONE_TEST_INTERVAL_DTMF, MNTN_TONE_DTMF_J, MSG_TONE_DTMF_UIMM, TONE_OUT_PHONE+TONE_OUT_LINE, '#', CHANNEL_B1, //号码键#
#if 1
TONE_TEST_INTERVAL_DTMF, MNTN_TONE_DTMF_A, MSG_TONE_DTMF_UIMM, TONE_OUT_PHONE+TONE_OUT_LINE, 'A', CHANNEL_B1, //号码键A
TONE_TEST_INTERVAL_DTMF, MNTN_TONE_DTMF_B, MSG_TONE_DTMF_UIMM, TONE_OUT_PHONE+TONE_OUT_LINE, 'B', CHANNEL_B1, //号码键B
TONE_TEST_INTERVAL_DTMF, MNTN_TONE_DTMF_C, MSG_TONE_DTMF_UIMM, TONE_OUT_PHONE+TONE_OUT_LINE, 'C', CHANNEL_B1, //号码键C
TONE_TEST_INTERVAL_DTMF, MNTN_TONE_DTMF_D, MSG_TONE_DTMF_UIMM, TONE_OUT_PHONE+TONE_OUT_LINE, 'D', CHANNEL_B1, //号码键D
#endif
0, MNTN_TONE_STOP, MSG_TONE_TEST_MNTN, TONE_TEST_STOP, 0, 0 //停止测试
};
/**********************************************************************
*
* FUNCTION "tone_Test" 音频服务.测试程序入口
*
***********************************************************************/
#if 0
void tone_Test(UNSIGNED argc, VOID *argv)
{
RtnMSG msg_to_Tone;
STATUS status;
PRINTFLOW("MNTN ---- Begin: tone_Test");
NU_Sleep(600); //等待音频服务模块初始化工作完成
//发向音频模块,启动音频测试
msg_to_Tone.msg_len = 1;
msg_to_Tone.msg_code = MSG_TONE_TEST_MNTN;
msg_to_Tone.msg_data[0] = TONE_TEST_START;
status = NU_Send_To_Pipe(&rtn_pipe[TONE], &msg_to_Tone, msg_to_Tone.msg_len + 4, NU_NO_SUSPEND);
if (status < NU_SUCCESS)
{
// printf("ERRR: NU_Send_To_Pipe TONE: %d. ", status);
}
// NU_Sleep(12000); //在音频服务结束后发停止消息 //2分钟
//NU_Sleep(6000); //在音频服务结束前发停止消息 //1分钟
//发向音频模块,终止音频测试
/* msg_to_Tone.msg_len = 1;
msg_to_Tone.msg_code = MSG_TONE_TEST_MNTN;
msg_to_Tone.msg_data[0] = TONE_TEST_STOP;
status = NU_Send_To_Pipe(&rtn_pipe[TONE], &msg_to_Tone, msg_to_Tone.msg_len + 4, NU_NO_SUSPEND);
if (status < NU_SUCCESS)
{
printf("ERRR: NU_Send_To_Pipe TONE: %d. ", status);
}
*/
PRINTFLOW("MNTN ---- Enddd: tone_Test ");
return;
}
#endif
/**********************************************************************
*
* FUNCTION "tone_App_Mntn" 维护模块测试
*
***********************************************************************/
int tone_Mntn_Test (RtnMSG r_msg)
{
RtnMSG msg_to_Tone;
STATUS status;
PRINTFLOW("MNTN ---- Begin: tone_App_Mntn");
gTONE_Test_Ctrl_Num = sizeof(gTONE_Test_Ctrl)/sizeof(TONE_TEST_CTRL_t);
switch(r_msg.msg_data[0])
{
case TONE_TEST_START:
//维护标记
//gTONE_State_Mntn =1;
//启动维护定时器
HeadPhone_start();
gTONE_Mntn_Current = 0;
status = NU_Create_Timer(&TONE_Timer_Mntn, "TT_MNTN", tone_HISR_Timer_Mntn, 1,
gTONE_Test_Ctrl[gTONE_Mntn_Current].iReSchedule, 0, NU_ENABLE_TIMER);
/* status = NU_Create_Timer(&TONE_Timer_Mntn, "TT_MNTN", tone_HISR_Timer_Mntn, 1,
gTONE_Test_Ctrl[gTONE_Mntn_Current].iReSchedule,
gTONE_Test_Ctrl[gTONE_Mntn_Current].iReSchedule,
NU_ENABLE_TIMER);
*/
break;
case TONE_TEST_STOP:
HeadPhone_stop();
//维护标记
//gTONE_State_Mntn =0; //
//关闭维护定时器
status = NU_Control_Timer(&TONE_Timer_Mntn, NU_DISABLE_TIMER);
status = NU_Delete_Timer(&TONE_Timer_Mntn);
//停止音频服务设备
msg_to_Tone.msg_len = 3;
msg_to_Tone.msg_code = MSG_TONE_NULL_UIMM; //停止消息
msg_to_Tone.msg_data[0] = TONE_OUT_LINE + TONE_OUT_PHONE + TONE_OUT_SPEAK; //停掉所有的方向
msg_to_Tone.msg_data[1] = 0; //保留
msg_to_Tone.msg_data[2] = CHANNEL_B1; //指定通道
status = NU_Send_To_Pipe(&rtn_pipe[TONE], &msg_to_Tone, msg_to_Tone.msg_len + 4, NU_NO_SUSPEND);
if (status < NU_SUCCESS)
{
// printf("ERRR: NU_Send_To_Pipe TONE: %d. ", status);
}
break;
default:
// printf("err test MSG\n");
break;
}
PRINTFLOW("MNTN ---- Enddd: tone_App_Mntn");
return NU_SUCCESS;
}
/**********************************************************************
*
* FUNCTION "tone_HISR_Timer_Mntn" 定时器.中断服务程序
*
***********************************************************************/
void tone_HISR_Timer_Mntn(UNSIGNED id)
{
//RtnMSG msg_to_Mntn;
RtnMSG msg_to_Tone;
STATUS status;
PRINTFLOW("MNTN ---- Begin: tone_HISR_Timer_Mntn");
//发向音频模块,用于控制操作
msg_to_Tone.msg_len = 3;
msg_to_Tone.msg_code = MSG_TONE_TIMER_MNTN;
status = NU_Send_To_Pipe(&rtn_pipe[TONE], &msg_to_Tone, msg_to_Tone.msg_len + 4, NU_NO_SUSPEND);
if (status < NU_SUCCESS)
{
// printf("ERRR: NU_Send_To_Pipe TONE: %d. ", status);
}
PRINTFLOW("MNTN ---- Enddd: tone_HISR_Timer_Mntn");
return;
}
/**********************************************************************
*
* FUNCTION "tone_Proc_Timer_Mntn_Expire" 定时器.中断服务程序
*
***********************************************************************/
int tone_Proc_Timer_Mntn_Expire(void)
{
RtnMSG msg_to_Mntn;
RtnMSG msg_to_Tone;
STATUS status;
PRINTFLOW("MNTN ---- Begin: tone_Proc_Timer_Mntn_Expire");
gTONE_Mntn_Current ++;
// printf("tone_Proc_Timer_Mntn_Expire iReSchedule:%d\n", gTONE_Test_Ctrl[gTONE_Mntn_Current].iReSchedule);
status = NU_Control_Timer(&TONE_Timer_Mntn, NU_DISABLE_TIMER);
status = NU_Reset_Timer(&TONE_Timer_Mntn, tone_HISR_Timer_Mntn,
gTONE_Test_Ctrl[gTONE_Mntn_Current].iReSchedule, 0, NU_ENABLE_TIMER);
// printf("tone_Proc_Timer_Mntn_Expire NU_Reset_Timer rtn:%d\n", status);
//发向维护模块,用于提示信息
if(gTONE_Test_Ctrl[gTONE_Mntn_Current].code!=MSG_TONE_NULL_UIMM) //
{
msg_to_Mntn.msg_len = 1;
msg_to_Mntn.msg_code = MSG_MNTN_TEST_TONE;
msg_to_Mntn.msg_data[0] = gTONE_Test_Ctrl[gTONE_Mntn_Current].id;
status = NU_Send_To_Pipe(&rtn_pipe[MNTN], &msg_to_Mntn, msg_to_Mntn.msg_len + 4, NU_NO_SUSPEND);
if (status < NU_SUCCESS)
{
// printf("ERRR: NU_Send_To_Pipe MNTN: %d. ", status);
}
}
//发向音频模块,用于控制操作
msg_to_Tone.msg_len = 3;
msg_to_Tone.msg_code = gTONE_Test_Ctrl[gTONE_Mntn_Current].code;
msg_to_Tone.msg_data[0] = gTONE_Test_Ctrl[gTONE_Mntn_Current].data0;
msg_to_Tone.msg_data[1] = gTONE_Test_Ctrl[gTONE_Mntn_Current].data1;
msg_to_Tone.msg_data[2] = gTONE_Test_Ctrl[gTONE_Mntn_Current].data2;
// printf("tone_Proc_Timer_Mntn_Expire code:%d d1:%d d2:%d d3:%d \n",
// msg_to_Tone.msg_code,msg_to_Tone.msg_data[0] ,msg_to_Tone.msg_data[1] ,msg_to_Tone.msg_data[2]);
status = NU_Send_To_Pipe(&rtn_pipe[TONE], &msg_to_Tone, msg_to_Tone.msg_len + 4, NU_NO_SUSPEND);
if (status < NU_SUCCESS)
{
// printf("ERRR: NU_Send_To_Pipe TONE: %d. ", status);
}
// printf (" TONE ---- gTONE_Test_Ctrl_Num: %d\n", gTONE_Test_Ctrl_Num);
// printf (" TONE ---- gTONE_Mntn_Current: %d\n", gTONE_Mntn_Current);
if (gTONE_Mntn_Current == gTONE_Test_Ctrl_Num) //测试消息发送完毕
{
status = NU_Control_Timer(&TONE_Timer_Mntn, NU_DISABLE_TIMER);
status = NU_Delete_Timer(&TONE_Timer_Mntn);
gTONE_Mntn_Current = 0;
}
PRINTFLOW("MNTN ---- Enddd: tone_Proc_Timer_Mntn_Expire");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -