1: uhs_status_t Usbh_Stor_Init(
app_callback_info* stCallback)
2: {
3: uhs_ubit8_t i;
4: USB_BOT_STATUS nBotRet;
5: USB_SCSI_STATUS nScsiRet;
6:
7: API_REPORT_MILESTONE( USBSTOR_CHKPOINTS_API_INITIALIZE );
8:
9:
10:
if( stCallback->clsdrv_type != USB_CLASS_MASSSTOR ) {
11: API_REPORT_SUMMARY( USBSTOR_LOG_SYS_SYSTEM_ERROR );
12:
return UDI_STAT_DATA_ERROR;
13: }
14:
15:
16:
for( i = 0; i < (uhs_ubit8_t) numof(stDriveTable); i++ ) {
17: stDriveTable[i].s32Context = (CONTEXT_BASE + i);
18: stDriveTable[i].pUserDrv = NULL;
19: stDriveTable[i].pStorUnit = NULL;
20: }
21:
22:
23: pStorClassDriver = Usbh_Stor_CreateStorClassDriver( stCallback->attach_callback,
24: stCallback->detach_callback,
25: Usbh_Stor_Api_AttachStorUnit,
26: Usbh_Stor_Api_DetachStorUnit,
27: Usbh_Stor_ScsiCtrl_AttachStorUnit,
28: Usbh_Stor_ScsiCtrl_DetachStorUnit );
29:
if( pStorClassDriver == NULL ) {
30: API_REPORT_SUMMARY( USBSTOR_LOG_SYS_SYSTEM_ERROR );
31:
return UDI_STAT_DATA_ERROR;
32: }
33:
34:
35:
if( (nBotRet = Usbh_Stor_Bot_Initialize(pStorClassDriver)) != USB_BOT_NORMAL ) {
36:
37: Usbh_Stor_DeleteStorClassDriver( pStorClassDriver );
38: pStorClassDriver = NULL;
39:
40: API_REPORT_SUMMARY( Usbh_Stor_ApiLog_ConvertUsbBotStatToUsbStorStat(nBotRet) );
41:
return UDI_STAT_DATA_ERROR;
42: }
43:
44:
45:
if( (nScsiRet = Usbh_Stor_ScsiCtrl_Initialize()) != USB_SCSI_NORMAL ) {
46:
47: Usbh_Stor_Bot_Finalize( pStorClassDriver );
48: Usbh_Stor_DeleteStorClassDriver( pStorClassDriver );
49: pStorClassDriver = NULL;
50:
51: API_REPORT_SUMMARY( Usbh_Stor_ApiLog_ConvertUsbScsiStatToUsbStorStat(nScsiRet) );
52:
return UDI_STAT_DATA_ERROR;
53: }
54:
55:
return UDI_OK;
56: }