?? 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; //是否在維護狀態(tài)
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); //等待音頻服務模塊初始化工作完成
//發(fā)向音頻模塊,啟動音頻測試
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); //在音頻服務結束后發(fā)停止消息 //2分鐘
//NU_Sleep(6000); //在音頻服務結束前發(fā)停止消息 //1分鐘
//發(fā)向音頻模塊,終止音頻測試
/* 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");
//發(fā)向音頻模塊,用于控制操作
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);
//發(fā)向維護模塊,用于提示信息
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);
}
}
//發(fā)向音頻模塊,用于控制操作
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) //測試消息發(fā)送完畢
{
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 + -