📄 toneapp.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 + -