HID全局条目ReportId
2021-08-17
3084
530
大多数设备都是通过一个数据报告给主机的,但也可以通过ReportId实现实现一个设备返回多个数据报告。
例如,带有触摸设备的键盘可以独立报告同一端点上的“按键”数据和“指点”数据。ReportId用于区分不同的数据。
Report ID固定为1字节长度,在数据传输前位数据的头部。如果报告描述符中不存在ReportID,则可以认为只有一个输入、输出和特征报告,并且它们一起代表所有设备数据。
- ReportId是多个数据的标识信息,用于区分多个相同类型的报告内容。
- ReportId位于数据之前。
- ReportId是global item,所以一旦使用,其作用于后续的所有item,除非遇到一个新的ReportId.
- ReportId可以不定进,默认的ReportId=0,但在使用ReportId定义ReportId时,不能定义一个ReportId=0的ReportId,不同类型的数据报告(输入、输出、特性)的ReportId可以重复,但同类型内的不可重复。
- HID使用SET_REPORT和GET_REPORT进行报告数据的传输。在标准请求的wIndex的低字节指定了ReportId的值。在中断传输过程中,如果接口支持一个以上的ReportId,则ReportId必须是数据传输数据包的第一个字节。如果接口只支持一个即未定义ReportId=0的ReportId,则ReportId不能出现在数据传输的第一个字节,而是实际的报告数据。
只有输入报告是通过中断输入管道发送的。 Feature和输出报告必须由主机通过控制端点或可选的中断输出端点进行传输。所以中断输出端点是可选的。
- Configuration descriptor
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936