Rename PDIProtocol.c/.h to XPROGProtocol.c/.h as it will now handle both TPI and...
[pub/USBasp.git] / Demos / Device / LowLevel / MassStorage / MassStorage.c
index 76aa337..f9ec4a8 100644 (file)
@@ -37,7 +37,6 @@
 #define  INCLUDE_FROM_MASSSTORAGE_C\r
 #include "MassStorage.h"\r
 \r
-/* Global Variables */\r
 /** Structure to hold the latest Command Block Wrapper issued by the host, containing a SCSI command to execute. */\r
 CommandBlockWrapper_t  CommandBlock;\r
 \r
@@ -47,8 +46,9 @@ CommandStatusWrapper_t CommandStatus = { .Signature = CSW_SIGNATURE };
 /** Flag to asynchronously abort any in-progress data transfers upon the reception of a mass storage reset command. */\r
 volatile bool          IsMassStoreReset = false;\r
 \r
+\r
 /** Main program entry point. This routine configures the hardware required by the application, then\r
- *  starts the scheduler to run the application tasks.\r
+ *  enters a loop to run the application tasks in sequence.\r
  */\r
 int main(void)\r
 {\r
@@ -141,7 +141,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
                                Endpoint_ClearSETUP();\r
 \r
                                /* Indicate that the current transfer should be aborted */\r
-                               IsMassStoreReset = true;                        \r
+                               IsMassStoreReset = true;\r
 \r
                                Endpoint_ClearStatusStage();\r
                        }\r
@@ -204,19 +204,6 @@ void MassStorage_Task(void)
 \r
                        /* Return command status block to the host */\r
                        ReturnCommandStatus();\r
-                       \r
-                       /* Check if a Mass Storage Reset occurred */\r
-                       if (IsMassStoreReset)\r
-                       {\r
-                               /* Reset the data endpoint banks */\r
-                               Endpoint_ResetFIFO(MASS_STORAGE_OUT_EPNUM);\r
-                               Endpoint_ResetFIFO(MASS_STORAGE_IN_EPNUM);\r
-                               \r
-                               Endpoint_SelectEndpoint(MASS_STORAGE_OUT_EPNUM);\r
-                               Endpoint_ClearStall();\r
-                               Endpoint_SelectEndpoint(MASS_STORAGE_IN_EPNUM);\r
-                               Endpoint_ClearStall();\r
-                       }\r
 \r
                        /* Indicate ready */\r
                        LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
@@ -228,8 +215,23 @@ void MassStorage_Task(void)
                }\r
        }\r
 \r
-       /* Clear the abort transfer flag */\r
-       IsMassStoreReset = false;\r
+       /* Check if a Mass Storage Reset occurred */\r
+       if (IsMassStoreReset)\r
+       {\r
+               /* Reset the data endpoint banks */\r
+               Endpoint_ResetFIFO(MASS_STORAGE_OUT_EPNUM);\r
+               Endpoint_ResetFIFO(MASS_STORAGE_IN_EPNUM);\r
+               \r
+               Endpoint_SelectEndpoint(MASS_STORAGE_OUT_EPNUM);\r
+               Endpoint_ClearStall();\r
+               Endpoint_ResetDataToggle();\r
+               Endpoint_SelectEndpoint(MASS_STORAGE_IN_EPNUM);\r
+               Endpoint_ClearStall();\r
+               Endpoint_ResetDataToggle();\r
+\r
+               /* Clear the abort transfer flag */\r
+               IsMassStoreReset = false;\r
+       }\r
 }\r
 \r
 /** Function to read in a command block from the host, via the bulk data OUT endpoint. This function reads in the next command block\r