Minor changes to the AVRISP project for code clarity.
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Device / MassStorage.c
index f7f3fd9..43dc3f8 100644 (file)
@@ -36,7 +36,7 @@
 \r
 static USB_ClassInfo_MS_Device_t* CallbackMSInterfaceInfo;\r
 \r
-void MS_Device_ProcessControlPacket(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo)\r
+void MS_Device_ProcessControlRequest(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo)\r
 {\r
        if (!(Endpoint_IsSETUPReceived()))\r
          return;\r
@@ -53,8 +53,7 @@ void MS_Device_ProcessControlPacket(USB_ClassInfo_MS_Device_t* const MSInterface
 \r
                                MSInterfaceInfo->State.IsMassStoreReset = true;                 \r
 \r
-                               while (!(Endpoint_IsINReady()));\r
-                               Endpoint_ClearIN();\r
+                               Endpoint_ClearStatusStage();\r
                        }\r
 \r
                        break;\r
@@ -63,12 +62,10 @@ void MS_Device_ProcessControlPacket(USB_ClassInfo_MS_Device_t* const MSInterface
                        {\r
                                Endpoint_ClearSETUP();\r
 \r
-                               Endpoint_Write_Byte(MSInterfaceInfo->Config.TotalLUNs - 1);\r
-                               \r
+                               Endpoint_Write_Byte(MSInterfaceInfo->Config.TotalLUNs - 1);                             \r
                                Endpoint_ClearIN();\r
                                \r
-                               while (!(Endpoint_IsOUTReceived()));\r
-                               Endpoint_ClearOUT();\r
+                               Endpoint_ClearStatusStage();\r
                        }\r
                        \r
                        break;\r
@@ -77,16 +74,18 @@ void MS_Device_ProcessControlPacket(USB_ClassInfo_MS_Device_t* const MSInterface
 \r
 bool MS_Device_ConfigureEndpoints(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo)\r
 {\r
+       memset(&MSInterfaceInfo->State, 0x00, sizeof(MSInterfaceInfo->State));\r
+\r
        if (!(Endpoint_ConfigureEndpoint(MSInterfaceInfo->Config.DataINEndpointNumber, EP_TYPE_BULK,\r
                                                                 ENDPOINT_DIR_IN, MSInterfaceInfo->Config.DataINEndpointSize,\r
-                                                                ENDPOINT_BANK_SINGLE)))\r
+                                                                MSInterfaceInfo->Config.DataINEndpointDoubleBank ? ENDPOINT_BANK_DOUBLE : ENDPOINT_BANK_SINGLE)))\r
        {\r
                return false;\r
        }\r
 \r
        if (!(Endpoint_ConfigureEndpoint(MSInterfaceInfo->Config.DataOUTEndpointNumber, EP_TYPE_BULK,\r
                                         ENDPOINT_DIR_OUT, MSInterfaceInfo->Config.DataOUTEndpointSize,\r
-                                        ENDPOINT_BANK_SINGLE)))\r
+                                        MSInterfaceInfo->Config.DataOUTEndpointDoubleBank ? ENDPOINT_BANK_DOUBLE : ENDPOINT_BANK_SINGLE)))\r
        {\r
                return false;\r
        }\r
@@ -96,7 +95,7 @@ bool MS_Device_ConfigureEndpoints(USB_ClassInfo_MS_Device_t* const MSInterfaceIn
 \r
 void MS_Device_USBTask(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo)\r
 {\r
-       if (!(USB_IsConnected) || !(USB_ConfigurationNumber))\r
+       if (USB_DeviceState != DEVICE_STATE_Configured)\r
          return;\r
 \r
        Endpoint_SelectEndpoint(MSInterfaceInfo->Config.DataOUTEndpointNumber);\r
@@ -121,21 +120,21 @@ void MS_Device_USBTask(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo)
                        }\r
                        \r
                        MS_Device_ReturnCommandStatus(MSInterfaceInfo);\r
-                       \r
-                       if (MSInterfaceInfo->State.IsMassStoreReset)\r
-                       {\r
-                               Endpoint_ResetFIFO(MSInterfaceInfo->Config.DataOUTEndpointNumber);\r
-                               Endpoint_ResetFIFO(MSInterfaceInfo->Config.DataINEndpointNumber);\r
-                               \r
-                               Endpoint_SelectEndpoint(MSInterfaceInfo->Config.DataOUTEndpointNumber);\r
-                               Endpoint_ClearStall();\r
-                               Endpoint_SelectEndpoint(MSInterfaceInfo->Config.DataINEndpointNumber);\r
-                               Endpoint_ClearStall();\r
-                       }\r
                }\r
        }\r
        \r
-       MSInterfaceInfo->State.IsMassStoreReset = false;\r
+       if (MSInterfaceInfo->State.IsMassStoreReset)\r
+       {\r
+               Endpoint_ResetFIFO(MSInterfaceInfo->Config.DataOUTEndpointNumber);\r
+               Endpoint_ResetFIFO(MSInterfaceInfo->Config.DataINEndpointNumber);\r
+               \r
+               Endpoint_SelectEndpoint(MSInterfaceInfo->Config.DataOUTEndpointNumber);\r
+               Endpoint_ClearStall();\r
+               Endpoint_SelectEndpoint(MSInterfaceInfo->Config.DataINEndpointNumber);\r
+               Endpoint_ClearStall();\r
+\r
+               MSInterfaceInfo->State.IsMassStoreReset = false;\r
+       }\r
 }\r
 \r
 static bool MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo)\r
@@ -166,11 +165,8 @@ static bool MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInte
                                StreamCallback_MS_Device_AbortOnMassStoreReset);\r
                                                        \r
        Endpoint_ClearOUT();\r
-         \r
-       if (MSInterfaceInfo->State.IsMassStoreReset)\r
-         return false;\r
-\r
-       return true;\r
+       \r
+       return !(MSInterfaceInfo->State.IsMassStoreReset);\r
 }\r
 \r
 static void MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo)\r