?? 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 + -