2020-07-06 10:10 PM
I have custom board on stm32f469. And I try add to HAL HID library my USB device. But I have some problem.
Device have 2 interfaces. 1 endpoint in first and 2 endpoins in second (interface).
In this case USBH_HID_GetHIDDescriptor give me descriptor, but for 1st interface.
How receive descriptors and data from 2nd interface?
Capture when I connect to PC: Device - Device ID (followed by the endpoint for USB devices)
--------------------------------------------------------------------------------------------------------------------------
Device | Length | Phase | Data | Description
--------------------------------------------------------------------------------------------------------------------------
12.0 CTL | 80 06 00 01 00 00 12 00 | GET DESCRIPTOR
---------------------------------------------------------------------------------------------------------------------------
12.0 18 IN | 12 01 01 02 00 00 00 40 08 28 c9 81|
00 02 01 02 00 01 |
---------------------------------------------------------------------------------------------------------------------------
12.0 CTL | 80 06 00 02 00 00 09 00 | GET DESCRIPTOR
--------------------------------------------------------------------------------------------------------------------------
12.0 9 IN | 09 02 42 00 02 01 00 a0 32
---------------------------------------------------------------------------------------------------------------------------
12.0 CTL | 80 06 00 02 00 00 42 00 | GET DESCRIPTOR
----------------------------------------------------------------------------------------------------------------------------
12.0 66 IN | 09 02 42 00 02 01 00 a0 32 09 04 00... (return full description)
----------------------------------------------------------------------------------------------------------------------------
I can repeat it in board. I see CTR in phost->Control.setup.d8. And I receive descriptors.
But next in PC cupture:
--------------------------------------------------------------------------------------------------------------------------
Device | Length | Phase | Data | Description
--------------------------------------------------------------------------------------------------------------------------
13.0 CTL | 80 06 00 02 00 00 09 00 | GET DESCRIPTOR
13.0 9 IN | 09 02 29 00 01 01 00 a0 32 ( ! another size return!!! )
-------------------------------------------------------------------------------------------------------------------------
14.0 CTL | 80 06 00 02 00 00 09 00
14.0 9 IN | 09 02 22 00 01 01 00 a0 32
3 same CTR return 3 variors size of description. The same situation if I try receive HID_report_description. In stm only 1 report, in PC capture 2 different ( 1 unic for every interface)
The problem is that I cant receive data. Data located in 16.0 device (from PC capture). But I can receive data/descriptors only from device 12.0
Help undestand me, when I wrong in library implementation