HID描述符的內容
發布時間:2008/12/26 0:00:00 訪問次數:560
設備與配置描述符不具有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設備