HID 类特定请求
2021-11-26
6952
11
HID是USB的一个分支,所以当然也支持相应的USB标准请求,如GET_DESCRIPTOR、SET_CONFIGURATION等,也支持自己特有有的一些类特定类请求(Class-Specific Requests)。
USB标准请求的数据结构
USB标准请求的个字节分为5个部分,其变量哉分别定义为: 1字节的bmRequestType,1 字节的bReqest,2字节的wValue,2字节的wIndex和2字节的wLength.
1字节 | 1字节 | 2字节 | 2字节 | 2字节 |
---|---|---|---|---|
bmRequestType(1) | bRequest(1) | wValue(2) | wIndex(2) | wLength(2) |
HID 类特定请求
我们知道,当bmRequestType字段的D6-D5,命令的类型为01时,表示类请求命令。
- D6-D5,命令的类型
- 00 = 标准请求命令
- 01 = 类请求命令
- 10 = 用户定义的请求命令
- 11 = 保留
HID支持的类特定请求bRequest包括:
bRequest | 值 |
---|---|
GET_REPORT (1) | 0x01 |
GET_IDLE | 0x02 |
GET_PROTOCOL(2) | 0x03 |
Reserved | 0x04-0x08 |
SET_REPORT | 0x09 |
SET_IDLE | 0x0A |
SET_PROTOCOL (2) | 0x0B |
- (1):所有设备支持
- (2):仅用于boot device
bmRequestType(1) | bRequest(1) | wValue(2) | wIndex(2) | wLength(2) | 数据过程 |
---|---|---|---|---|---|
0xa1 | GET_IDLE(2) | 高字节报告类型(01:输入;02:输出,03:特性),低字节为报告ID. | 接口ID | 数据长度 | 数据 |
0xa1 | GET_REPORT(1) | 高字节报告类型(01:输入;02:输出,03:特性),低字节为报告ID. | 接口ID | 数据长度 | 数据 |
0xa1 | GET_PROTOCOL(3) | 0 | 接口ID | 1 | 0表示引导协议,为1表示报告协议 |
0x21 | SET_REPORT(9) | 高字节报告类型(01:输入;02:输出,03:特性),低字节为报告ID. | 接口ID | 数据长度 | 数据 |
0xa1 | SET_PROTOCOL(0b) | 数据为0表示引导协议,为1表示报告协议 | 接口ID | 0 | 无数据 |
0x21 | SET_IDLE(0a) | 高字节用于指定空闲速率,以4ms为单位,可选的值为4ms~1020ms,低字节为ReportId | 接口ID | 0 | 无数据 |
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936