Fix accidentally changed code breaking the HID descriptor parser.
[pub/USBasp.git] / LUFA / Drivers / USB / LowLevel / HostChapter9.c
index fe168b7..42e3262 100644 (file)
   this software.\r
 */\r
 \r
-#include "USBMode.h"\r
+#include "../HighLevel/USBMode.h"\r
+\r
 #if defined(USB_CAN_BE_HOST)\r
 \r
 #define  INCLUDE_FROM_HOSTCHAPTER9_C\r
 #include "HostChapter9.h"\r
 \r
-USB_Host_Request_Header_t USB_HostRequest;\r
-\r
 uint8_t USB_Host_SendControlRequest(void* BufferPtr)\r
 {\r
-       uint8_t* HeaderStream   = (uint8_t*)&USB_HostRequest;\r
+       uint8_t* HeaderStream   = (uint8_t*)&USB_ControlRequest;\r
        uint8_t* DataStream     = (uint8_t*)BufferPtr;\r
        bool     BusSuspended   = USB_Host_IsBusSuspended();\r
        uint8_t  ReturnStatus   = HOST_SENDCONTROL_Successful;\r
-       uint16_t DataLen        = USB_HostRequest.wLength;\r
+       uint16_t DataLen        = USB_ControlRequest.wLength;\r
 \r
        USB_Host_ResumeBus();\r
        \r
        if ((ReturnStatus = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)\r
-         return ReturnStatus;\r
+         goto End_Of_Control_Send;\r
 \r
-       Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
        Pipe_SetToken(PIPE_TOKEN_SETUP);\r
        Pipe_ClearErrorFlags();\r
-       Pipe_ClearSetupSent();\r
 \r
        Pipe_Unfreeze();\r
 \r
-       for (uint8_t HeaderByte = 0; HeaderByte < sizeof(USB_Host_Request_Header_t); HeaderByte++)\r
+       for (uint8_t HeaderByte = 0; HeaderByte < sizeof(USB_Request_Header_t); HeaderByte++)\r
          Pipe_Write_Byte(*(HeaderStream++));\r
 \r
-       Pipe_ClearSetupOUT();\r
+       Pipe_ClearSETUP();\r
        \r
-       if ((ReturnStatus = USB_Host_Wait_For_Setup_IOS(USB_HOST_WAITFOR_SetupSent)))\r
+       if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_SetupSent)) != HOST_SENDCONTROL_Successful)\r
          goto End_Of_Control_Send;\r
 \r
-       Pipe_ClearSetupSent();\r
        Pipe_Freeze();\r
 \r
        if ((ReturnStatus = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)\r
          goto End_Of_Control_Send;\r
 \r
-       if ((USB_HostRequest.bmRequestType & CONTROL_REQTYPE_DIRECTION) == REQDIR_DEVICETOHOST)\r
+       if ((USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_DIRECTION) == REQDIR_DEVICETOHOST)\r
        {\r
                Pipe_SetToken(PIPE_TOKEN_IN);\r
                \r
@@ -80,7 +76,7 @@ uint8_t USB_Host_SendControlRequest(void* BufferPtr)
                        {\r
                                Pipe_Unfreeze();\r
 \r
-                               if ((ReturnStatus = USB_Host_Wait_For_Setup_IOS(USB_HOST_WAITFOR_InReceived)))\r
+                               if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_InReceived)) != HOST_SENDCONTROL_Successful)\r
                                  goto End_Of_Control_Send;\r
                                                        \r
                                if (!(Pipe_BytesInPipe()))\r
@@ -93,19 +89,19 @@ uint8_t USB_Host_SendControlRequest(void* BufferPtr)
                                }\r
 \r
                                Pipe_Freeze();\r
-                               Pipe_ClearSetupIN();\r
+                               Pipe_ClearIN();\r
                        }\r
                }\r
 \r
                Pipe_SetToken(PIPE_TOKEN_OUT);\r
                Pipe_Unfreeze();\r
                \r
-               if ((ReturnStatus = USB_Host_Wait_For_Setup_IOS(USB_HOST_WAITFOR_OutReady)))\r
+               if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)\r
                  goto End_Of_Control_Send;\r
 \r
-               Pipe_ClearSetupOUT();\r
+               Pipe_ClearOUT();\r
 \r
-               if ((ReturnStatus = USB_Host_Wait_For_Setup_IOS(USB_HOST_WAITFOR_OutReady)))\r
+               if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)\r
                  goto End_Of_Control_Send;\r
        }\r
        else\r
@@ -117,7 +113,7 @@ uint8_t USB_Host_SendControlRequest(void* BufferPtr)
 \r
                        while (DataLen)\r
                        {\r
-                               if ((ReturnStatus = USB_Host_Wait_For_Setup_IOS(USB_HOST_WAITFOR_OutReady)))\r
+                               if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)\r
                                  goto End_Of_Control_Send;\r
 \r
                                while (DataLen && (Pipe_BytesInPipe() < USB_ControlPipeSize))\r
@@ -126,10 +122,10 @@ uint8_t USB_Host_SendControlRequest(void* BufferPtr)
                                        DataLen--;\r
                                }\r
                                \r
-                               Pipe_ClearSetupOUT();\r
+                               Pipe_ClearOUT();\r
                        }\r
 \r
-                       if ((ReturnStatus = USB_Host_Wait_For_Setup_IOS(USB_HOST_WAITFOR_OutReady)))\r
+                       if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)\r
                          goto End_Of_Control_Send;\r
 \r
                        Pipe_Freeze();\r
@@ -138,10 +134,10 @@ uint8_t USB_Host_SendControlRequest(void* BufferPtr)
                Pipe_SetToken(PIPE_TOKEN_IN);\r
                Pipe_Unfreeze();\r
 \r
-               if ((ReturnStatus = USB_Host_Wait_For_Setup_IOS(USB_HOST_WAITFOR_InReceived)))\r
+               if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_InReceived)) != HOST_SENDCONTROL_Successful)\r
                  goto End_Of_Control_Send;\r
 \r
-               Pipe_ClearSetupIN();\r
+               Pipe_ClearIN();\r
        }\r
 \r
 End_Of_Control_Send:\r
@@ -155,13 +151,17 @@ End_Of_Control_Send:
        return ReturnStatus;\r
 }\r
 \r
-static uint8_t USB_Host_Wait_For_Setup_IOS(const uint8_t WaitType)\r
+static uint8_t USB_Host_WaitForIOS(const uint8_t WaitType)\r
 {\r
+       #if (USB_HOST_TIMEOUT_MS < 0xFF)\r
+       uint8_t  TimeoutCounter = USB_HOST_TIMEOUT_MS;  \r
+       #else\r
        uint16_t TimeoutCounter = USB_HOST_TIMEOUT_MS;\r
+       #endif\r
        \r
-       while (!(((WaitType == USB_HOST_WAITFOR_SetupSent)  && Pipe_IsSetupSent())       ||\r
-                ((WaitType == USB_HOST_WAITFOR_InReceived) && Pipe_IsSetupINReceived()) ||\r
-                ((WaitType == USB_HOST_WAITFOR_OutReady)   && Pipe_IsSetupOUTReady())))\r
+       while (!(((WaitType == USB_HOST_WAITFOR_SetupSent)  && Pipe_IsSETUPSent())  ||\r
+                ((WaitType == USB_HOST_WAITFOR_InReceived) && Pipe_IsINReceived()) ||\r
+                ((WaitType == USB_HOST_WAITFOR_OutReady)   && Pipe_IsOUTReady())))\r
        {\r
                uint8_t ErrorCode;\r
 \r