USB device with multiple interfaces

This forum is for general developer support questions.
Post Reply
User avatar
AlfredOne
Beta Tester
Beta Tester
Posts: 135
Joined: Wed Dec 22, 2010 11:45 pm
Location: Terlizzi (BA) , Italy
Contact:

USB device with multiple interfaces

Post 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!
Amiga500 Kickstart1.3
AmigaONE XE G4 833MHz - 2GB RAM - Radeon9200 256MB
AmigaONE X1000 - 2GB RAM
  • Radeon R9-280X 3GB
  • Radeon HIS4670 1GB DDR3
  • Radeon RX550
My site: https://project4a.eu
Belxjander
Posts: 314
Joined: Mon May 14, 2012 10:26 pm
Location: 日本千葉県松戸市 / Matsudo City, Chiba, Japan
Contact:

Re: USB device with multiple interfaces

Post by Belxjander »

Is it letting you select single vs multi touch support by which end-point you claim?
User avatar
AlfredOne
Beta Tester
Beta Tester
Posts: 135
Joined: Wed Dec 22, 2010 11:45 pm
Location: Terlizzi (BA) , Italy
Contact:

Re: USB device with multiple interfaces

Post 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?
Amiga500 Kickstart1.3
AmigaONE XE G4 833MHz - 2GB RAM - Radeon9200 256MB
AmigaONE X1000 - 2GB RAM
  • Radeon R9-280X 3GB
  • Radeon HIS4670 1GB DDR3
  • Radeon RX550
My site: https://project4a.eu
Post Reply