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

📄 toneapp.h

📁 DTMF收发芯片88L89完美驱动(Arm,SDT251环境)
💻 H
字号:
/* tone_App.h - 音频服务 应用层 外部消息函数 */

/* Copyright 1994-2001 Wuhan Jinglun Electronic Co., Ltd. */

/* 
modification history
--------------------
01a, 2001-11-14, Yan-CJ, 增加函数的声明.
01a, 2001-10-16, Yan-CJ, written.
*/

/* 
DESCRIPTION	根据外部消息提供相应的服务。
*/

/* includes */
#include "routon.h"

#include "toneType.h"

#ifndef _TONEAPP_H_
#define _TONEAPP_H_

#ifdef __cplusplus
extern "C" {
#endif
/* BEGIN, 2002-05-15, Yancj */
/* PURPOSE: CODEC设备宏*/
#define TONE_DEVICE_CODEC_NUL		0
#define TONE_DEVICE_CODEC_HFC		1
#define TONE_DEVICE_CODEC_ARM		2	
/* END */

/* BEGIN, 2002-05-15, Yancj */
/* PURPOSE: 语音文件长度根据网管下载的数据*/

#define 	TONE_BYTES_PER_MS			8				// 每毫秒播放8个字节
#define	TONE_MS_PER_TICK				10				// 每次滴答10MS	

#define 	TONE_KEYS_NUM 				16				// 16个按键音数据
#define	TONE_KEYS_TICKS_DELAY		4				// 延时4Ticks

#define 	TONE_DTMF_NUM 				16				// 16个双频音数据
#define	TONE_DTMF_TICKS_DELAY		4				// 延时4Ticks


#define TONE_BUFFER 				8000				// 音频数据长度	2003-07-03

//
//双频音数据总共长度			10240			
//每个双频音数据长度			10240/16 = 640 
//每个双频音数据播放时间	640 /8 = 80 (MS)	
//每个双频音数据滴答时间	80 / 10 = 8 
//两个双频音之间间隔时间	8 + 4 = 12
//

//gTONE_Data_Buf_Main[tone_id].iBuf =   10240;
//gTONE_Sizes_Per_DTMF 	= gTONE_Data_Buf_Main[tone_id].iBuf /TONE_DTMF_NUM;	// 10240/16 = 640 
//gTONE_MSs_Per_DTMF 		= gTONE_Size_Per_DTMF / TONE_BYTES_PER_MS;			// 640 /8 = 80 (MS)	
//gTONE_Ticks_Per_DTMF 	= gTONE_MSs_Per_DTMF / TONE_MS_PER_TICK; 			// 80 / 10 = 8 
//gTONE_Interval_DTMF 		= gTONE_Ticks_Per_DTMF + TONE_DTMF_TICKS_DELAY;		// 8 + 4 = 12

/* END */


#if 0	//added by yancj, 2002-04-08 
//
//对单音按键
//								时间长度= [50MS |60MS |100MS]
//每个毫秒需要8 个字节
//								数据长度= 时间长度X 8
//每次滴答需要10个毫秒
//								滴答次数= 时间长度/ 10
//每次延时需要2倍滴答
//								滴答延时= 滴答次数* 2
//

//
//按键音100MS比较合适,太短的声音听起来不舒服
//按键音缓存设置小一些,主要以人的感觉为宜,
//过多过快的消息可以抛掉。
//

#define TONE_KEYS_TIME_LENGTH		100	/*ms */	

#define	TONE_KEYS_SIZES				(TONE_KEYS_TIME_LENGTH * 8)	
#define	TONE_KEYS_TICKS 			(TONE_KEYS_TIME_LENGTH/10)	
#define	TONE_KEYS_TICKS_DELAY	    20	/*ticks */ /* per digits*/

//
//双频音80MS比较合适,太长或太短需要考虑具体的交换机
//双频音缓存设置可大一些,根据一次可能的发送总数决定
//不能够丢掉任何一个消息。
//

#define TONE_DTMF_TIME_LENGTH		80

#define	TONE_DTMF_SIZES				(TONE_DTMF_TIME_LENGTH * 8)	
#define	TONE_DTMF_TICKS 			(TONE_DTMF_TIME_LENGTH/10)	
#define	TONE_DTMF_TICKS_DELAY		12  /* ticks */

/* END */

#endif 

/*
数据长度	对某种提示音所需要的基本长度 (按键音、双频音除外)
发声时间	特定的时间内发送声音			
周期时间	周期音一个周期所需要的TICK数		
周期次数      周期音循环的次数  
连续次数	连续音对单位数据重复的次数	

数据长度保证有足够的数据
发音时间控制设备的开关
*/

#define TONE_KEYS_SIZE			

#define TONE_KEYS_TICK_SEND		
#define TONE_KEYS_TICK_TONE		

#define TONE_KEYS_LOOP_PERIOD		
#define TONE_KEYS_LOOP_SERIES		



#if 1	//added, 2002-04-08
//
//定义数字数据流的实际通道
//
#define TONE_PASS_ERROR		-1	//此路不通		0000 0000

#define TONE_PASS_NO_WAY		-1	

#define TONE_PASS_HFC_LINE			1	//HFC线路输出	0000 0001
#define TONE_PASS_HFC_PHONE 		2	//HFC听筒输出	0000 0010
#define TONE_PASS_HFC_LINE_A_PHONE 	4	//HFC听筒输出	0000 0100

#define TONE_PASS_ARM_PHONE 	32	//ARM听筒输出	0010 0000	
#define TONE_PASS_ARM_SPEAK 	64	//ARM喇叭输出	0100 0000	
#define TONE_PASS_ARM_BUZZER 	128	//ARM蜂鸣器输出	1000 0000
	
#define TONE_PASS_MIC_ARM 		1	//ARM听筒输出	0000 0001
#define TONE_PASS_MIC_HFC 		2	//ARM听筒输出	0000 0010
#endif

#define TONE_KEYS_BUF_DELAY_TIME		20	

#define TONE_TIME_HFC_PLAYING_YES		1		
#define TONE_TIME_HFC_PLAYING_NO		0	

#define TONE_FIFO_DTMF_YES				2	
#define TONE_FIFO_DTMF_NO				0


#define TONE_TIME_ARM_PLAYING_YES		1		
#define TONE_TIME_ARM_PLAYING_NO		0	

#define TONE_FIFO_KEYS_YES				2	
#define TONE_FIFO_KEYS_NO				0	

#define TONE_FIFO_ADDED					1
#define TONE_FIFO_NOT_NEED				2

#define DTMF_WRITE_STATE_IDLE			0
#define DTMF_WRITE_STATE_BUZY			-1

int tone_App_Pre_Msg_Keys(RtnMSG r_msg);	//预分析按键音消息
int tone_App_Pre_Msg_Dtmf(RtnMSG r_msg);	//预分析双频音消息


void tone_HISR_Timer_ARM_Delay(UNSIGNED id);		//按键延时定时器中断服务程序
void tone_HISR_Timer_HFC_Delay(UNSIGNED id);		//双频延时定时器中断服务程序	

//应用层
extern void	tone_App   (UNSIGNED argc, VOID *argv);	//音频服务.应用层服务入口
extern int tone_App_Start  (void);		//启动
extern int tone_App_Process(void);		//处理
extern int tone_App_Stop   (void);		//停止

/* BEGIN, 2002-05-14, Yancj */
/* PURPOSE: 分解tone_App_Process() 函数*/
extern int tone_App_Process_Prep(RtnMSG r_msg);		//预处理消息
extern int tone_App_Process_Core(RtnMSG r_msg);		//核心处理消息
/* END */


//数据缓存初始化	
extern int	 tone_App_Data_Init(TONE_APP_DATA_BUF_t *ToneBuf);
extern int tone_App_Data_Buf_Init	(TONE_APP_DATA_BUF_t * buffer, UINT2 num);		//主数据缓存.初始化					
extern int tone_App_Data_Buf_Deinit	(TONE_APP_DATA_BUF_t * buffer, UINT2 num);	//主数据缓存.释放

//extern int tone_App_Data_Buf_Init_HFC(TONE_APP_DATA_BUF_t * buffer, int id);	//读入HFC数据
extern int tone_App_Data_Buf_Init_ARM(TONE_APP_DATA_BUF_t * buffer, int id);	//读入ARM数据



	
extern int tone_App_Data_Buf_Sub_Init	(TONE_APP_DATA_BUF_SUB_t * buffer, UINT2 num);//子数据缓存.初始化					
extern int tone_App_Data_Buf_Sub_Deinit	(TONE_APP_DATA_BUF_SUB_t * buffer, UINT2 num);//子数据缓存.释放

//设备缓存初始化
extern int tone_App_Device_Buf_Init		(TONE_APP_DEVICE_INFO_t * Device);		//设备信息缓存.初始化
extern int tone_App_Device_Buf_Deinit	(TONE_APP_DEVICE_INFO_t * Device);		//设备信息缓存.释放	


//智能选择通路		
extern int  tone_App_Select_Pass( RtnMsg _msg );	

//extern int  tone_App_Get_Pass_Status_Line(void);				//获得线路通路状态
//extern int  tone_App_Get_Pass_Status_Phone(void);			//获得听筒通路状态
//extern int  tone_App_Get_Pass_Status_Line_A_Phone(void);	//获得线路、听筒通路状态
//extern int  tone_App_Get_Pass_Status_Speak(void);			//获得喇叭通路状态
//extern int  tone_App_Get_Pass_Status_Buzzer(void);			//获得蜂鸣器通路状态

//选择数据到相应的缓存
extern int  tone_App_Select_Data(RtnMSG _msg);							
extern int  tone_App_Get_Ctrl(TONE_APP_DEVICE_INFO_t * App_Device, RtnMSG r_msg);		
extern int  tone_App_Get_Data(TONE_APP_DEVICE_INFO_t * Device, RtnMSG r_msg);		
//extern int  tone_App_Get_Data_ARM(TONE_APP_DEVICE_INFO_t * Device, RtnMSG r_msg);		

//打开设备
extern int tone_App_Send_Data(RtnMSG _msg);	
//extern int tone_App_Send_Data_HFC(void);	
extern int tone_App_Send_Data_ARM(void);	

extern int DTMFWrite( unsigned char , int );
extern int GetHfcCodecStatus(void);

/*
extern int  tone_App_Open_Pass_HFC_Line(int Channel);		//打开HFC线路输出	
extern int  tone_App_Open_Pass_HFC_Phone(int Channel);	//打开HFC听筒输出	
extern int  tone_App_Open_Pass_ARM_Phone(void);	//打开ARM听筒输出	
extern int  tone_App_Open_Pass_ARM_Speak(void);	//打开ARM喇叭输出	
extern int  tone_App_Open_Pass_ARM_Buzzer(void);	//打开ARM蜂鸣器输出	

extern int  tone_App_Close_Pass_HFC_Line(void);		//关闭HFC线路输出	
extern int  tone_App_Close_Pass_HFC_Phone(void);	//关闭HFC听筒输出	
extern int  tone_App_Close_Pass_ARM_Phone(void);	//关闭ARM听筒输出	
extern int  tone_App_Close_Pass_ARM_Speak(void);	//关闭ARM喇叭输出	
extern int  tone_App_Close_Pass_ARM_Buzzer(void);	//关闭ARM蜂鸣器输出	

*/

//extern int tone_App_Analyze_Msg	(TONE_APP_DEVICE_INFO_t * Device, RtnMSG	r_msg);	

#ifdef __cplusplus
}
#endif

#endif /* _TONEAPP_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -