⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tonemntn.c

📁 DTMF收发芯片88L89完美驱动(Arm,SDT251环境)
💻 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 + -