2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > HID 报告描述符的填充方式

HID 报告描述符的填充方式

时间:2019-04-06 14:26:07

相关推荐

HID 报告描述符的填充方式

前言

本文结合博文:/tutorial-about-usb-hid-report-descriptors/

以及实践,介绍HID 报告描述符的编写过程中使用的两种方法。

案例需求

实现一个按键的HID报告描述符:包括三个按键。需要实现发送按钮的数据给主机;使用一个位(bit)来代表一个按钮。

使用C语言来描述,可以看成是C语言的结构体:

struct mouse_report_t{uint8_t buttons;}

在内存空间可以看成是:

第一种填充方式

将Usage 填充到0~2 位,由于3~7位并没Usage,故在后面补上5bit的内存空间,形成一个字节对齐。之后就可以通过向0~2位写值,然后报告给主机。

USAGE_PAGE (Button)

USAGE_MINIMUM (Button 1)

USAGE_MAXIMUM (Button 3)

LOGICAL_MINIMUM (0)

LOGICAL_MAXIMUM (1)

REPORT_COUNT (3)

REPORT_SIZE (1)

INPUT (Data,Var,Abs)

REPORT_COUNT (1)

REPORT_SIZE (5)

INPUT (Cnst,Var,Abs)

第二种填充方式

将Usage 填充到0~2 位,由于3~7位并没Usage,故在后面补上5bit的内存空间,形成一个字节对齐。之后主机通过0~2位读取值。

USAGE_PAGE (Button)

USAGE (Button 1)

USAGE (Button 2)

USAGE (Button 3)

LOGICAL_MINIMUM (0)

LOGICAL_MAXIMUM (1)

REPORT_COUNT (3)

REPORT_SIZE (1)

INPUT (Data,Var,Abs)

REPORT_COUNT (1)

REPORT_SIZE (5)

INPUT (Cnst,Var,Abs)

总结

本文主要用于记录有常用到的两种填充HID描述的方式,对于案例的具体实现可以参考另一篇有趣的博文:/tutorial-about-usb-hid-report-descriptors/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。