PORTS Forum
Ports and Interfaces => USB => Topic started by: rallysjd on May 15, 2015, 11:27:57 am
-
Perhaps a reader can offer some advice?
The config descriptor sets two interfaces. In order there's the Interface Descr#0 + HID Descr#0 + Endpoint1 set, then Interface Descr#1 + HID Descr#1 + Endpoint2 set. I have two ReportDescriptors, which testing to date showed necessary. The first ReportDescriptor contains data from a working device. The second ReportDescriptor has a couple of commands for testing only.
Windows shows HID#0 as the expected HID-Compliant Device/USB Input Device pair, and this works perfectly. HID#1 shows as a USB Input Device that's unable to start. I suspect that the enumeration process is not getting the details for interface#1.
In the HID_Reset() function, there's a pInformation->Current_Interface setting (same struct passes USBwIndex0, USBwIndex1 values). Debugging (with a printf ) shows that interface#1 is never set.
I'm at a loss where to look next. Suggestions anyone?
SD
-
Post your descriptors.
Try getting each of the HIDs to work individually, then as a single composite device.
If you change the descriptors and keep the same Product ID and Vendor ID, see:
http://janaxelson.com/forum/index.php?topic=1367.msg6187#msg6187
-
Testing each interface separately is a helpful idea.
Found it ... the second Report_Descriptor array size was off by 1. Both HIDs are now functional.
For readers, it's ideally required that each HID has it's own Receive_Buffer and Send_Buffer.
SD
-
Excellent, thanks for reporting what you found.