#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
}\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