/***************************************************************************** 函 数 名 : CPM_ComRcv 功能描述 : 接收数据函数,提供给物理通道使用 输入参数 : enPhyPort: 物理通道号 pucData: 接收数据的指针 ulLen: 接收数据的长度 输出参数 : 无 返 回 值 : VOS_OK:成功,其他为失败 *****************************************************************************/ VOS_UINT32 CPM_ComRcv(CPM_PHY_PORT_ENUM_UINT32 enPhyPort, VOS_UINT8 *pucData, VOS_UINT32 ulLen) { /* 参数检测 */ if (CPM_PORT_BUTT <= enPhyPort) { g_stCPMRcvErrInfo.ulPortErr++; diag_PTR(EN_DIAG_PTR_CPM_ERR1); return VOS_ERR; } if ((VOS_NULL_PTR == pucData) || (0 == ulLen)) { g_stCPMRcvErrInfo.astCPMRcvErrInfo[enPhyPort - CPM_IND_PORT].ulParaErr++; diag_PTR(EN_DIAG_PTR_CPM_ERR2); return VOS_ERR; } if (VOS_NULL_PTR == CPM_PHY_RCV_FUNC(enPhyPort - CPM_IND_PORT)) { /*lint -e534*/ LogPrint1("\r\nCPM_ComRcv The Phy Port %d Rec Func is NULL", (VOS_INT)enPhyPort); /*lint +e534*/ g_stCPMRcvErrInfo.astCPMRcvErrInfo[enPhyPort - CPM_IND_PORT].ulNullPtr++; diag_PTR(EN_DIAG_PTR_CPM_ERR3); return VOS_ERR; } diag_PTR(EN_DIAG_PTR_CPM_COMRCV); return CPM_PHY_RCV_FUNC(enPhyPort - CPM_IND_PORT)(pucData, ulLen); }
/***************************************************************************** 函 数 名 : CPM_ComRcv 功能描述 : 接收数据函数,提供给物理通道使用 输入参数 : enPhyPort: 物理通道号 pucData: 接收数据的指针 ulLen: 接收数据的长度 输出参数 : 无 返 回 值 : VOS_OK:成功,其他为失败 *****************************************************************************/ VOS_UINT32 CPM_ComRcv(CPM_PHY_PORT_ENUM_UINT32 enPhyPort, VOS_UINT8 *pucData, VOS_UINT32 ulLen) { /* 参数检测 */ if (CPM_PORT_BUTT <= enPhyPort) { g_stCPMRcvErrInfo.ulPortErr++; return VOS_ERR; } if ((VOS_NULL_PTR == pucData) || (0 == ulLen)) { g_stCPMRcvErrInfo.astCPMRcvErrInfo[enPhyPort - CPM_IND_PORT].ulParaErr++; return VOS_ERR; } if (VOS_NULL_PTR == CPM_PHY_RCV_FUNC(enPhyPort - CPM_IND_PORT)) { LogPrint1("\r\nCPM_ComRcv The Phy Port %d Rec Func is NULL", (VOS_INT)enPhyPort); g_stCPMRcvErrInfo.astCPMRcvErrInfo[enPhyPort - CPM_IND_PORT].ulNullPtr++; return VOS_ERR; } return CPM_PHY_RCV_FUNC(enPhyPort - CPM_IND_PORT)(pucData, ulLen); }
/***************************************************************************** 函 数 名 : CPM_DisconnectPorts 功能描述 : 断开物理通道和逻辑通道连接 输入参数 : enPhyPort: 物理通道号 enLogicPort: 逻辑通道号 输出参数 : 无 返 回 值 : 无 *****************************************************************************/ VOS_VOID CPM_DisconnectPorts(CPM_PHY_PORT_ENUM_UINT32 enPhyPort, CPM_LOGIC_PORT_ENUM_UINT32 enLogicPort) { if ((CPM_PORT_BUTT <= enPhyPort) || (CPM_COMM_BUTT <= enLogicPort)) { return; } /* 假如当前逻辑通道并没有使用此物理通道,则不用处理 */ if (enPhyPort != CPM_LOGIC_PHY_PORT(enLogicPort)) { return; } if (CPM_APP_PORT > enPhyPort) { /* 向AT去注册接收函数 */ AT_RcvFuncReg(enPhyPort, VOS_NULL_PTR); } else { /* 断开接收通道 */ CPM_PHY_RCV_FUNC(enPhyPort - CPM_APP_PORT) = VOS_NULL_PTR; } /* 断开发送通道 */ CPM_LOGIC_SEND_FUNC(enLogicPort)= VOS_NULL_PTR; CPM_LOGIC_PHY_PORT(enLogicPort) = CPM_PORT_BUTT; return; }
/***************************************************************************** 函 数 名 : CPM_ConnectPorts 功能描述 : 将物理通道和逻辑通道连接上 输入参数 : enPhyPort: 物理通道号 enLogicPort: 逻辑通道号 输出参数 : 无 返 回 值 : 无 *****************************************************************************/ VOS_VOID CPM_ConnectPorts(CPM_PHY_PORT_ENUM_UINT32 enPhyPort, CPM_LOGIC_PORT_ENUM_UINT32 enLogicPort) { if ((CPM_PORT_BUTT <= enPhyPort) || (CPM_COMM_BUTT <= enLogicPort)) { return; } if (CPM_APP_PORT > enPhyPort) { /* 从AT获得发送数据的函数指针 */ CPM_LOGIC_SEND_FUNC(enLogicPort) = AT_QuerySndFunc(enPhyPort); /* 将逻辑通道的接收函数给AT模块 */ AT_RcvFuncReg(enPhyPort, CPM_LOGIC_RCV_FUNC(enLogicPort)); } else { /* 连接发送通道 */ CPM_LOGIC_SEND_FUNC(enLogicPort)= CPM_PHY_SEND_FUNC(enPhyPort - CPM_APP_PORT); /* 连接接收通道 */ CPM_PHY_RCV_FUNC(enPhyPort - CPM_APP_PORT) = CPM_LOGIC_RCV_FUNC(enLogicPort); } /* 将物理发送函数注册给逻辑通道 */ CPM_LOGIC_PHY_PORT(enLogicPort) = enPhyPort; return; }
/***************************************************************************** 函 数 名 : CPM_ComRcv 功能描述 : 接收数据函数,提供给物理通道使用 输入参数 : enPhyPort: 物理通道号 pucData: 接收数据的指针 ulLen: 接收数据的长度 输出参数 : 无 返 回 值 : VOS_OK:成功,其他为失败 *****************************************************************************/ VOS_UINT32 CPM_ComRcv(CPM_PHY_PORT_ENUM_UINT32 enPhyPort, VOS_UINT8 *pucData, VOS_UINT32 ulLen) { /* 参数检测 */ if ((CPM_PORT_BUTT <= enPhyPort) || (VOS_NULL_PTR == pucData) || (0 == ulLen)) { return VOS_ERR; } if (VOS_NULL_PTR == CPM_PHY_RCV_FUNC(enPhyPort - CPM_APP_PORT)) { LogPrint1("\r\nCPM_ComRcv The Phy Port %d Rec Func is NULL", (VOS_INT)enPhyPort); return VOS_ERR; } return CPM_PHY_RCV_FUNC(enPhyPort - CPM_APP_PORT)(pucData, ulLen); }
/***************************************************************************** 函 数 名 : CPM_ConnectPorts 功能描述 : 将物理通道和逻辑通道连接上 输入参数 : enPhyPort: 物理通道号 enLogicPort: 逻辑通道号 输出参数 : 无 返 回 值 : 无 *****************************************************************************/ VOS_VOID CPM_ConnectPorts(CPM_PHY_PORT_ENUM_UINT32 enPhyPort, CPM_LOGIC_PORT_ENUM_UINT32 enLogicPort) { if ((CPM_PORT_BUTT <= enPhyPort) || (CPM_COMM_BUTT <= enLogicPort)) { return; } /* 连接发送通道 */ CPM_LOGIC_SEND_FUNC(enLogicPort)= CPM_PHY_SEND_FUNC(enPhyPort - CPM_IND_PORT); /* 连接接收通道 */ CPM_PHY_RCV_FUNC(enPhyPort - CPM_IND_PORT) = CPM_LOGIC_RCV_FUNC(enLogicPort); /* 将物理发送函数注册给逻辑通道 */ CPM_LOGIC_PHY_PORT(enLogicPort) = enPhyPort; return; }
/***************************************************************************** 函 数 名 : CPM_DisconnectPorts 功能描述 : 断开物理通道和逻辑通道连接 输入参数 : enPhyPort: 物理通道号 enLogicPort: 逻辑通道号 输出参数 : 无 返 回 值 : 无 *****************************************************************************/ VOS_VOID CPM_DisconnectPorts(CPM_PHY_PORT_ENUM_UINT32 enPhyPort, CPM_LOGIC_PORT_ENUM_UINT32 enLogicPort) { if ((CPM_PORT_BUTT <= enPhyPort) || (CPM_COMM_BUTT <= enLogicPort)) { return; } /* 假如当前逻辑通道并没有使用此物理通道,则不用处理 */ if (enPhyPort != CPM_LOGIC_PHY_PORT(enLogicPort)) { return; } /* 断开接收通道 */ CPM_PHY_RCV_FUNC(enPhyPort - CPM_IND_PORT) = VOS_NULL_PTR; /* 断开发送通道 */ CPM_LOGIC_SEND_FUNC(enLogicPort)= VOS_NULL_PTR; CPM_LOGIC_PHY_PORT(enLogicPort) = CPM_PORT_BUTT; return; }