Page 1 of 1

USB device with multiple interfaces

Posted: Fri Jun 12, 2020 12:26 pm
by AlfredOne
Hello,
i'm writing a driver for a multitouch monitor.
The USB device has only 1 configuration with two interfaces:
- the 1st interface (ID = 0) is the multitouch interface with only 1 input endpoint (interrupt type with address 0x82)
- the 2nd interface (ID = 1) is the singletouch interface with only 1 input endpoint (interrupt type with address 0x81)

If i claim the 2nd interface i can receive singletouch packets from the endpoint 0x81.
If i claim the 1st interface i don't receive any packet from the endpoint 0x82.

The problem is the same both with a Function Driver, or with an Interface Driver.

Anyone has any idea why I am not getting messages from the 0x82 endpoint?

Thanks!

Re: USB device with multiple interfaces

Posted: Mon Jun 15, 2020 7:34 am
by Belxjander
Is it letting you select single vs multi touch support by which end-point you claim?

Re: USB device with multiple interfaces

Posted: Mon Jun 15, 2020 8:01 am
by AlfredOne
I observed this:
1) when i claim the Interface 0 and i request the HID Report Descriptor, i get an HID Report descriptor for a touchscreen with 10 touch points.
2) when i claim the Interface 1 and i request the HID Report Descriptor, i get an HID Report descriptor with only one touch point.

In the Interface descriptors i see that:
- interface 0 has the endpoint 0x82
- interface 1 has the endpoint 0x81

Both endpoints are of the same type (INPUT INTERRUPT) and with the same packet size (64 bytes).
So I thought that to receive multitouch events I had to claim interface 0 and then receive from its endpoint (0x82).

Is it possible that some type of standard HID request is needed to initialize access of the interface 0?