📄 toneapp.~c
字号:
***********************************************************************/
#if 0
int tone_App_Data_Buf_Init(TONE_APP_DATA_BUF_t *ToneBuf, UINT2 num)
{
int i;
STATUS status;
//
//初始化控制表中的语音数据空间
//
for (i=TONE_ID_KEYS; i<=TONE_ID_DTMF; i++)
{
//
//初始化HFC基本缓存
//
status = tone_App_Data_Buf_Init_HFC(ToneBuf, i);
if(status!=NU_SUCCESS)
{
PRINTINFO("tone_App_Data_Buf_Init_HFC failed.");
return -1;
}
//
//初始化ARM基本缓存
//
status = tone_App_Data_Buf_Init_ARM(ToneBuf, i);
if(status!=NU_SUCCESS)
{
PRINTINFO("tone_App_Data_Buf_Init_ARM failed.");
return -1;
}
}
//
//初始化非控制表中的语音数据空间
//
//
//ToneBuf[TONE_ID_BUSY].pBuf_HFC = ToneBuf[TONE_ID_DIAL].pBuf_HFC;
ToneBuf[TONE_ID_BUSY].pBuf_ARM = ToneBuf[TONE_ID_DIAL].pBuf_ARM;//忙音数据就是拨号音数据
return NU_SUCCESS;
}
#endif
/**********************************************************************
*
* FUNCTION "tone_App_Data_Buf_Deinit" 数据缓存.释放
*
***********************************************************************/
int tone_App_Data_Buf_Deinit(TONE_APP_DATA_BUF_t *ToneBuf, UINT2 num)
{
int i;
//
//释放控制表中的语音数据空间
//
for (i=TONE_ID_KEYS; i<TONE_ID_DIAL ; i++)
{
NU_free(ToneBuf[i].pBuf_HFC);
NU_free(ToneBuf[i].pBuf_ARM);
}
return NU_SUCCESS;
}
#if 0
/**********************************************************************
*
* FUNCTION "tone_App_Data_Buf_Init_HFC"
*
***********************************************************************/
extern int tone_App_Data_Buf_Init_HFC(TONE_APP_DATA_BUF_t * ToneBuf, int id) //读入HFC数据
{
int fd;
STATUS status;
//
//跳过无需分配的控制空间
//
if (strcmp(ToneBuf[id].pFilename_HFC, "")==0)
{
return NU_SUCCESS; //
}
//
//打开磁盘存储空间
//
fd = NU_Open((char *)ToneBuf[id].pFilename_HFC,(PO_BINARY|PO_RDONLY), PS_IREAD);
if (fd<0)
{//文件无法打开
PRINTERRR("tone_App_Data_Buf_Init_HFC: NU_Open: %s", ToneBuf[id].pFilename_HFC);
//
//如果进入这一分支,则程序与数据不匹配,关闭磁盘存储空间
//
NU_Close(fd);
return -1;
}
//
//分配内存空间
//
ToneBuf[id].pBuf_HFC = (UINT1 *)NU_malloc(ToneBuf[id].iBuf);
if (ToneBuf[id].pBuf_HFC==0)
{
PRINTERRR("tone_App_Data_Buf_Init_HFC: NU_malloc: %s, len: %d", ToneBuf[id].pFilename_HFC, ToneBuf[id].iBuf);
return -1;
}
//
//读入磁盘数据到内存空间
//
status = NU_Read(fd, (char *)ToneBuf[id].pBuf_HFC, ToneBuf[id].iBuf);
if (status<NU_SUCCESS)
{
PRINTERRR("tone_App_Data_Buf_Init_HFC: NU_Read: file:%s, len:%d, rtn: %d", ToneBuf[id].pFilename_HFC, ToneBuf[id].iBuf, status);
return -1;
}
//
//关闭磁盘存储空间
//
NU_Close(fd);
return NU_SUCCESS;
}
/**********************************************************************
*
* FUNCTION "tone_App_Data_Buf_Init_ARM"
*
***********************************************************************/
extern int tone_App_Data_Buf_Init_ARM(TONE_APP_DATA_BUF_t * ToneBuf, int id) //读入ARM数据
{
int fd;
STATUS status;
//
//跳过无需分配的控制空间
//
if (strcmp(ToneBuf[id].pFilename_ARM, "")==0)
{
return NU_SUCCESS; //
}
//
//打开磁盘存储空间
//
fd = NU_Open((char *)ToneBuf[id].pFilename_ARM,(PO_BINARY|PO_RDONLY), PS_IREAD);
if (fd<0)
{//文件无法打开
PRINTERRR("tone_App_Data_Buf_Init_ARM: NU_Open: %s", ToneBuf[id].pFilename_ARM);
NU_Close(fd);
return -1;
}
//
//分配内存空间
//
ToneBuf[id].pBuf_ARM = (UINT1 *)NU_malloc(ToneBuf[id].iBuf);
if (ToneBuf[id].pBuf_ARM==0)
{//未分配到内存
PRINTERRR("tone_App_Data_Buf_Init_HFC: NU_malloc: %s, len: %d", ToneBuf[id].pFilename_ARM, ToneBuf[id].iBuf);
return -1;
}
//
//读入磁盘数据到内存空间
//
status = NU_Read(fd, (char *)ToneBuf[id].pBuf_ARM, ToneBuf[id].iBuf);
if (status<NU_SUCCESS)
{
PRINTERRR("tone_App_Data_Buf_Init_ARM: NU_Read: %s", ToneBuf[id].pFilename_ARM);
return -1;
}
//
//关闭磁盘存储空间
//
NU_Close(fd);
return NU_SUCCESS;
}
#endif
/**********************************************************************
*
* FUNCTION "tone_Device_Buf_Initialize" FIFO缓存.初始化
*
***********************************************************************/
int tone_App_Device_Buf_Init(TONE_APP_DEVICE_INFO_t * buffer)
{
//STATUS status;
//PRINTFLOW("Begin: tone_App_Device_Buf_Init");
//
//分配设备缓存空间
//
buffer->iBuf = TONE_BUFFER; //最大的需要处理长度
buffer->pBuf = (UINT1 *) NU_malloc(buffer->iBuf);
memset(buffer->pBuf, 0, buffer->iBuf);
buffer->iBuf = 0;
if (buffer->pBuf == 0)
{
PRINTERRR("NU_malloc.");
LogError("Error %s L %d\n",__FILE__,__LINE__);
return -1;
}
//PRINTFLOW("Enddd: tone_App_Device_Buf_Init");
return NU_SUCCESS;
}
/**********************************************************************
*
* FUNCTION "tone_App_Device_Buf_Deinit" FIFO缓存.释放
*
***********************************************************************/
int tone_App_Device_Buf_Deinit(TONE_APP_DEVICE_INFO_t * buffer)
{
//PRINTFLOW("Begin: tone_App_Device_Buf_Deinit");
//
//释放设备缓存空间
//
NU_free(buffer->pBuf);
//PRINTFLOW("Enddd: tone_App_Device_Buf_Deinit");
return NU_SUCCESS;
}
/**********************************************************************
*
* FUNCTION "tone_App_Process_Ctrl" 控制消息处理
*
***********************************************************************/
int tone_App_Process_Ctrl (RtnMSG r_msg)
{
switch(r_msg.msg_data[0])
{
case PHONE_CTRL_OFF: //HFC2GCI HFC2ST ST2HFC
PhDr_Iocntl(0, CNTLID_CONNECT_B1_HFC2GCI, 0);
PhDr_Iocntl(0, CNTLID_CONNECT_B1_HFC2ST, 0);
//PhDr_Iocntl(0, CNTLID_CONNECT_B1_ST2HFC, 0);
break;
case PHONE_CTRL_ON: //ST2GCI GCI2ST GCI2HFC
PhDr_Iocntl(0, CNTLID_CONNECT_B1_ST2GCI, 0);
PhDr_Iocntl(0, CNTLID_CONNECT_B1_GCI2ST, 0);
//PhDr_Iocntl(0, CNTLID_CONNECT_B1_GCI2HFC, 0);
break;
default:
PRINTERRR("err MSG_TONE_ISDN_UIMM msg_data[0]");
LogError("Error %s L %d\n",__FILE__,__LINE__);
break;
}
return 0;
}
/**********************************************************************
*
* FUNCTION "tone_App_Select_Way" 智能选择通路
*
***********************************************************************/
//int tone_App_Select_Pass(int orient )
int tone_App_Select_Pass( RtnMsg _msg )
{
int pass = 0;
int status;
PRINTFLOW("tone_App_Select_Pass");
if( _msg.msg_code == MSG_TONE_DTMF_UIMM )
{
return 0;
}
status = GetARMCodecStatus(CodecWrite);
if (status==TRUE)
{
PRINTINFO("pass = TONE_PASS_ARM_PHONE");
pass = TONE_PASS_ARM_PHONE;
}
else
{
PRINTINFO("pass = TONE_PASS_ERROR");
pass = TONE_PASS_ERROR;
}
return pass;
}
int tone_App_Select_Data(RtnMSG _msg)
{
STATUS status;
PRINTFLOW("tone_App_Select_Data ARM");
//控制信息
status = tone_App_Get_Ctrl(&gTONE_App_Device_Info_ARM, _msg);
//数据信息
status = tone_App_Get_Data(&gTONE_App_Device_Info_ARM, _msg);
return status;
}
/**********************************************************************
*
* FUNCTION "tone_App_Get_Ctrl"
*
***********************************************************************/
int tone_App_Get_Ctrl(TONE_APP_DEVICE_INFO_t * App_Device, RtnMSG r_msg)
{
int id;
//STATUS status;
App_Device->idTone = r_msg.msg_code - MSG_TONE; //消息
App_Device->idOrient = r_msg.msg_data[0];
id = App_Device->idTone;
App_Device->idChannel= r_msg.msg_data[2];
App_Device->idMode = TONE_MODE_ID_WRITE;
App_Device->iBuf = gTONE_Data_Buf_Main[id].iBuf; //缓存
App_Device->iLoop_Period = gTONE_Data_Buf_Main[id].iLoop_Period;
App_Device->iLoop_Series = gTONE_Data_Buf_Main[id].iLoop_Series;
App_Device->iPeriod_Send = gTONE_Data_Buf_Main[id].iPeriod_Send;
App_Device->iPeriod_Tone = gTONE_Data_Buf_Main[id].iPeriod_Tone;
return NU_SUCCESS;
}
/**********************************************************************
*
* FUNCTION "tone_App_Get_Data"
*
***********************************************************************/
int tone_App_Get_Data(TONE_APP_DEVICE_INFO_t * App_Device, RtnMSG r_msg)
{
int idNumber;
int id;
STATUS status;
id = App_Device->idTone;
switch (id) //缓存内容
{
//case TONE_ID_KEYS:
case TONE_ID_DTMF:
status = NU_SUCCESS;
break;
case TONE_ID_KEYS:
//case TONE_ID_DTMF:
idNumber = Key_to_i(r_msg.msg_data[1]);
if(idNumber <0)
{
PRINTERRR("err Number");
LogError("Error %s L %d\n",__FILE__,__LINE__);
return -1;
}
/* BEGIN, 2002-05-15, Yancj */
/* PURPOSE: */
App_Device->iBuf = gTONE_Data_Buf_Main[id].iPeriod_Send * TONE_MS_PER_TICK *TONE_BYTES_PER_MS;
memcpy(App_Device->pBuf,
gTONE_Data_Buf_Main[id].pBuf_ARM + idNumber * App_Device->iBuf,
App_Device->iBuf);
/* END */
status = NU_SUCCESS;
break;
case TONE_ID_DIAL:
if (r_msg.msg_data[1]>0) //定制小周期循环次数
{
App_Device->iLoop_Series = r_msg.msg_data[1];
}
memcpy( App_Device->pBuf, gTONE_Data_Buf_Main[id].pBuf_ARM, App_Device->iBuf );
status = NU_SUCCESS;
break;
case TONE_ID_RING:
case TONE_ID_REMV:
case TONE_ID_CHGE:
case TONE_ID_PUBL:
case TONE_ID_BUSY:
/* BEGIN, 2002-05-27, YanCJ */
/* PURPOSE: 呼台提示音数据写入设备缓存中*/
case TONE_ID_CALL:
/* END */
if (r_msg.msg_data[1]>0) //定制大周期循环次数
{
App_Device->iLoop_Period = r_msg.msg_data[1];
}
memcpy(App_Device->pBuf, gTONE_Data_Buf_Main[id].pBuf_ARM, App_Device->iBuf);
status = NU_SUCCESS;
break;
default:
PRINTERRR("tone_App_Get_Data switch");
LogError("Error %s L %d\n",__FILE__,__LINE__);
status = -1;
break;
}
return status;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -