#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
/** 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
Endpoint_ClearSETUP();\r
\r
/* Indicate that the current transfer should be aborted */\r
- IsMassStoreReset = true; \r
+ IsMassStoreReset = true;\r
\r
Endpoint_ClearStatusStage();\r
}\r
\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
}\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