1: uhs_status_t Usbh_Cdc_Init(
app_callback_info* stCallback)
2: {
3: CDC_FUNC_STATUS nRetval;
4:
5:
6:
7:
8: IAPI_CDC_REPORT_MILESTONE( USBCDC_CHKPOINTS_API_INITIALIZE );
9:
10:
11:
12:
13:
if(stCallback->clsdrv_type != USB_CLASS_CDC){
14: IAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_PARAM_ERROR );
15:
return(
UDI_STAT_DATA_ERROR );
16: }
17:
18:
19:
20:
21:
if(g_pCdcDriver != NULL){
22: IAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_ALREADY_INIT );
23:
return(
UDI_STAT_DATA_ERROR );
24: }
25:
26:
27:
28:
29:
30: g_pCdcDriver = (
PCDC_DRIVER)CdcUtils_Malloc(
sizeof(CDC_DRIVER));
31:
if( g_pCdcDriver == NULL ) {
32: IAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_OUT_OF_RESOURCE );
33:
return(
UDI_STAT_RESOURCE_UNAVAIL );
34: }
35:
36: nRetval = Usbh_Cdc_CreateCdcDriver( stCallback->attach_callback, stCallback->detach_callback );
37:
if(nRetval != CDC_FUNC_STATUS_SUCCESS ) {
38: (
void)CdcUtils_Free(g_pCdcDriver);
39: g_pCdcDriver = NULL;
40: IAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_FAILED_CRE_CDCD );
41:
return(
UDI_STAT_DATA_ERROR );
42: }
43:
44:
45:
46:
47: nRetval = Usbh_Cdc_Acm_Initialize();
48:
if(nRetval != CDC_FUNC_STATUS_SUCCESS ) {
49: (
void)Usbh_Cdc_DeleteCdcDriver();
50: (
void)CdcUtils_Free(g_pCdcDriver);
51: g_pCdcDriver = NULL;
52: IAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_FAILED_CBI_INIT );
53:
return(
UDI_STAT_DATA_ERROR );
54: }
55:
56:
57:
58:
59: IAPI_CDC_REPORT_MILESTONE( USBCDC_CHKPOINTS_API_INITIALIZE_FINISH );
60:
61:
return(
UDI_OK );
62: }