VOS_VOID CBTPPM_OamUsbCbtStatusCB(ACM_EVT_E enPortState) { /* CBT端口从USB或VCOM切换到UART时接收函数指针为空,收到USB状态变更时不做断开处理 */ if (VOS_NULL_PTR == CBTCPM_GetRcvFunc()) { return; } /* CBT端口只处理GU的端口断开 */ PPM_DisconnectGUPort(OM_LOGIC_CHANNEL_CBT); return; }
VOS_INT32 CBTPPM_OamUsbCbtReadDataCB(VOS_VOID) { ACM_WR_ASYNC_INFO stInfo; CBTCPM_RCV_FUNC pFunc; if (VOS_ERROR == g_ulCbtPortUDIHandle) { LogPrint("\r\n CBTPPM_OamUsbCbtReadDataCB: Input HANDLE is err. \n"); return VOS_ERR; } VOS_MemSet(&stInfo, 0, sizeof(stInfo)); /* 获取USB的IO CTRL口的读缓存 */ if (VOS_OK != DRV_UDI_IOCTL(g_ulCbtPortUDIHandle, UDI_ACM_IOCTL_GET_READ_BUFFER_CB, &stInfo)) { LogPrint("\r\n CBTPPM_OamUsbCbtReadDataCB:Call DRV_UDI_IOCTL is Failed\n"); return VOS_ERR; } /*lint -e40*/ OM_ACPU_DEBUG_TRACE((VOS_UINT8*)stInfo.pVirAddr, stInfo.u32Size, OM_ACPU_USB_CB); /*lint +e40*/ /* 数据接收函数 */ pFunc = CBTCPM_GetRcvFunc(); if (VOS_NULL_PTR != pFunc) { if (VOS_OK != pFunc((VOS_UINT8 *)stInfo.pVirAddr, stInfo.u32Size)) { /* 增加可维可测计数 */ } } if(VOS_OK != DRV_UDI_IOCTL(g_ulCbtPortUDIHandle, UDI_ACM_IOCTL_RETUR_BUFFER_CB, &stInfo)) { LogPrint("\r\n CBTPPM_OamUsbCbtReadDataCB:Call DRV_UDI_IOCTL UDI_ACM_IOCTL_RETUR_BUFFER_CB is Failed\n"); return VOS_ERR; } return VOS_OK; }
VOS_INT CBTPPM_OamVComCbtReadData(VOS_UINT8 ucDevIndex, VOS_UINT8 *pData, VOS_UINT32 ullength) { CBTCPM_RCV_FUNC pFunc; if (ucDevIndex != APP_VCOM_DEV_INDEX_LOG) { vos_printf("\r\n CBTPPM_OamVComCbtReadData:PhyPort port is error: %d\n", ucDevIndex); return VOS_ERR; } g_stVComDebugInfo[OM_LOGIC_CHANNEL_CBT ].ulVCOMRcvNum++; g_stVComDebugInfo[OM_LOGIC_CHANNEL_CBT ].ulVCOMRcvLen += ullength; if ((VOS_NULL_PTR == pData) || (0 == ullength)) { vos_printf("\r\n CBTPPM_OamVComCbtReadData:Send data is NULL\n"); return VOS_ERR; } /*lint -e40*/ OM_ACPU_DEBUG_TRACE((VOS_UINT8*)pData, ullength, OM_ACPU_VCOM_CB); /*lint +e40*/ pFunc = CBTCPM_GetRcvFunc(); /* 数据接收函数 */ if (VOS_NULL_PTR == pFunc) { return VOS_ERR; } if (VOS_OK != pFunc((VOS_UINT8*)pData, ullength)) { g_stVComDebugInfo[OM_LOGIC_CHANNEL_CBT ].ulVCOMRcvErrNum++; g_stVComDebugInfo[OM_LOGIC_CHANNEL_CBT ].ulVCOMRcvErrLen += ullength; vos_printf("\r\n Info: CBTPPM_OamVComCbtReadData:Call CBT Data Rcv Func fail\n"); return VOS_ERR; } return VOS_OK; }
VOS_VOID CBTPPM_OamUsbCbtPortClose(VOS_VOID) { if (VOS_ERROR == g_ulCbtPortUDIHandle) { return; } DRV_UDI_CLOSE(g_ulCbtPortUDIHandle); g_ulCbtPortUDIHandle = VOS_ERROR; /* CBT端口从USB或VCOM切换到UART时接收函数指针为空,收到USB状态变更时不做断开处理 */ if (VOS_NULL_PTR == CBTCPM_GetRcvFunc()) { return; } PPM_DisconnectGUPort(OM_LOGIC_CHANNEL_CBT); return; }
VOS_VOID uttest_CBTCPM_GetRcvFunc_case1(VOS_VOID) { CBTCPM_GetRcvFunc(); }