📄 dtmf.c
字号:
/*************************************************************
* (C) COPYRIGHT TEXAS INSTRUMENTS, INC. 1996 *
**************************************************************
* Program Name: DTMF tone decoder *
* File Name: dtmf.c *
* File Description: file for DTMF C-functions *
* *
* Author: Gunter Schmer *
* Date: 03/24/97 *
* Revision: 3.0 *
* Latest working date: 03/24/97 *
*************************************************************/
#include "dtmf.h"
void dtmfEncode(DTMFENCOBJ *chxEncObjPtr)
{
int n;
int *data, *phnbr;
int encStatus, toneTime, pauseTime;
data = chxEncObjPtr->data;
phnbr = chxEncObjPtr->phnbr;
encStatus = chxEncObjPtr->encStatus;
toneTime = chxEncObjPtr->toneTime;
pauseTime = chxEncObjPtr->pauseTime;
/* encStatus = 0 : encoder is in idle state and outputs zero-frames */
if(encStatus==0) {
for(n=0;n<102;n++)
data[n]=0;
}
/* encStatus = 1 : encoder is busy and outputs tones and pauses */
if(encStatus==1) {
if(toneTime>0) {
dtmftone(chxEncObjPtr,*(chxEncObjPtr->phnbr));
toneTime = toneTime-1;
}
else if((toneTime==0)&&(pauseTime>0)) {
for(n=0;n<102;n++)
data[n]=0;
pauseTime = pauseTime-1;
}
else if((toneTime==0)&&(pauseTime==0)) {
toneTime = chxEncObjPtr->toneDura;
pauseTime = chxEncObjPtr->pauseDura;
phnbr++;
if((*phnbr)==-1)
encStatus = 0;
}
}
chxEncObjPtr->phnbr = phnbr;
chxEncObjPtr->encStatus = encStatus;
chxEncObjPtr->toneTime = toneTime;
chxEncObjPtr->pauseTime = pauseTime;
}
void dtmfDecode(DTMFDECOBJ *chxDecObjPtr)
{
/* perform gain control */
gaincntrl(chxDecObjPtr);
/* perform goertzel */
goertzel(chxDecObjPtr);
/* perform dtmf digit validation */
dtmfchecks(chxDecObjPtr);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -