length);\r
\r
timeout = phost->Timer + (10000 * length);\r
- while (USBH_MSC_RdWrProcess(phost, lun) == USBH_BUSY)\r
+ USBH_StatusTypeDef stat = USBH_BUSY;\r
+ while (stat == USBH_BUSY)\r
{\r
+ stat = USBH_MSC_RdWrProcess(phost, lun);\r
if((phost->Timer > timeout) || (phost->device.is_connected == 0))\r
{\r
MSC_Handle->state = MSC_IDLE;\r
}\r
}\r
MSC_Handle->state = MSC_IDLE;\r
- return USBH_OK;\r
+ return stat;\r
}\r
\r
/**\r
uint32_t length)\r
{\r
uint32_t timeout;\r
- MSC_HandleTypeDef *MSC_Handle = phost->pActiveClass->pData; \r
+ MSC_HandleTypeDef *MSC_Handle = phost->pActiveClass->pData;\r
\r
+\r
if ((phost->device.is_connected == 0) || \r
(phost->gState != HOST_CLASS) || \r
(MSC_Handle->unit[lun].state != MSC_IDLE))\r
length);\r
\r
timeout = phost->Timer + (10000 * length);\r
- while (USBH_MSC_RdWrProcess(phost, lun) == USBH_BUSY)\r
+ USBH_StatusTypeDef stat = USBH_BUSY;\r
+ while (stat == USBH_BUSY)\r
{\r
+ stat = USBH_MSC_RdWrProcess(phost, lun);\r
+\r
if((phost->Timer > timeout) || (phost->device.is_connected == 0))\r
{\r
MSC_Handle->state = MSC_IDLE;\r
}\r
}\r
MSC_Handle->state = MSC_IDLE;\r
- return USBH_OK;\r
+ return stat;\r
}\r
\r
/**\r
if(!hw_usb_connected())\r
return EIO;\r
\r
+ while(!USBH_MSC_UnitIsReady(&hUSB_Host, 0))\r
+ ;\r
+\r
status = USBH_MSC_Read(&hUSB_Host, 0, blk_id + part_offset, buf, blk_cnt);\r
if(status != USBH_OK)\r
return EIO;\r
if(!hw_usb_connected())\r
return EIO;\r
\r
+ while(!USBH_MSC_UnitIsReady(&hUSB_Host, 0))\r
+ ;\r
+\r
status = USBH_MSC_Write(&hUSB_Host, 0, blk_id + part_offset, (void *)buf, blk_cnt);\r
if(status != USBH_OK)\r
return EIO;\r