VOS_UINT32 CBTPPM_OamUsbCbtPortInit(VOS_VOID) { /* CBT端口与PCVOICE复用,动态注册数据接收函数 */ CBTCPM_PortRcvReg(CBTSCM_SoftDecodeDataRcv); /* 动态注册数据发送函数 */ CBTCPM_PortSndReg(CBTPPM_OamUsbCbtSendData); /* USB承载的CBT端口,调用底软的异步接口发送数据,现在需要伪造成同步接口,申请信号量 */ if(VOS_OK != VOS_SmCCreate("UCBT", 0, VOS_SEMA4_FIFO, &g_ulCbtUsbPseudoSyncSemId)) { LogPrint("\r\n CBTPPM_OamUsbCbtPortInit: create g_ulCbtUsbPseudoSyncSemId failedd\r\n"); return VOS_ERR; } /* USB承载的CBT端口初始化UDI设备句柄 */ g_ulCbtPortUDIHandle = VOS_ERROR; /* CBT端口通过CBT的CPM管理,不注册物理发送函数 */ DRV_USB_REGUDI_ENABLECB((USB_UDI_ENABLE_CB_T)CBTPPM_OamUsbCbtPortOpen); DRV_USB_REGUDI_DISABLECB((USB_UDI_DISABLE_CB_T)CBTPPM_OamUsbCbtPortClose); return VOS_OK; }
VOS_VOID CBTPPM_OamVComCbtPortInit(VOS_VOID) { /* CBT端口与PCVOICE复用,动态注册数据接收函数 */ CBTCPM_PortRcvReg(CBTSCM_SoftDecodeDataRcv); /* 校准走VCOM28,会有数据下发,数据的回复不走CPM,直接发送 */ APP_VCOM_RegDataCallback(APP_VCOM_DEV_INDEX_LOG, CBTPPM_OamVComCbtReadData); CBTCPM_PortSndReg(CBTPPM_OamVComCbtSendData); return; }
VOS_UINT32 CBTCPM_NotifyChangePort(AT_PHY_PORT_ENUM_UINT32 enPhyPort) { /* NAS走UART口做校准 */ if (CPM_IND_PORT > enPhyPort) { /* 从AT获得发送数据的函数指针 */ CBTCPM_PortSndReg(AT_QuerySndFunc(enPhyPort)); /* 用AT的端口做校准,不从USB或VCOM上收数据 */ CBTCPM_PortRcvReg(VOS_NULL_PTR); /* 将校准通道的接收函数给AT模块 */ AT_RcvFuncReg(enPhyPort, CBTSCM_SoftDecodeDataRcv); return VOS_OK; } return VOS_ERR; }
VOS_VOID uttest_CBTCPM_PortSndReg_case1(VOS_VOID) { CBTCPM_SEND_FUNC pSndFunc; CBTCPM_PortSndReg(pSndFunc); }