HID描述符的内容
发布时间:2008/12/26 0:00:00 访问次数:567
设备与配置描述符不具有hid规范的信息。其中,设备描述符包含了群组码的字段,但是它却不是设各被定义为hid设备的字段位置 ;相反,接口描述符使主机更适当地学习与了解设备,其中,设备接口设置属于hid群组。若设备描述符的群组码的字
段设置为0x00,以及接口描述符的接口群组字段设置为0x03,则此设各属于hid群组设备。若是属于hid设备,就须额外再设置hid群 组描述符与报告描述符。所新增的描述符类型,如表1所列.
在这接口描述符中,包含了hid规范信息的其他字段是次群组与协议字段,其可用来设置为启动接口(boot interface)。
表1 hid描述符的类型值
1.设备描述符
【程序范例】设各描述符的范例程序代码
db ooh ;产品的字符串描述符索引
db ooh ;设备序号的字符串描述符索引(0=none)
db 01h ;配置数目(1)
2.配置描述符
【程序范例】配置描述符程序的范例
oonfig_desc_table:
db 09h ;长度大小(9字节)
db 02h ;描述符类型,2代表配置
db 22h,ooh ;描述符的总长度(34字节)(包括配置描述符9字节;接口描述符9字节,端点描述符7字节与群组描述符
;9字节)。在这例子中,总长度为34字节
db 01h ;用来配置的接口的数目
db 01h ;配置值
db ooh ;配置的字符串描述符的索引
db 80h ;配置的属性(仅具有总线供电特性)
db 32h ;最大电源以2 ma为单位,在这例子中,32h×2ma=100 ma
3.接口描述符
【程序范例】接口描述符程序的范例
interface_descriptor:
db 09h ;长度大小(9字节)
db 04h ;描述符类型,4代表接口
db ooh ;接口数目以0为基值
db ooh ;交互设置值为o
db olh ;端点数目设置为1
db 03h ;接口群组,usb规范定义hid码为3
db ooh ;接口次群组,usb规范定义为1
db ooh ;接口协议,usb规范定义摇杆为0
db 00h ;接口的字符串描述符的索引,在这例子中,用户没有字符串描述符
4.端点描述符
【程序范例,端点描述符程序的范例
endpoint_descriptor:
db 07h ;长度大小(7字节)
db 05h ;描述符类型,5代表端点(1字节)
db 81h ;端点地址,在这个例子中,端点编号为1且为in端点
db 03h ;传输类型的属性设置为中断传输(0=控制
;1=实时,2=批量,3=中断)
db 06h, oohdb ;最大封包大小设置为6字节
db 0ah ;以ms为单位的轮询间隔,在此设置为l0 ms
5.群组描述符
【程序范例】群组描述符程序的范例
class_descriptor:
db 09h ;长度大小(9字节)
db 21h ;描述符形态为hid,设置为0x21
db ooh,01h ;hid群组序列为oxloo,即为1.00
db ooh ;无区域的国码,就设置为0
db 01h ;需遵循的hid群组报告的数目,至少需设为
;1,也就是以下的报告描述符
db 22h ;描述符类型为报告,设置为uxll
db (end_hid_report_desc ̄tabl_hid_report_desc_table)
;报告描述符的长度
db ooh
end_config ̄desc_table:
其中,需要特别注意的是端点描述符。之前曾提及到,每一个设备至少包含两个(含两个)以上的端点。控制传输使用了预设的端 点(端点0),而用户无须再设置自己的控制端点描述符,且总是被使能的。但在另一个中断端点的描述符中,设置了端点的数目与 方向、所使用的传输类型(中断),以及针对每一个数据交换所能传输的最大的封包大小(全速设置为64字节,慢速设置为8字节) 。当然,还有一项最重要的参数就是每一次主机在数据交换之间隔所轮询的时间间隔(全速设置为1 ms,慢速设置为lo ms)。
此外,在群组描述符中,说明了此群组为hid群组、hid的规范为1.0及一个报告描述符。而前面曾提及过,hid设各必须包含一个( 或超过一个)报告描述符。这些描述符在主机已经辨识(设各列举)此设备为hid群组后,将会被请求传回来,并设置驱动程序来加 以控制。
再者,hid能通过设备的控制端点与一个(或超过一个)中断端点来执行数据的传送与接收的工作。但是hid是无法提供usb的批量 与等时传输。
设备与配置描述符不具有hid规范的信息。其中,设备描述符包含了群组码的字段,但是它却不是设各被定义为hid设备的字段位置 ;相反,接口描述符使主机更适当地学习与了解设备,其中,设备接口设置属于hid群组。若设备描述符的群组码的字
段设置为0x00,以及接口描述符的接口群组字段设置为0x03,则此设各属于hid群组设备。若是属于hid设备,就须额外再设置hid群 组描述符与报告描述符。所新增的描述符类型,如表1所列.
在这接口描述符中,包含了hid规范信息的其他字段是次群组与协议字段,其可用来设置为启动接口(boot interface)。
表1 hid描述符的类型值
1.设备描述符
【程序范例】设各描述符的范例程序代码
db ooh ;产品的字符串描述符索引
db ooh ;设备序号的字符串描述符索引(0=none)
db 01h ;配置数目(1)
2.配置描述符
【程序范例】配置描述符程序的范例
oonfig_desc_table:
db 09h ;长度大小(9字节)
db 02h ;描述符类型,2代表配置
db 22h,ooh ;描述符的总长度(34字节)(包括配置描述符9字节;接口描述符9字节,端点描述符7字节与群组描述符
;9字节)。在这例子中,总长度为34字节
db 01h ;用来配置的接口的数目
db 01h ;配置值
db ooh ;配置的字符串描述符的索引
db 80h ;配置的属性(仅具有总线供电特性)
db 32h ;最大电源以2 ma为单位,在这例子中,32h×2ma=100 ma
3.接口描述符
【程序范例】接口描述符程序的范例
interface_descriptor:
db 09h ;长度大小(9字节)
db 04h ;描述符类型,4代表接口
db ooh ;接口数目以0为基值
db ooh ;交互设置值为o
db olh ;端点数目设置为1
db 03h ;接口群组,usb规范定义hid码为3
db ooh ;接口次群组,usb规范定义为1
db ooh ;接口协议,usb规范定义摇杆为0
db 00h ;接口的字符串描述符的索引,在这例子中,用户没有字符串描述符
4.端点描述符
【程序范例,端点描述符程序的范例
endpoint_descriptor:
db 07h ;长度大小(7字节)
db 05h ;描述符类型,5代表端点(1字节)
db 81h ;端点地址,在这个例子中,端点编号为1且为in端点
db 03h ;传输类型的属性设置为中断传输(0=控制
;1=实时,2=批量,3=中断)
db 06h, oohdb ;最大封包大小设置为6字节
db 0ah ;以ms为单位的轮询间隔,在此设置为l0 ms
5.群组描述符
【程序范例】群组描述符程序的范例
class_descriptor:
db 09h ;长度大小(9字节)
db 21h ;描述符形态为hid,设置为0x21
db ooh,01h ;hid群组序列为oxloo,即为1.00
db ooh ;无区域的国码,就设置为0
db 01h ;需遵循的hid群组报告的数目,至少需设为
;1,也就是以下的报告描述符
db 22h ;描述符类型为报告,设置为uxll
db (end_hid_report_desc ̄tabl_hid_report_desc_table)
;报告描述符的长度
db ooh
end_config ̄desc_table:
其中,需要特别注意的是端点描述符。之前曾提及到,每一个设备至少包含两个(含两个)以上的端点。控制传输使用了预设的端 点(端点0),而用户无须再设置自己的控制端点描述符,且总是被使能的。但在另一个中断端点的描述符中,设置了端点的数目与 方向、所使用的传输类型(中断),以及针对每一个数据交换所能传输的最大的封包大小(全速设置为64字节,慢速设置为8字节) 。当然,还有一项最重要的参数就是每一次主机在数据交换之间隔所轮询的时间间隔(全速设置为1 ms,慢速设置为lo ms)。
此外,在群组描述符中,说明了此群组为hid群组、hid的规范为1.0及一个报告描述符。而前面曾提及过,hid设各必须包含一个( 或超过一个)报告描述符。这些描述符在主机已经辨识(设各列举)此设备为hid群组后,将会被请求传回来,并设置驱动程序来加 以控制。
再者,hid能通过设备的控制端点与一个(或超过一个)中断端点来执行数据的传送与接收的工作。但是hid是无法提供usb的批量 与等时传输。
上一篇:HID版本修订的相容性
上一篇:识别HID设备