Added new USB_DeviceState variable to keep track of the current Device mode USB state.
[pub/USBasp.git] / Demos / Host / LowLevel / MassStorageHost / MassStorageHost.c
index 1adec5b..6cfe669 100644 (file)
@@ -171,14 +171,11 @@ void MassStorage_Task(void)
                                break;\r
                        }\r
                                \r
+                       puts_P(PSTR("Mass Storage Disk Enumerated.\r\n"));\r
+\r
                        USB_HostState = HOST_STATE_Configured;\r
                        break;\r
                case HOST_STATE_Configured:\r
-                       puts_P(PSTR("Mass Storage Disk Enumerated.\r\n"));\r
-                               \r
-                       USB_HostState = HOST_STATE_Ready;\r
-                       break;\r
-               case HOST_STATE_Ready:\r
                        /* Indicate device busy via the status LEDs */\r
                        LEDs_SetAllLEDs(LEDMASK_USB_BUSY);\r
                        \r
@@ -241,7 +238,11 @@ void MassStorage_Task(void)
                        {\r
                                Serial_TxByte('.');\r
                                \r
-                               if ((ErrorCode = MassStore_TestUnitReady(0)) != 0)\r
+                               /* Abort if device removed */\r
+                               if (USB_HostState == HOST_STATE_Unattached)\r
+                                 break;\r
+\r
+                               if ((ErrorCode = MassStore_TestUnitReady(0)) != PIPE_RWSTREAM_NoError)\r
                                {\r
                                        ShowDiskReadError(PSTR("Test Unit Ready"), false, ErrorCode);\r
 \r
@@ -249,11 +250,7 @@ void MassStorage_Task(void)
                                        break;\r
                                }\r
                        }\r
-                       while ((SCSICommandStatus.Status != Command_Pass) && USB_IsConnected);\r
-                       \r
-                       /* Abort if device removed */\r
-                       if (!(USB_IsConnected))\r
-                         break;\r
+                       while (SCSICommandStatus.Status != Command_Pass);\r
 \r
                        puts_P(PSTR("\r\nRetrieving Capacity... "));\r
 \r
@@ -320,7 +317,7 @@ void MassStorage_Task(void)
                        while (!(Buttons_GetStatus() & BUTTONS_BUTTON1))\r
                        {\r
                                /* Abort if device removed */\r
-                               if (!(USB_IsConnected))\r
+                               if (USB_HostState == HOST_STATE_Unattached)\r
                                  break;\r
                        }\r
                        \r
@@ -346,7 +343,7 @@ void MassStorage_Task(void)
                                }\r
 \r
                                /* Abort if device removed */\r
-                               if (!(USB_IsConnected))\r
+                               if (USB_HostState == HOST_STATE_Unattached)\r
                                  break;\r
                        }\r
                        \r