Fixed inability to enumerate any devices while in host mode (broken in a previous...
[pub/USBasp.git] / LUFA / Drivers / USB / LowLevel / HostChapter9.c
index fe168b7..ee51cf3 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
 \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
          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
@@ -93,7 +89,7 @@ uint8_t USB_Host_SendControlRequest(void* BufferPtr)
                                }\r
 \r
                                Pipe_Freeze();\r
-                               Pipe_ClearSetupIN();\r
+                               Pipe_ClearIN();\r
                        }\r
                }\r
 \r
@@ -103,7 +99,7 @@ uint8_t USB_Host_SendControlRequest(void* BufferPtr)
                if ((ReturnStatus = USB_Host_Wait_For_Setup_IOS(USB_HOST_WAITFOR_OutReady)))\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
                  goto End_Of_Control_Send;\r
@@ -126,7 +122,7 @@ 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
@@ -141,7 +137,7 @@ uint8_t USB_Host_SendControlRequest(void* BufferPtr)
                if ((ReturnStatus = USB_Host_Wait_For_Setup_IOS(USB_HOST_WAITFOR_InReceived)))\r
                  goto End_Of_Control_Send;\r
 \r
-               Pipe_ClearSetupIN();\r
+               Pipe_ClearIN();\r
        }\r
 \r
 End_Of_Control_Send:\r
@@ -159,9 +155,9 @@ static uint8_t USB_Host_Wait_For_Setup_IOS(const uint8_t WaitType)
 {\r
        uint16_t TimeoutCounter = USB_HOST_TIMEOUT_MS;\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