/***************************************************************************** 函 数 名 : 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_ComSend 功能描述 : 发送数据函数,提供给逻辑通道使用 输入参数 : enLogicPort:逻辑通道号 pucVirData: 数据虚拟地址 pucPHYData: 数据物理地址 pucData: 发送数据的指针 ulLen: 发送数据的长度 输出参数 : 无 返 回 值 : VOS_OK:成功,其他为失败 *****************************************************************************/ VOS_UINT32 CPM_ComSend(CPM_LOGIC_PORT_ENUM_UINT32 enLogicPort, VOS_UINT8 *pucVirData, VOS_UINT8 *pucPHYData, VOS_UINT32 ulLen) { if(CPM_OM_CFG_COMM == enLogicPort) { diag_PTR(EN_DIAG_PTR_CPM_COMSEND); } /* 参数检测 */ if (CPM_COMM_BUTT <= enLogicPort) { g_stCPMSndErrInfo.ulPortErr++; return CPM_SEND_PARA_ERR; } if ((VOS_NULL_PTR == pucVirData) || (0 == ulLen)) { g_stCPMSndErrInfo.astCPMSndErrInfo[enLogicPort].ulParaErr++; return CPM_SEND_PARA_ERR; } if (VOS_NULL_PTR == CPM_LOGIC_SEND_FUNC(enLogicPort)) { g_stCPMSndErrInfo.astCPMSndErrInfo[enLogicPort].ulNullPtr++; return CPM_SEND_FUNC_NULL; } return CPM_LOGIC_SEND_FUNC(enLogicPort)(pucVirData, pucPHYData, ulLen); }
/***************************************************************************** 函 数 名 : CPM_ComSend 功能描述 : 发送数据函数,提供给逻辑通道使用 输入参数 : enLogicPort:逻辑通道号 pucData: 发送数据的指针 ulLen: 发送数据的长度 输出参数 : 无 返 回 值 : VOS_OK:成功,其他为失败 *****************************************************************************/ VOS_UINT32 CPM_ComSend(CPM_LOGIC_PORT_ENUM_UINT32 enLogicPort, VOS_UINT8 *pucData, VOS_UINT32 ulLen) { /* 参数检测 */ if ((CPM_COMM_BUTT <= enLogicPort) || (VOS_NULL_PTR == pucData) || (0 == ulLen)) { return CPM_SEND_PARA_ERR; } if (VOS_NULL_PTR == CPM_LOGIC_SEND_FUNC(enLogicPort)) { return CPM_SEND_FUNC_NULL; } return CPM_LOGIC_SEND_FUNC(enLogicPort)(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; } /* 连接发送通道 */ 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; }