Change Host mode class driver Pipe configuration routines -- better to let the applic...
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Host / HID.c
index 4f013d5..8639b48 100644 (file)
 #define INCLUDE_FROM_HID_CLASS_HOST_C\r
 #include "HID.h"\r
 \r
-uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo, uint16_t MaxConfigBufferSize)\r
+uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo, uint16_t ConfigDescriptorSize,\r
+                                uint8_t* ConfigDescriptorData)\r
 {\r
-       uint8_t* ConfigDescriptorData;\r
-       uint16_t ConfigDescriptorSize;\r
        uint8_t  FoundEndpoints = 0;\r
 \r
-       if (USB_GetDeviceConfigDescriptor(1, &ConfigDescriptorSize, NULL) != HOST_SENDCONTROL_Successful)\r
-         return HID_ENUMERROR_ControlError;\r
-       \r
-       if (ConfigDescriptorSize > MaxConfigBufferSize)\r
-         return HID_ENUMERROR_DescriptorTooLarge;\r
-         \r
-       ConfigDescriptorData = alloca(ConfigDescriptorSize);\r
-\r
-       USB_GetDeviceConfigDescriptor(1, &ConfigDescriptorSize, ConfigDescriptorData);\r
-       \r
        if (DESCRIPTOR_TYPE(ConfigDescriptorData) != DTYPE_Configuration)\r
-         return HID_ENUMERROR_InvalidConfigDataReturned;\r
+         return HID_ENUMERROR_InvalidConfigDescriptor;\r
        \r
        do\r
        {\r
@@ -62,7 +51,7 @@ uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo, uint
                }\r
        } while (HIDInterfaceInfo->Config.MatchInterfaceProtocol &&\r
                 DESCRIPTOR_PCAST(ConfigDescriptorData,\r
-                                 USB_Descriptor_Interface_t)->HIDInterfaceProtocol != HIDInterfaceInfo->Config.Protocol);\r
+                                 USB_Descriptor_Interface_t)->Protocol != HIDInterfaceInfo->Config.HIDInterfaceProtocol);\r
 \r
        while (FoundEndpoints != ((1 << HID_FOUND_DATAPIPE_IN) | (1 << HID_FOUND_DATAPIPE_OUT)))\r
        {\r