📄 m803xxint.c
字号:
if(PortPtr->rx_cmd_fifo[0] == 0)
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("Port %d Voice Channel Disable Ok!\n", PortNo);
PortPtr->Active = LFXS_DOWN;
PortPtr->VAD = PortPtr->ExpectServiceType;
PortPtr->OldActiveStatus = LFXS_DOWN;
PortPtr->OldServiceType = PortPtr->ExpectServiceType;
if(PortPtr->status == WaitIdleStatus)
PortPtr->status = IdleStatus;
if(PortPtr->status == CIDWaitIdleStatus)
PortPtr->status = CIDIdleStatus;
PortPtr->callingFialedCnt = 0;
#ifdef DEBUG
totalDown ++;
DownCount2 ++;
#endif
/*Added by ZhengQishan, 有时由于M80320的API接口不能正确返回命令执行状态,
造成软件状态不能切换,所以呼叫结束时先将状态恢复到缺省值
setPortDefaultArg(PortNo);
InitOpenChanQueue(PortNo);*/
ChannelOperateCount[PortNo].SelfDisablechannelSucceedCount++;
ChannelWorkStatus[PortNo] = LFXS_DOWN;
}
else
{
VoIP_CALL_PRINTF("Port %d Voice Channel Disable Failure, %d!\n",
PortNo, PortPtr->rx_cmd_fifo[0]);
#if M803xx_DEBUG
ClosechannelFail ++;
#endif
ChannelOperateCount[PortNo].SelfDisablechannelFailureCount++;
PortPtr->Active = PortPtr->OldActiveStatus;
PortPtr->VAD = PortPtr->OldServiceType;
ChannelWorkStatus[PortNo] = LFXS_DOWN;
}
}
#if 1 /*Added by ZhengQishan */
else if( (PortPtr->OldActiveStatus == LFXS_UP)&& (PortPtr->ExpectActiveStatus == LFXS_UP))
{
if(M80320_Debug[PortNo] == 1)
M80320_PRINTF("up to up! FIFO Value = 0x%x\n", PortPtr->rx_cmd_fifo[0]);
if(PortPtr->rx_cmd_fifo[0] == 0)
{
if(M803xx_Open_Channel_Flag[PortNo] == 1)
{
PortPtr->status = TalkStatus;
if(M803xx_Stop_PciReq[PortNo] == 1)
{
M803xx_Stop_PciReq[PortNo] = 0;
rxBufAddrH = ((UINT32)((UINT8 *)PciReadBuf[m_port[PortNo].Channel]+PACKET_START_SIZE)) >> 16;
rxBufAddrL = ((UINT32)((UINT8 *)PciReadBuf[m_port[PortNo].Channel]+PACKET_START_SIZE)) & 0x0000ffff;
QueueTxBoxMsg(CMD_PCIREQ, 0x400, rxBufAddrH, rxBufAddrL, PortNo);
}
}
PortPtr->Active = LFXS_UP;
PortPtr->OldActiveStatus = LFXS_UP;
/*2006-3-22 11:06 modified by ZhengQishan*/
PortPtr->VAD = PortPtr->ExpectServiceType;
PortPtr->OldServiceType = PortPtr->ExpectServiceType;
ChannelWorkStatus[PortNo] = LFXS_UP;
}
else
{
if(M80320_Debug[PortNo] == 1)
M80320_PRINTF("Port %d switch from Voice Channel to fax channel Failure, %d!\n",
PortNo, PortPtr->rx_cmd_fifo[0]);
PortPtr->Active = PortPtr->OldActiveStatus;
PortPtr->VAD = PortPtr->OldServiceType;
ChannelWorkStatus[PortNo] = LFXS_UP;
}
}
#else
else if( (PortPtr->OldActiveStatus == LFXS_UP)
&& (PortPtr->ExpectActiveStatus == LFXS_UP)
&& (PortPtr->OldServiceType == Voice)
&& (PortPtr->ExpectServiceType == Fax) )
{
if(PortPtr->rx_cmd_fifo[0] == 0)
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("Port %d Switch From Voice Channel To Fax Channel Ok!\n", PortNo);
PortPtr->Active = LFXS_UP;
PortPtr->VAD = Fax;
PortPtr->OldActiveStatus = LFXS_UP;
PortPtr->OldServiceType = Fax;
ChannelWorkStatus[PortNo] = LFXS_UP;
#ifdef DEBUG
totalUp ++;
UpCount2 ++;
#endif
}
else
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("Port %d switch from Voice Channel to fax channel Failure, %d!\n",
PortNo, PortPtr->rx_cmd_fifo[0]);
PortPtr->Active = PortPtr->OldActiveStatus;
PortPtr->VAD = PortPtr->OldServiceType;
ChannelWorkStatus[PortNo] = LFXS_UP;
}
}
else if( (PortPtr->OldActiveStatus == LFXS_UP)
&& (PortPtr->ExpectActiveStatus == LFXS_UP)
&& (PortPtr->OldServiceType == Fax)
&& (PortPtr->ExpectServiceType == Voice) )
{
if(PortPtr->rx_cmd_fifo[0] == 0)
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("Port %d Switch From Fax Channel To Voice Channel Ok!\n", PortNo);
PortPtr->Active = LFXS_UP;
PortPtr->VAD = Voice;
PortPtr->OldActiveStatus = LFXS_UP;
PortPtr->OldServiceType = Voice;
ChannelWorkStatus[PortNo] = LFXS_UP;
#ifdef DEBUG
totalUp ++;
UpCount3 ++;
#endif
}
else
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("Port %d switch from fax channel to Voice Channel Failure, %d!\n",
PortNo, PortPtr->rx_cmd_fifo[0]);
PortPtr->Active = PortPtr->OldActiveStatus;
PortPtr->VAD = PortPtr->OldServiceType;
ChannelWorkStatus[PortNo] = LFXS_UP;
}
}
#endif
else
{
PortPtr->Active = LFXS_DOWN;
PortPtr->VAD = Voice;
PortPtr->OldActiveStatus = LFXS_DOWN;
PortPtr->OldServiceType = Voice;
#ifdef DEBUG
totalDown ++;
DownCount2 ++;
#endif
ChannelOperateCount[PortNo].SelfDisablechannelSucceedCount++;
ChannelWorkStatus[PortNo] = LFXS_DOWN;
}
semGive(M803xxQueueSem[PortNo/8]);
#endif
break;
case FUN_ECHOCAN:
Command_Ack[PortNo] = 1;
if(PortPtr->rx_cmd_fifo[0] == 0)
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("Port(%d) ECHOCAN OK\n", PortNo);
}
else
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("*****************Port %d Echo Cancel Set Failure, %d!\n",
PortNo, PortPtr->rx_cmd_fifo[0]);
}
break;
case FUN_DTMFOPT:
Command_Ack[PortNo] = 1;
if(PortPtr->rx_cmd_fifo[0] == 0)
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("Port(%d) DTMFOPT OK\n", PortNo);
}
else
{
if(M80320_Debug[PortNo] == 1) M80320_PRINTF("*****************Port %d DTMF Set Failure, %d!\n",
PortNo, PortPtr->rx_cmd_fifo[0]);
}
break;
case FUN_FAXOPT:
Command_Ack[PortNo] = 1;
if(PortPtr->rx_cmd_fifo[0] == 0)
{
}
else
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("**************Port %d FAX Set Failure, %d!\n",
PortNo, PortPtr->rx_cmd_fifo[0]);
}
break;
case FUN_RPPH:
Command_Ack[PortNo] = 1;
if(PortPtr->rx_cmd_fifo[0] == 0)
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("Port(%d) RPPH OK\n", PortNo);
}
else
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("******************Port %d FUN_RPPH Set Failure, %d!\n",
PortNo, PortPtr->rx_cmd_fifo[0]);
}
break;
case FUN_VINFOTMR:
Command_Ack[PortNo] = 1;
if(PortPtr->rx_cmd_fifo[0] == 0)
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("Port(%d) VINFOTMR OK\n", PortNo);
}
else
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("****************Port %d FUN_VINFOTMR timer Set Failure, %d!\n",
PortNo, PortPtr->rx_cmd_fifo[0]);
}
break;
case FUN_DGAIN:
Command_Ack[PortNo] = 1;
if(PortPtr->rx_cmd_fifo[0] == 0)
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("Port(%d) DGAIN OK\n", PortNo);
}
else
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("***************Port %d DGAIN Set Failure, %d!\n",
PortNo, PortPtr->rx_cmd_fifo[0]);
}
break;
case FUN_FINFOTMR:
Command_Ack[PortNo] = 1;
if(PortPtr->rx_cmd_fifo[0] == 0)
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("Port(%d) FINFORMR OK\n", PortNo);
}
else
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("*****************Port %d FUN_FINFOTMR timer Set Failure, %d!\n",
PortNo, PortPtr->rx_cmd_fifo[0]);
}
break;
case FUN_PTSET:
Command_Ack[PortNo] = 1;
if(PortPtr->rx_cmd_fifo[0] == 0)
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("Port(%d) PTSET OK\n", PortNo);
}
else
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("*****************Port %d PTSET Failure, %d!\n",
PortNo, PortPtr->rx_cmd_fifo[0]);
}
break;
case FUN_PTMNG:
Command_Ack[PortNo] = 1;
if(PortPtr->rx_cmd_fifo[0] == 0)
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("Port(%d) PTMNG OK\n", PortNo);
}
else
{
printf("Port %d PTMNG Failure, %d!\n",
PortNo, PortPtr->rx_cmd_fifo[0]);
}
break;
case FUN_DTMFDPAR:
Command_Ack[PortNo] = 1;
if(PortPtr->rx_cmd_fifo[0] == 0)
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("Port(%d) DTMFDPAR OK\n", PortNo);
}
else
{
if(M80320_Debug[PortNo] == 1)M80320_PRINTF("*****************Port %d DTMFDPAR Failure, %d!\n",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -