Add demos/bootloaders/projects overview to the manual.
[pub/USBasp.git] / Demos / Host / ClassDriver / MassStorageHost / Lib / MassStoreCommands.c
index 95aafca..7597473 100644 (file)
@@ -107,10 +107,6 @@ static uint8_t MassStore_WaitForDataReceived(void)
 {\r
        uint16_t TimeoutMSRem = COMMAND_DATA_TIMEOUT_MS;\r
 \r
-       /* Unfreeze the OUT pipe so that it can be checked */\r
-       Pipe_SelectPipe(MASS_STORE_DATA_OUT_PIPE);\r
-       Pipe_Unfreeze();\r
-\r
        /* Select the IN data pipe for data reception */\r
        Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);\r
        Pipe_Unfreeze();\r
@@ -130,24 +126,28 @@ static uint8_t MassStore_WaitForDataReceived(void)
                          return PIPE_RWSTREAM_Timeout;\r
                }\r
        \r
+               Pipe_Freeze();\r
                Pipe_SelectPipe(MASS_STORE_DATA_OUT_PIPE);\r
+               Pipe_Unfreeze();\r
 \r
                /* Check if pipe stalled (command failed by device) */\r
                if (Pipe_IsStalled())\r
                {\r
                        /* Clear the stall condition on the OUT pipe */\r
-                       MassStore_ClearPipeStall(MASS_STORE_DATA_OUT_PIPE);\r
+                       USB_Host_ClearPipeStall(MASS_STORE_DATA_OUT_PIPE);\r
 \r
                        return PIPE_RWSTREAM_PipeStalled;\r
                }\r
-\r
+               \r
+               Pipe_Freeze();\r
                Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);\r
+               Pipe_Unfreeze();\r
 \r
                /* Check if pipe stalled (command failed by device) */\r
                if (Pipe_IsStalled())\r
                {\r
                        /* Clear the stall condition on the IN pipe */\r
-                       MassStore_ClearPipeStall(MASS_STORE_DATA_IN_PIPE);\r
+                       USB_Host_ClearPipeStall(MASS_STORE_DATA_IN_PIPE);\r
 \r
                        return PIPE_RWSTREAM_PipeStalled;\r
                }\r
@@ -156,6 +156,12 @@ static uint8_t MassStore_WaitForDataReceived(void)
                if (!(USB_IsConnected))\r
                  return PIPE_RWSTREAM_DeviceDisconnected;\r
        };\r
+       \r
+       Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);\r
+       Pipe_Freeze();\r
+               \r
+       Pipe_SelectPipe(MASS_STORE_DATA_OUT_PIPE);\r
+       Pipe_Freeze();\r
 \r
        return PIPE_RWSTREAM_NoError;\r
 }\r