HID over なんとかの一覧
結構いっぱいあるな。。
一瞬HID over MIDIを作ろうと思ったけど、やっぱりKey on/Key off等正常なMIDIメッセージにマップしといた方が既存のMIDIメッセージ加工ツールを使えるので没に。
HID over USB
一応原規格だよね。。?
Low speed USBデバイスは一パケットあたり8バイトまでしか同時に扱えないが、パケットの分割を許可することでこれに対応している。
Bluetooth上のHID
USB同様、Bluetooth上のHID規格も共著になっている。HID自体はMSが設計したプロトコルだと思うけど、USBやBluetoothでは東芝のようなインターフェースベンダやDECのような最終製品のベンダも著者に入っている。
HIDプロファイル
レガシーなBluetoothにおけるHIDはHIDプロファイルでサポートされる。
仕様がかなりの大作で100ページ以上ある。(元のHID over USBが97ページ)
HID over GATT プロファイル (HOGP)
Bluetooth LEでは、GATTプロファイルを使用した HOGP として提供される。
コネクションの確立といった処理はGATT側で規定されるため、仕様書は38ページとかなりコンパクトになっている。
HID over SPI
2019年にfirst draftとかなり新しいプロトコルになっている。MSがin-boxドライバでサポートするHID実装としては現状最もあたらしい。
SPIはHIDが実装されているバスの中では最も低機能だが、常識的な実装であることは要求している(バイト単位のトランスポートでなければならない)。いわゆるDual-SPIやQuad-SPIも想定している; パディングが 8クロック と規定されているため、Dual-SPIやQuad-SPIではパディングの長さを延長しなければならない。
バス上でのディスカバリプロトコルは規定されないので、ACPIテーブルに存在を記述しておく必要がある。
ACPIがバイトコードインタプリタを持っていることを生かして、リセットについては専用のメソッドをACPIテーブル側に持たせる想定になっている(_RST
ACPI 6.0 7.3.25)。また、GPIOへの割り込み線の接続や、SPIのクロック極性(いわゆるmode)の指定もACPI経由で行う。
HID over I2C
割と最近は採用例の多いHID over I2C。2010年にドラフトされた比較的新しいトランスポートではある。
なぜか仕様へのリンクが無い。。word形式の仕様書が公開されている。
SPI同様に、割り込み線の接続についてはACPI側に記述する。リセットは通常のI2Cメッセージとして実施する。
謎
- ベンダーID / プロダクトIDはUSB以外の仕様でも要求されている。 ... 名前空間は規定が無い。たぶんUSBのを流用せよということだと思うが。。
- 何故かHID over UARTは存在しない。 (一部のデバイスでは "Serial HID" というのが存在するらしいが。。)
HIDプロトコルのバインディング
libhid
... 消えた。。?
WindowsのHIDインターフェース
hidapiでwrapされている。
hidapi
WebHID