STM32F429 demo update
authorgkostka <kostka.grzegorz@gmail.com>
Sun, 22 Jun 2014 21:28:03 +0000 (21:28 +0000)
committergkostka <kostka.grzegorz@gmail.com>
Sun, 22 Jun 2014 21:28:03 +0000 (21:28 +0000)
demos/stm32f429_disco/stm/usb_host/Class/MSC/src/usbh_msc.c
demos/stm32f429_disco/usb_msc_lwext4.c

index 53a2cd81df182fe1846860ee4ba5b7545ba8edd5..9db56f2c8dd8aecba0ac8f1ec5408e1956e2a71d 100644 (file)
@@ -713,8 +713,10 @@ USBH_StatusTypeDef USBH_MSC_Read(USBH_HandleTypeDef *phost,
                      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
@@ -722,7 +724,7 @@ USBH_StatusTypeDef USBH_MSC_Read(USBH_HandleTypeDef *phost,
     }\r
   }\r
   MSC_Handle->state = MSC_IDLE;\r
-  return USBH_OK;\r
+  return stat;\r
 }\r
 \r
 /**\r
@@ -742,8 +744,9 @@ USBH_StatusTypeDef USBH_MSC_Write(USBH_HandleTypeDef *phost,
                                      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
@@ -760,8 +763,11 @@ USBH_StatusTypeDef USBH_MSC_Write(USBH_HandleTypeDef *phost,
                      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
@@ -769,7 +775,7 @@ USBH_StatusTypeDef USBH_MSC_Write(USBH_HandleTypeDef *phost,
     }\r
   }\r
   MSC_Handle->state = MSC_IDLE;\r
-  return USBH_OK;\r
+  return stat;\r
 }\r
 \r
 /**\r
index 9230f2aad0f488c90319e1e89a97063132e4b237..854f96d07cf444605355d72302645f893ba6dfd4 100644 (file)
@@ -119,6 +119,9 @@ static int usb_msc_bread(struct ext4_blockdev *bdev, void *buf, uint64_t blk_id,
     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
@@ -135,6 +138,9 @@ static int usb_msc_bwrite(struct ext4_blockdev *bdev, const void *buf,
     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