V-USB を使ってHIDデバイスを作る。

* なぜHIDか
USBデバイスを作る時、様々な形態が考えられる。
[[V-USBのドキュメント>http://vusb.wikidot.com/usb-device-classes]]によれば、例として次のような物がある。
<@list>
Custom class devices
Standard HID class device
Custom HID class device
Vendor type requests sent to custom HID class device
CDC class devices
Other classes
</@list>
本稿では、このうち「Custom HID class device」をオススメする。
HIDデバイスを作るメリットデメリットについても、[[V-USBのドキュメント>http://vusb.wikidot.com/usb-device-classes]]に記述がある。
(訳は筆者)
<@list>
メリット
 Windowsではドライバが不要で、そのためインストールが不要
デメリット
 やりとりするデータはReportDescriptorで宣言される必要がある。そのためデータは固定長である必要がある。
  先頭にサイズを入れる事によって回避できる。AVR-Doperプロジェクトを見よ。
 BSDなどのOSでは、OSがHIDデバイスを管理しているためlibusbが使えない。
 WindowsとUNIX系OSでHIDを使うためのAPIが違う。Windowsではlibusbが使えない。
 複雑になる。
</@list>
このように列挙するとデメリットの方が多いように見える。
しかし、これらのデメリットはそれぞれ解決できる。
1つ目のデメリットはドキュメントにもあるように先頭にサイズを入れればよい。
2つ目のデメリット、3つ目のデメリットについては、それぞれのOSでソフトウエアを作りなおさなければならない事を意味するが、一方でほとんどのOSでのHID操作APIは(USBを生で扱うAPIに比べれば)簡単になっており、また、各OSのHIDを抽象化するライブラリを作る事も可能ではないかと思われる。
3つ目のデメリットである実装が複雑になる点については、本稿で解説を行う。

* USBデバイスの作成(ソフトウエア編)

** V-USBの入手

http://www.obdev.at/products/vusb/index.html

For Me

Recent