📄 main.c
字号:
guwUartRxLen = 0;
gptConn->PollTime = 0; // 清除空闲时间记数
} else if (gptConn->PollTime++ > 3*cTCP_MAX_POLL){ // 太长时间空闲(900秒),终止连接!
msip_Close();
}
return;
}
if (msip_NewData()){ // 收到TCP数据包,转发给RS232
if (guwEthLen > 0){
SP_UART_TX(guwEthLen, cpTcpData);
guwEthLen = 0;
}
if (guwUartRxLen > 0) { // 根据guwUartRxLen判断是否转发RS232数据
MEMCPY(guwUartRxLen, guwUartRxBuf, cpTcpData);
guwEthLen = guwUartRxLen;
guwUartRxLen = 0;
gptConn->PollTime = 0; // 清除空闲时间记数
}
gptConn->PollTime = 0; // 清除空闲时间记数
return;
}
if (msip_Connected()){
gptConn->PollTime = 0; // 清除空闲时间记数
guwEthLen = 0; // 释放TCP数据区
return;
}
// if (msip_Aborted() || msip_Closed()){ // 如果异常关闭,那就关闭当前连接
// Nothing to do!
// return;
// }
return;
#endif
#if cTCP_ADAC == 1 // ADAC 工作时:由于双向通讯,所以Listen和Active处理是一样的!
link_adac_listen:
if (msip_Acked()){ // 如果有A/D数据要发送,就转发TCP数据包
/*
if (guwMicRxLen > 0) { // 根据guwMicRxLen判断是否转发Audio数据
SP_CLOSE_FIQ(); // 关闭FIQ中断,同时也禁止了ADAC
MEMCPY(guwMicRxLen, guwMicRxBuf, cpTcpData);
guwEthLen = guwMicRxLen;
guwMicRxLen = 0; // A/D 转换计数复位
SP_OPEN_FIQ(); // 开启FIQ中断,同时也开启了ADAC
gptConn->PollTime = 0; // 清除空闲时间记数
} */
guwEthLen = 0;
return;
}
if (msip_NewData()){
/*
if (guwEthLen > 0){ // 收到Audio数据包
// 如果上次没有转换完,就等....
while(guwDAC1TxLen < guwDAC1TotalLen);
// 如果转换完,就复制buffer
SP_CLOSE_FIQ(); // 关闭FIQ中断,同时也禁止了ADAC
if (guwEthLen > cDAC1_MAXLEN){ // 拦截超长bytes部分
guwEthLen = cDAC1_MAXLEN;
}
MEMCPY(guwEthLen, cpTcpData, guwDAC1TxBuf); // 将TCP数据Audio复制给DAC1的buffer
guwDAC1TxLen = 0; // DAC1 转换计数复位
guwDAC1TotalLen = guwEthLen; // DAC1 转换buffer总长
SP_OPEN_FIQ(); // 开启FIQ中断,同时也开启了ADAC
guwEthLen = 0;
}
if (guwMicRxLen > 0) { // 根据guwMicRxLen判断是否转发Audio数据
SP_CLOSE_FIQ(); // 关闭FIQ中断,同时也禁止了ADAC
MEMCPY(guwMicRxLen, guwMicRxBuf, cpTcpData);
guwEthLen = guwMicRxLen;
guwMicRxLen = 0; // A/D 转换计数复位
SP_OPEN_FIQ(); // 开启FIQ中断,同时也开启了ADAC
} */
guwEthLen = 0;
gptConn->PollTime = 0; // 清除空闲时间记数
return;
}
if (msip_Connected()){
gptConn->PollTime = 0; // 清除空闲时间记数
guwEthLen = 0; // 释放TCP数据区
/*
guwMicRxLen = 0; // A/D 转换计数复位
guwDAC1TotalLen = 0; // DAC1 转换计数复位
SP_OPEN_FIQ(); // 开启FIQ中断,同时也开启了ADAC
*/
return;
}
if (msip_Poll()){
if (gptConn->PollTime++ > 3*cTCP_MAX_POLL){ // 太长时间空闲(900秒),终止连接!
msip_Close();
//SP_CLOSE_FIQ(); // 关闭FIQ中断,同时也禁止了ADAC
}
guwEthLen = 0;
return;
}
if (msip_Aborted() || msip_Closed()){ // 如果异常关闭,那就关闭当前连接
//SP_CLOSE_FIQ(); // 关闭FIQ中断,同时也禁止了ADAC
return;
}
link_adac_active:
if (msip_Acked()){ // 如果有A/D数据要发送,就转发TCP数据包
/*
if (guwMicRxLen > 0) { // 根据guwMicRxLen判断是否转发Audio数据
SP_CLOSE_FIQ(); // 关闭FIQ中断,同时也禁止了ADAC
MEMCPY(guwMicRxLen, guwMicRxBuf, cpTcpData);
guwEthLen = guwMicRxLen;
guwMicRxLen = 0; // A/D 转换计数复位
SP_OPEN_FIQ(); // 开启FIQ中断,同时也开启了ADAC
gptConn->PollTime = 0; // 清除空闲时间记数
} */
guwEthLen = 0;
return;
}
if (msip_NewData()){
/*
if (guwEthLen > 0){ // 收到Audio数据包
// 如果上次没有转换完,就等....
while(guwDAC1TxLen < guwDAC1TotalLen);
// 如果转换完,就复制buffer
SP_CLOSE_FIQ(); // 关闭FIQ中断,同时也禁止了ADAC
if (guwEthLen > cDAC1_MAXLEN){ // 拦截超长bytes部分
guwEthLen = cDAC1_MAXLEN;
}
MEMCPY(guwEthLen, cpTcpData, guwDAC1TxBuf); // 将TCP数据Audio复制给DAC1的buffer
guwDAC1TxLen = 0; // DAC1 转换计数复位
guwDAC1TotalLen = guwEthLen; // DAC1 转换buffer总长
SP_OPEN_FIQ(); // 开启FIQ中断,同时也开启了ADAC
guwEthLen = 0;
}
if (guwMicRxLen > 0) { // 根据guwMicRxLen判断是否转发Audio数据
SP_CLOSE_FIQ(); // 关闭FIQ中断,同时也禁止了ADAC
MEMCPY(guwMicRxLen, guwMicRxBuf, cpTcpData);
guwEthLen = guwMicRxLen;
guwMicRxLen = 0; // A/D 转换计数复位
SP_OPEN_FIQ(); // 开启FIQ中断,同时也开启了ADAC
} */
guwEthLen = 0;
gptConn->PollTime = 0; // 清除空闲时间记数
return;
}
if (msip_Connected()){
gptConn->PollTime = 0; // 清除空闲时间记数
guwEthLen = 0; // 释放TCP数据区
/*
guwMicRxLen = 0; // A/D 转换计数复位
guwDAC1TotalLen = 0; // DAC1 转换计数复位
SP_OPEN_FIQ(); // 开启FIQ中断,同时也开启了ADAC
*/
return;
}
if (msip_Poll()){
if (gptConn->PollTime++ > 3*cTCP_MAX_POLL){ // 太长时间空闲(900秒),终止连接!
msip_Close();
//SP_CLOSE_FIQ(); // 关闭FIQ中断,同时也禁止了ADAC
}
guwEthLen = 1460;
return;
}
if (msip_Aborted() || msip_Closed()){ // 如果异常关闭,那就关闭当前连接
//SP_CLOSE_FIQ(); // 关闭FIQ中断,同时也禁止了ADAC
return;
}
return;
#endif
// 以下部分用于Ping功能失效时的网络测试!TMD现在网络病毒太多,许多ISP运营商都禁Ping了!
// 不管是否传数据,都将在300秒后断开.....
test_net:
if (msip_NewData()){
// Message: 收到!别惹我,烦着呢......
cpTcpData[0] = 0xcad5;
cpTcpData[1] = 0xb5bd;
cpTcpData[2] = 0xa3a1;
cpTcpData[3] = 0xb1f0;
cpTcpData[4] = 0xc8c7;
cpTcpData[5] = 0xced2;
cpTcpData[6] = 0xb7b3;
cpTcpData[7] = 0xb7b1;
cpTcpData[8] = 0xd7c5;
cpTcpData[9] = 0xc4d8;
cpTcpData[10] = 0x2e2e;
cpTcpData[11] = 0x2e2e;
cpTcpData[12] = 0x2e2e;
guwEthLen = 26;
return;
}
if (msip_Poll()){
if (gptConn->PollTime == 0){
// Message: Welcome to you!
cpTcpData[0] = 0x5765; // "We"+
cpTcpData[1] = 0x6c63; // "lc"+
cpTcpData[2] = 0x6f6d; // "om"+
cpTcpData[3] = 0x6520; // "e "+
cpTcpData[4] = 0x746f; // "to"+
cpTcpData[5] = 0x2079; // "yo"+
cpTcpData[6] = 0x6f75; // " u"+
cpTcpData[7] = 0x2120; // "! "
guwEthLen = 16;
}
if (gptConn->PollTime++ > cTCP_MAX_POLL){ // 太长时间空闲,终止连接!
msip_Close();
}
return;
}
if (msip_Connected()){
gptConn->PollTime = 0; // 清除空闲时间记数
return;
}
// if (msip_Aborted() || msip_Closed()){ // 如果异常关闭,那就关闭当前连接
// Nothing to do!
// return;
// }
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -