Ejemplo n.º 1
0
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);
}