I have implemented a USB touchscreen device within an embedded micro-controller that is interfacing to a Windows platform (Win7, Win8 or Win10).
It is now working correctly, but initially I had some problems and using a USB h/w debugger I 'sniffed' an off-the-shelf touchscreen to 'learn' its approach.
I do not understand one of the steps of the USB process,
Get Feature Report, and was hoping somebody could offer an explanation.
Summary of USB enumeration process:
- Device reset
- Get Device Descriptor
- Set Address
- Get Device Descriptor
- Get Configuration Descriptor
- Get String Descriptor
- Get String Descriptor
- Get Device Descriptor
- Get Configuration Descriptor
- Get Configuration Descriptor
- Set Configuration
- Set Idle
- Get Report Descriptor
- Get Feature Report[4]
Reading Jan's book (4th Ed, which is my USB bible), I understand that a 'Get
Feature Report' is used to ask the device for some configuration information. The detailed
Get Feature Report transaction is provided here:
- SETUP txn: A1 01 04 03 00 02 00
- IN txn: 04 02
From the 'SETUP txn' I can see that the USB host sends a
Get Report (bRequest 0x01) for
Feature (wValue high byte 0x03)
Report Id 4 (wValue low byte 0x04).
The device (touchscreen) always replies with data
0x04 0x02.
My question:
- What is the meaning of the 0x04 0x02 data returned by the touchscreen's Get Feature Report[4]?
Get/Set Feature Reports are for configuration data, so it could be
proprietary data as defined by the original device manufacturer. But in the case of this touchscreen, Windows natively supports the touchscreen - it does not need a specific manufacturer supplied driver. So where is the meaning of this data defined? Is there a Microsoft document that defines what this means?