在dt.exe 的界面左侧 HID Items 栏中是一系列的 Item,通过双击需要的 Item 添加到右侧 Report Descriptor 中。添加过程中该工具会根据不同的 Item 让你选择或者填入值。以HID 报告描述符一文为例 USAGE_PAGE ( Consumer Devices) USAGE ( Consumer Control) COLLECTION ( Application) REPORT_ID ( 1) LOGICAL_MI...
USB 官网提供一个可以生成 HID 报告描述符的工具:https://usb.org/document-library/hid-descriptor-tool,我们采用该工具的方法来描述 Item,针对不同的 Item 都有对应的标准功能名称,然后用 ITEM_FUNC ( Value) 来进行描述,常见的 ITEM_FUNC 如下,更多的请参考 dt 工具。 Main Item Input: INPUT Output: OUTP...
在USB中,USB HOST是通过各种描述符来识别设备的,有设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等。USB报告描述符(Report Descriptor)是HID设备中的一个描述符,它是比较复杂的一个描述符。 USB HID设备是通过报告来给传送数据的,报告有输入报告和输出报告。输入报告是USB设备发送给主机...
//报告大小(即这个字段的宽度)为1bit,所以前面的逻辑最小值为0,逻辑最大值为1 0x75, 0x01,// REPORT_SIZE (1) //报告的个数为8,即总共有8个bits 0x95, 0x08,// REPORT_COUNT (8) //输入用,变量,值,绝对值。像键盘这类一般报告绝对值, //而鼠标移动这样的则报告相对值,表示鼠标移动多少 0x81,...
//该报告描述符号由HID Descriptor tool生成 以下是一个USB鼠标的报告描述符 code char MouseReportDescriptor[63] = { 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x06, // USAGE (Keyboard) 0xa1, 0x01, // COLLECTION (Application) 这就是一个MAIN Item,可以对应上图查看 ...
Array/Variable:主项目之数据的每个字段可以表示几个不同的操作的其中一个被触发(设为Array),或是每个字段仅表示一个操作 (设为Variable)。如果是Variable,则Report Count 的数据值等于报告数据的字段数。若是Array,则Report Count 的数据值表示可以同时被触发的最多操作数目。后文中键盘之例会解说Array 的用法。
而其他的描述符,如字符串描述符(strtng descriptor)、 数种不同的群组描述符(class descriptor)以及报告描述符(report descriptor)则可以根据不同的设备加以添加或删减。 报告描述符是HID用来 数据传输(data transfer),是对这些传输的数据作用途(usage)上的说明。
下面通过由HID Descriptor tool生成的USB鼠标和USB键盘来说明一下报告 描述符和报告。 codecharKeyBoardReportDescriptor[63] = { //表示用途页为通用桌面设备 0x05, 0x01,// USAGE_PAGE (Generic Desktop) //表示用途为键盘 0x09, 0x06,// USAGE (Keyboard) ...
在主机Get_Descriptor请求中,当值字段的高位字节为0x21时,表示主机要求获得HID描述符;当值字段高字节为0x22时,就是主机要求获得报告描述符。对于报告描述符,可以参考HID Usage Tables规范。HID Descriptor Tool工具可以帮助建立和测试编写的报告描述符。这里定义了一个输入和输出64字节数据的报告描述符。
BLE这边叫做Report Map,而传统的USB的HID那边叫做Report Descriptor,就是上面那张01 06表 Report Reference Characteristic Descriptor 是BLE这边来设置report元数据的方式; 有(Input/Output/Feature) and ID of a report. Report Map: what the USB HID calls Report Descriptor. ...