VOS_VOID dms_Init(VOS_VOID) { initDmsMainInfo(); if (VOS_OK != VOS_SmCCreate( "PCUIRX", 0, VOS_SEMA4_FIFO, &g_ulPcuiRxSem)) { vos_printf("dms_Init: creat pcui rx sem fail!\n");; } if (VOS_OK != VOS_SmCCreate( "CTRLRX", 0, VOS_SEMA4_FIFO, &g_ulCtrlRxSem)) { vos_printf("dms_Init: creat ctrl rx sem fail!\n");; } BSP_USB_RegUdiEnableCB(dms_UsbEnableEvtProc); BSP_USB_RegUdiDisableCB(dms_UsbDisableEvtProc); return ; }
static int acm_test_init(int *acm_idx) { acm_test_ctx_t *acm_ctx = NULL; static int cb_reged = 0; int idx = *acm_idx; if (idx >= USB_ACM_COM_UDI_NUM) { ACM_ADP_ERR("invalid acm device ID[%d]\n", idx); return ADP_ERROR; } acm_ctx = &g_acm_test_ctx[idx]; if (THREAD_CREATED == acm_ctx->thr_state) { ACM_ADP_ERR("thread already created ID[%d]\n", idx); return ADP_ERROR; } snprintf(acm_ctx->thr_name, 10, "acm_loop_%d", idx); ACM_ADP_DBG("create thread [%s]\n", acm_ctx->thr_name); sema_init(&acm_ctx->thr_sema, 0); g_acm_idx = idx; acm_ctx->thread = kthread_run(acm_loop_task, (void *)&g_acm_idx, acm_ctx->thr_name); if (acm_ctx->thread == ERR_PTR(-ENOMEM)) { ACM_ADP_ERR("thread create fail ID[%d]\n", idx); return ADP_ERROR; } acm_ctx->thr_state = THREAD_CREATED; if (!cb_reged) { BSP_USB_RegUdiDisableCB(acm_disconnect_cb); cb_reged = 1; } return ADP_OK; }
/***************************************************************************** 函 数 名 : bsp_usb_register_disablecb 功能描述 : 本接口用于Cshell通知USB拔出回调函数 输入参数 : 回调接口。 输出参数 : 无。 返 回 值 : 0:成功 零:失败 *****************************************************************************/ int bsp_usb_register_disablecb(USB_UDI_DISABLE_CB_T pFunc) { /* we suggest to use the new interface for usb insert/remove */ return BSP_USB_RegUdiDisableCB(pFunc); }