UHID(4) | FreeBSD Kernel Interfaces Manual | UHID(4) |
名称
uhid — USB 一般的な HID サポート書式
このドライバをカーネルにコンパイルするためには、次の行を利用者のカーネル設定ファイルに置きます:
device uhid
もう一つの方法として、ブート時にモジュールとしてドライバをロードするためには、次の行を loader.conf(5) に置きます:
uhid_load="YES"
解説
uhid ドライバは特別のドライバを持っていない USB デバイスのすべての HID (Human Interface Device) インタフェースのサポートを行ないます。デバイスは次の ioctl(2) 呼び出しを操作します。
- USB_GET_REPORT_ID ( int)
- この HID レポートで使用されるレポート識別子を取得します。
- USB_GET_REPORT_DESC ( struct usb_ctl_report_desc)
-
HID レポート記述子を取得します。この記述子を使用して、デバイスからのデータ/デバイスへのデータの正確なレイアウトと意味を見つけることができます。なんの処理もなしでレポート記述子は配信されます。
struct usb_ctl_report_desc { int ucrd_size; u_char ucrd_data[1024]; /* 詰められたデータのサイズは 異なる */ };
- USB_SET_IMMED ( int)
- 各 read(2) が入力レポートの現在の値を返すモードにデバイスを設定します。通常、 read(2) はデバイスが割り込みパイプについてレポートするデータだけを返します。デバイスがこの機能をサポートしないなら、この呼び出しは失敗します。
- USB_GET_REPORT ( struct usb_ctl_report)
-
割り込みパイプに関するデータを待たないで、デバイスからレポートを取得します。
report フィールドは、どのレポートが要求されるかを示します。それは、
UHID_INPUT_REPORT,
UHID_OUTPUT_REPORT,
UHID_FEATURE_REPORT であるべきです。デバイスがこの機能をサポートしないなら、この呼び出しは失敗します。
struct usb_ctl_report { int ucr_report; u_char ucr_data[1024]; /* 使用されたデータサイズは 異なる */ };
- USB_SET_REPORT ( struct usb_ctl_report)
- デバイスにレポートを設定します。 report フィールドは、どのレポートが設定されるかを示します。それは、 UHID_INPUT_REPORT, UHID_OUTPUT_REPORT, UHID_FEATURE_REPORT であるべきです。デバイスがこの機能をサポートしないなら、この呼び出しは失敗します。
デバイスからデータを取得するために、 read(2) を使用します。データはレポート記述子によって定められたサイズのかたまりで読み込まれているべきです。
データをデバイスに送るために write(2) を使用します。データはレポート記述子によって定められたサイズのかたまりで書き込まれているべきです。
関連ファイル
- /dev/uhid?
歴史
uhid ドライバは、 NetBSD 1.4 で登場しました。このマニュアルページは、2002 年 4 月に <trhodes@FreeBSD.org>によって NetBSD から導入されました。November 22, 2006 | FreeBSD |