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

📄 dtmf.c

📁 运行环境:CCS2.1
💻 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 + -