HID协议规定了两种条目:短条目和长条目(这儿没有用到长条目,不管它).其中短条目的结构如下图所示:
要判断一个短条目具体是哪种类型,先查看bType确定出主条目、全局条目、局部条目的一种,然后再跟据bTag确定具体的类型。
1. 关于第三章USB鼠标的ReportDescriptor,
从条目前缀结构中可以发现,这一节的条目类型只有这三种(0xC0,唉,对不起你啊):
0x1 --> 00 01 --> 后面跟一字节的(main)主条目
0x5 --> 01 01 --> 后面跟一字节的(Global)全局条目
0x9 --> 10 01 --> 后面跟一字节的(Local)局部条目
2. 然后从条目前缀的结构(高字节),可以看到具体的类型
以0x05,0x01为例(0x05要拆开来看--0x0与0x5):
0x5: 后面跟一字节的(Global)全局条目
0x0: UsePage
0x01: Generic Desktop Controls (这个需要参考:Hut1_12v2.pdf 【HID Usage Tables】)
3. 关于HID描述符中main global local 三者之间的关系
我感觉是这样的: HID中最关键的是main条目,而global local条目是用来描述main条目的。
-
Usage Page (Generic Desktop), 05 01
-
Usage (Mouse), 09 02
-
Collection (Application), A1 01
-
Usage (Pointer), 09 01
-
Collection (Physical), A1 00
-
Usage Page (Buttons), 05 09
-
Usage Minimum (01), 19 01
-
Usage Maximun (03), 29 03
-
Logical Minimum (0), 15 00
-
Logical Maximum (1), 25 01
-
Report Count (3), 95 03
-
Report Size (1), 75 01
-
Input (Data, Variable, Absolute), 81 02
-
Report Count (1), 95 01
-
Report Size (5), 75 05
-
Input (Constant), 81 01
-
Usage Page (Generic Desktop), 05 01
-
Usage (X), 09 30
-
Usage (Y), 09 31
-
Logical Minimum (-127), 15 81
-
Logical Maximum (127), 25 7F
-
Report Size (8), 75 08
-
Report Count (2), 95 02
-
Input (Data, Variable, Relative), 81 06
-
End Collection, C0
-
End Collection C0
3.1 上面是 《Device Class Definition for Human Interface Devices (HID) 》中的一个实例,是usb鼠标的Report Descriptor,按意义表述一下就是:
a. 先定义了一个普通桌面鼠标的应用(大)开集合
b. 再定义用途为指针的(小)开集合
c. 输入button
d. 填充位无实际意义
e. 输入的范围
f. 关闭小集合
g. 关闭大集合
阅读(8581) | 评论(0) | 转发(0) |