HID Report Descriptor, HID Collections

After spending some time looking at HID Reports and HID collections I am not sure if the theory is clear.

I am not 100% sure of the relationship between HID Report descriptor and HID Collections.

My understanding is that single HID Report descriptor can contain definition of one or more top-level collections (identified by report ID).
These top level collections group HID control data and HID usages. They can also contain sub-collections. The HID class driver will create one PDO per each top level collection in the report descriptor.

Therefore, as example consider HID Report descriptor below for some weird device that is made up of touch screen and joystick:

This report descriptor contains 2 reports (one for touch screen and one for joystick). Therefore, HID class driver will create corresponding PDO for each report (touch screen and joystick) and the hardware device will be sending input as 2 different reports (one for the touch screen, one for the built in joystick).

Is my understanding correct on this, please pick-out anything you feel is incorrect.

Sample HID Report Descriptor (Dan I used your example if you don’t mind):

USAGE_PAGE (Digitizers)
USAGE (Touch Screen)
COLLECTION (Application)
REPORTID_TOUCH
COLLECTION (Logical)

ENDCOLLECTION
ENDCOLLECTION

USAGE_PAGE (Generic Desktop)
USAGE (Joystick)
COLLECTION (Application)
REPORTID_JOYSTICK
COLLECTION (Physical)

ENDCOLLECTION
ENDCOLLECTION

That is correct

d

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@hotmail.com
Sent: Wednesday, June 01, 2011 5:18 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] HID Report Descriptor, HID Collections

After spending some time looking at HID Reports and HID collections I am not sure if the theory is clear.

I am not 100% sure of the relationship between HID Report descriptor and HID Collections.

My understanding is that single HID Report descriptor can contain definition of one or more top-level collections (identified by report ID).
These top level collections group HID control data and HID usages. They can also contain sub-collections. The HID class driver will create one PDO per each top level collection in the report descriptor.

Therefore, as example consider HID Report descriptor below for some weird device that is made up of touch screen and joystick:

This report descriptor contains 2 reports (one for touch screen and one for joystick). Therefore, HID class driver will create corresponding PDO for each report (touch screen and joystick) and the hardware device will be sending input as 2 different reports (one for the touch screen, one for the built in joystick).

Is my understanding correct on this, please pick-out anything you feel is incorrect.

Sample HID Report Descriptor (Dan I used your example if you don’t mind):

USAGE_PAGE (Digitizers)
USAGE (Touch Screen)
COLLECTION (Application)
REPORTID_TOUCH
COLLECTION (Logical)

ENDCOLLECTION
ENDCOLLECTION

USAGE_PAGE (Generic Desktop)
USAGE (Joystick)
COLLECTION (Application)
REPORTID_JOYSTICK
COLLECTION (Physical)

ENDCOLLECTION
ENDCOLLECTION


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer