花了两天的时间来看报告描述符,根据hid1.1和一些网络上的相关资料,勉强看懂了一部分。
原先的时候,抓不住核心,有资料就看,后面才大致清晰了报告描述符到底怎样编排工作的。
一下资料都来自于网络,不过经过自己的加工整合。
报告描述符的语法不同于USB标准描述符,它是以项目(items)方式排列而成,无一定的长度;项目有一个前辍(prefix),然后跟着一个括号,内为该项目的数据。
报告描述符多以短项目居多,这里以短项目为例。8位 8位
item = prefix + data
若干个 item 就构成了一个报告描述符。
prefix : bTag bType bSize
项目前缀: 7 6 5 4 3 2 1 0
bType: 00 主项目 01 全局项目 10区域项目
bType btag 问号代表低四位,即bType+bSize,自己去组合吧。
主项目 : Input 0x8?
Output 0x9?
Feature 0xb?
Collection 0xa1
End Collection 0xc0
全局项目 Usage Page 0x0?
Logical Minimum 0x1?
Logical Maxinum 0x2?
Maxinum Physical 0x3?
Physical Minimum 0x4?
Unit Exponent 0x5?
Unit 0x6?
Report Size 0x7?
Report ID 0x8?
Report Count 0x9?
Push 0xa?
Pop 0xb?
区域项目 Usage 0x0?
Usage Minumum 0x1?
Usage Maximum 0x2?
主项目: 用来定义报告中数据的种类和格式,而说明主项目之意义与用途为全局项目和区域项