HID設備,即人機交互設備,常見的有鼠標,鍵盤,游戲手柄,等等。一般有線方式都是通過USB連線連接到機器設備,作為用戶輸入設備。在藍牙技術中,HID設備的接入就是無線的了。不過HID的相關定義當然還是一樣的,不然設備驅動,兼容等問題都會有很多麻煩了。藍牙中有HID, HOGP profile,但是只是在藍牙數據通信上做的規范,HID具體含義相關,還是需要看USB相關的HID文檔。
USB設備可以在啟動時,或者是在之後的連接狀態下,都能夠被主機進行配置。USB設備種類是非常多的,前面只列舉了皮毛,而眾多的USB設備之間差異化還是特別大的,這樣的情況,就會增大開發的難度,因為幾乎每類USB設備都得重新對其進行規范和定義了。於是,設備類被提出,就是將眾多的USB設備進行大類的劃分,這樣,每個大類中的USB設備之間就可以抽離出許多共性的東西,那樣就減少了許多的重復定義和開發工作了,那具體的HID設備到底都被劃分成了哪些大類呢?請看如下:
之所以單獨定義了HID設備類,除了上面的原因,還有如下:
- 盡量節省設備數據空間(應當是通過定義簡單的字節流,來表示比較復雜的內涵……)
- 允許Application跳過無用信息(不遵循HID設備類定義設備,HID App當然沒必要關注)
- 可擴展,且穩定
- 支持嵌套(nesting)和集合(collection)(用類的方式來定義,當然就具有了集合,分層等屬性咯)
- 運行通用應用的自描述(這個應當就是指的descriptor的管理方式了)
USB設備一般會同時有多個連接到一台機器,那每個設備應當有自己的自描述,因此主機就知道如何區分某個設備了。這些字描述信息,會存放在設備的掉電不失的存儲區,稱為descriptor,被翻譯為描述符。這些descriptor有不止一種,如report,physical等:
Report descriptor描述的是該HID設備會產生的一些數據(格式,含義等等),Physical descriptor描述的是使用者人的一些信息:
對USB HID設備而言,Descriptor的框架如下: