21,597
社区成员
发帖
与我相关
我的任务
分享
__align(4) LOCAL const USB_HID_REPORT_DESCRIPTOR_T s_UHID_ReportDescr =
{
// 每行开始的第一字节为该条目的前缀,前缀的格式为:
// D7~D4:bTag。D3~D2:bType;D1~D0:bSize。以下分别对每个条目注释。
// 这是一个全局(bType为1)条目,将用途页选择为普通桌面Generic Desktop Page。
// 后面跟1字节数据(bSize为1),后面的字节数就不注释了,自己根据bSize来判断。
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
// 这是一个局部(bType为2)条目,用途选择为0x00。在普通桌面页中,
// 该用途是未定义的,如果使用该用途来开集合,那么系统将不会把它
// 当作标准系统设备,从而就成了一个用户自定义的HID设备。
0x09, 0x00, // USAGE (0)
// 这是一个主条目(bType为0)条目,开集合,后面跟的数据0x01表示
// 该集合是一个应用集合。它的性质在前面由用途页和用途定义为
// 用户自定义。
0xa1, 0x01, // COLLECTION (Application)
// 这是一个全局条目,说明逻辑值最小值为0。
0x15, 0x00, // LOGICAL_MINIMUM (0)
// 这是一个全局条目,说明逻辑值最大为255。
0x25, 0xff, // LOGICAL_MAXIMUM (255)
// 这是一个局部条目,说明用途的最小值为1。
0x19, 0x01, // USAGE_MINIMUM (1)
// 这是一个局部条目,说明用途的最大值8。
0x29, 0x08, // USAGE_MAXIMUM (8)
// 这是一个全局条目,说明数据域的数量为八个。
0x95, 0x08, // REPORT_COUNT (8)
// 这是一个全局条目,说明每个数据域的长度为8bit,即1字节。
0x75, 0x08, // REPORT_SIZE (8)
// 这是一个主条目,说明有8个长度为8bit的数据域做为输入。
0x81, 0x02, // INPUT (Data,Var,Abs)
// 这是一个局部条目,说明用途的最小值为1。
0x19, 0x01, // USAGE_MINIMUM (1)
// 这是一个局部条目,说明用途的最大值8。
0x29, 0x08, // USAGE_MAXIMUM (8)
// 这是一个主条目。定义输出数据(8字节,注意前面的全局条目)。
0x91, 0x02, // OUTPUT (Data,Var,Abs)
// 下面这个主条目用来关闭前面的集合。bSize为0,所以后面没数据。
0xc0 // END_COLLECTION
};