Added new USB_Host_GetDeviceConfiguration() and USB_Host_GetInterfaceAltSetting(...
[pub/USBasp.git] / LUFA / Drivers / USB / Core / HostStandardReq.c
index ee5d8cb..d7e7e3e 100644 (file)
@@ -211,6 +211,22 @@ uint8_t USB_Host_SetDeviceConfiguration(const uint8_t ConfigNumber)
        return ErrorCode;
 }
 
+uint8_t USB_Host_GetDeviceConfiguration(uint8_t* const ConfigNumber)
+{
+       USB_ControlRequest = (USB_Request_Header_t)
+               {
+                       .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE),
+                       .bRequest      = REQ_GetConfiguration,
+                       .wValue        = 0,
+                       .wIndex        = 0,
+                       .wLength       = sizeof(uint8_t),
+               };
+
+       Pipe_SelectPipe(PIPE_CONTROLPIPE);
+
+       return USB_Host_SendControlRequest(ConfigNumber);
+}
+
 uint8_t USB_Host_GetDeviceDescriptor(void* const DeviceDescriptorPtr)
 {
        USB_ControlRequest = (USB_Request_Header_t)
@@ -235,7 +251,7 @@ uint8_t USB_Host_GetDeviceStringDescriptor(const uint8_t Index,
                {
                        .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE),
                        .bRequest      = REQ_GetDescriptor,
-                       .wValue        = (DTYPE_String << 8) | Index,
+                       .wValue        = ((DTYPE_String << 8) | Index),
                        .wIndex        = 0,
                        .wLength       = BufferLength,
                };
@@ -294,5 +310,22 @@ uint8_t USB_Host_SetInterfaceAltSetting(const uint8_t InterfaceIndex,
        return USB_Host_SendControlRequest(NULL);
 }
 
+uint8_t USB_Host_GetInterfaceAltSetting(const uint8_t InterfaceIndex,
+                                        uint8_t* const AltSetting)
+{
+       USB_ControlRequest = (USB_Request_Header_t)
+               {
+                       .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_INTERFACE),
+                       .bRequest      = REQ_GetInterface,
+                       .wValue        = 0,
+                       .wIndex        = InterfaceIndex,
+                       .wLength       = sizeof(uint8_t),
+               };
+
+       Pipe_SelectPipe(PIPE_CONTROLPIPE);
+
+       return USB_Host_SendControlRequest(AltSetting);
+}
+
 #endif