VOS_VOID GU_OamHsicPortInit(VOS_VOID)
{
    /* 产品不支持HSIC特性,直接返回 */
    if (BSP_MODULE_SUPPORT != DRV_GET_HSIC_SUPPORT())
    {
        return;
    }

    /* 如果HSIC通道已经枚举成功,则由协议栈执行初始化操作;否则将初始化函数注册至底软,
        由底软在HSIC枚举成功后调用以进行初始化*/
    if (VOS_TRUE == DRV_GET_HSIC_ENUM_STATUS())
    {
        GU_OamHsicPortOpen();
    }
    else
    {
        DRV_HSIC_REGUDI_ENABLECB((HSIC_UDI_ENABLE_CB_T)GU_OamHsicPortOpen);
    }

    DRV_HSIC_REGUDI_DISABLECB((HSIC_UDI_DISABLE_CB_T)GU_OamHsicPortClose);

    CPM_PhySendReg(CPM_HSIC_PORT,  GU_OamHsicSendData);

    return;
}
/*****************************************************************************
 函 数 名  : PPM_UsbIndPortInit
 功能描述  : 用于USB 上OM主动上报端口通道的初始化
 输入参数  : 无
 输出参数  : 无
 返 回 值  : VOS_ERR -- 初始化失败
             VOS_OK  -- 初始化成功
 修改历史  :
  1.日    期   : 2014年5月25日
    作    者   : L00256032
    修改内容   : V8R1 OM_Optimize项目新增
*****************************************************************************/
VOS_UINT32 PPM_UsbIndPortInit(VOS_VOID)
{
    /* USB承载的OM IND端口,调用底软的异步接口发送数据,现在需要伪造成同步接口,申请信号量 */
    if(VOS_OK != VOS_SmCCreate("UIND", 0, VOS_SEMA4_FIFO, &g_stUsbIndPseudoSync.ulPseudoSyncSemId))
    {
        vos_printf("\r\nPPM_UsbIndPortInit: create g_stUsbIndPseudoSync.ulPseudoSyncSemId failedd\r\n");

        g_stPpmDebugInfo.ulUsbIndSemErr++;

        return VOS_ERR;
    }

    mdrv_usb_reg_enablecb((USB_UDI_ENABLE_CB_T)PPM_UsbIndPortOpen);

    vos_printf("\r\nPPM_UsbIndPortInit mdrv_usb_reg_enablecb: reg %p", PPM_UsbIndPortOpen);

    g_stPpmDebugInfo.ulUsbIndRegOpen++;

    mdrv_usb_reg_disablecb((USB_UDI_DISABLE_CB_T)PPM_UsbIndPortClose);

    vos_printf("\r\nPPM_UsbIndPortInit mdrv_usb_reg_disablecb: reg %p", PPM_UsbIndPortClose);

    g_stPpmDebugInfo.ulUsbIndRegClose++;

    CPM_PhySendReg(CPM_IND_PORT,  PPM_UsbIndSendData);

    return VOS_OK;
}
VOS_UINT32 PPM_SockPortInit(VOS_VOID)
{
#if (VOS_OS_VER != VOS_WIN32)
    if ((BSP_MODULE_SUPPORT == mdrv_misc_support_check(BSP_MODULE_TYPE_WIFI))
        && (VOS_TRUE == PPM_SockIsEnable()))
    {
        /*CPM_PhySendReg(CPM_WIFI_OM_IND_PORT,    (CPM_SEND_FUNC)PPM_SockOMIndComSend);*/
        CPM_PhySendReg(CPM_WIFI_OM_IND_PORT,    (CPM_SEND_FUNC)PPM_SockOMCfgComSend);
        CPM_PhySendReg(CPM_WIFI_OM_CFG_PORT,    (CPM_SEND_FUNC)PPM_SockOMCfgComSend);
        CPM_PhySendReg(CPM_WIFI_AT_PORT,        (CPM_SEND_FUNC)PPM_SockATComSend);
    }
#endif

    VOS_SpinLockInit(&g_stSockTaskSpinLock);

    return VOS_OK;
}
VOS_VOID GU_OamAppPortInit(VOS_VOID)
{
    DRV_USB_REGUDI_ENABLECB((USB_UDI_ENABLE_CB_T)GU_OamAppPortOpen);

    DRV_USB_REGUDI_DISABLECB((USB_UDI_DISABLE_CB_T)GU_OamAppPortClose);

    CPM_PhySendReg(CPM_APP_PORT,  GU_OamAppSendData);

    return;
}
VOS_VOID GU_OamCtrlPortInit(VOS_VOID)
{
    DRV_USB_REGUDI_ENABLECB((USB_UDI_ENABLE_CB_T)GU_OamCtrlPortOpen);

    DRV_USB_REGUDI_DISABLECB((USB_UDI_DISABLE_CB_T)GU_OamCtrlPortClose);

    GU_OamCtrlPortOpen();   /*当前切换的时候USB一定是连接的*/

    CPM_PhySendReg(CPM_CTRL_PORT,  GU_OamCtrlSendData);

    g_GUOmOnCtrlPort = VOS_TRUE;

    return;
}
VOS_UINT32 PPM_UsbIndPortInit(VOS_VOID)
{
    /* USB承载的OM IND端口,调用底软的异步接口发送数据,现在需要伪造成同步接口,申请信号量 */
    if(VOS_OK != VOS_SmCCreate("UIND", 0, VOS_SEMA4_FIFO, &g_stUsbIndPseudoSync.ulPseudoSyncSemId))
    {
        LogPrint("\r\nPPM_UsbIndPortInit: create g_stUsbIndPseudoSync.ulPseudoSyncSemId failedd\r\n");

        return VOS_ERR;
    }

    DRV_USB_REGUDI_ENABLECB((USB_UDI_ENABLE_CB_T)PPM_UsbIndPortOpen);

    DRV_USB_REGUDI_DISABLECB((USB_UDI_DISABLE_CB_T)PPM_UsbIndPortClose);

    CPM_PhySendReg(CPM_IND_PORT,  PPM_UsbIndSendData);

    return VOS_OK;
}
VOS_VOID GU_OamVComPortInit(VOS_VOID)
{
    VOS_MemSet(&g_stVComDebugInfo, 0, sizeof(g_stVComDebugInfo));

#if (VOS_LINUX == VOS_OS_VER)
    sema_init(&g_stVCOMRxBuffSem, 1);
#endif

    APP_VCOM_RegDataCallback(APP_VCOM_DEV_INDEX_LOG, GU_OamVComReadData);

    APP_VCOM_RegEvtCallback(APP_VCOM_DEV_INDEX_LOG, GU_OamVComStatus);

    CPM_PhySendReg(CPM_VCOM_PORT, GU_OamVComSendData);

#if (FEATURE_ON == FEATURE_CBT_LOG)
    APP_VCOM_RegDataCallback(APP_VCOM_DEV_INDEX_CBT, OMRL_AcpuRcvCBTData);
    VOS_MemSet(&g_stVComCBTDebugInfo, 0, sizeof(g_stVComCBTDebugInfo));
#endif

    return;
}