this software.\r
*/\r
\r
-#include "../LowLevel/USBMode.h"\r
+#include "USBMode.h"\r
\r
#define INCLUDE_FROM_USBTASK_C\r
#include "USBTask.h"\r
\r
-volatile bool USB_IsSuspended;\r
-volatile bool USB_IsConnected;\r
-volatile bool USB_IsInitialized;\r
+volatile bool USB_IsSuspended;\r
+volatile bool USB_IsConnected;\r
+volatile bool USB_IsInitialized;\r
+USB_Request_Header_t USB_ControlRequest;\r
\r
#if defined(USB_CAN_BE_HOST)\r
volatile uint8_t USB_HostState;\r
\r
Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);\r
\r
- if (Endpoint_IsSetupReceived())\r
+ if (Endpoint_IsSETUPReceived())\r
{\r
ATOMIC_BLOCK(ATOMIC_RESTORESTATE)\r
{\r
{\r
uint8_t ErrorCode = HOST_ENUMERROR_NoError;\r
uint8_t SubErrorCode = HOST_ENUMERROR_NoError;\r
+ uint8_t PrevPipe = Pipe_GetCurrentPipe();\r
\r
static uint16_t WaitMSRemaining;\r
static uint8_t PostWaitState;\r
\r
+ Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
+\r
switch (USB_HostState)\r
{\r
case HOST_STATE_WaitForDevice:\r
if ((SubErrorCode = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)\r
{\r
USB_HostState = PostWaitState;\r
- ErrorCode = HOST_ENUMERROR_WaitStage;\r
+ ErrorCode = HOST_ENUMERROR_WaitStage;\r
break;\r
}\r
\r
break;\r
case HOST_STATE_Powered:\r
Pipe_ConfigurePipe(PIPE_CONTROLPIPE, EP_TYPE_CONTROL,\r
- PIPE_TOKEN_SETUP, PIPE_CONTROLPIPE,\r
+ PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP,\r
PIPE_CONTROLPIPE_DEFAULT_SIZE, PIPE_BANK_SINGLE); \r
\r
if (!(Pipe_IsConfigured()))\r
USB_HostState = HOST_STATE_Default;\r
break;\r
case HOST_STATE_Default:\r
- USB_HostRequest = (USB_Host_Request_Header_t)\r
+ USB_ControlRequest = (USB_Request_Header_t)\r
{\r
- bmRequestType: (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE),\r
- bRequest: REQ_GetDescriptor,\r
- wValue: (DTYPE_Device << 8),\r
- wIndex: 0,\r
- wLength: PIPE_CONTROLPIPE_DEFAULT_SIZE,\r
+ .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE),\r
+ .bRequest = REQ_GetDescriptor,\r
+ .wValue = (DTYPE_Device << 8),\r
+ .wIndex = 0,\r
+ .wLength = 8,\r
};\r
\r
- uint8_t DataBuffer[PIPE_CONTROLPIPE_DEFAULT_SIZE];\r
+ uint8_t DataBuffer[8];\r
\r
if ((SubErrorCode = USB_Host_SendControlRequest(DataBuffer)) != HOST_SENDCONTROL_Successful)\r
{\r
Pipe_ResetPipe(PIPE_CONTROLPIPE);\r
\r
Pipe_ConfigurePipe(PIPE_CONTROLPIPE, EP_TYPE_CONTROL,\r
- PIPE_TOKEN_SETUP, PIPE_CONTROLPIPE,\r
+ PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP,\r
USB_ControlPipeSize, PIPE_BANK_SINGLE);\r
\r
if (!(Pipe_IsConfigured()))\r
\r
Pipe_SetInfiniteINRequests();\r
\r
- USB_HostRequest = (USB_Host_Request_Header_t)\r
+ USB_ControlRequest = (USB_Request_Header_t)\r
{\r
- bmRequestType: (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE),\r
- bRequest: REQ_SetAddress,\r
- wValue: USB_HOST_DEVICEADDRESS,\r
- wIndex: 0,\r
- wLength: 0,\r
+ .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE),\r
+ .bRequest = REQ_SetAddress,\r
+ .wValue = USB_HOST_DEVICEADDRESS,\r
+ .wIndex = 0,\r
+ .wLength = 0,\r
};\r
\r
if ((SubErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)\r
\r
USB_ResetInterface();\r
}\r
+ \r
+ Pipe_SelectPipe(PrevPipe);\r
}\r
#endif\r