最終更新:2018-05-18 (金) 15:14:00 (2311d)
USB/リクエスト
メモ
種類
- bmRequestTypeで判定する。
- USB/標準リクエスト - エンドポイント0のコントロール転送を使って行う標準のリクエスト
- USB/クラスリクエスト - USBクラス毎
- USB/ベンダリクエスト - ベンダ毎に規定
リクエストの構成
bmRequestType
- リクエストの性質を表す
ビット 意味 値 7 データ転送方向 0: ホストからデバイス
1: デバイスからホスト6 リクエストタイプ 0: 標準リクエスト
1: USB/クラスリクエスト
2: USB/ベンダリクエスト
3: Reserved5 4 リクエストの対象 0: デバイス
1: インターフェイス
2: エンドポイント
3: Other
4~31: Reserved3 2 1 0
例
16進 10進 2進 方向 (bit7) タイプ(bit5-6) 対象(bit0-4) 0x21 33 00100001 0 Host to Device 01 Class Request 0001 Interface 0xA1 161 10100001 1 Device to Host 01 Class Request 0001 Interface 0x40 64 01000000 0 Host to Device 10 Vendor Request 0000 Device 0xC0 192 11000000 1 Device to Host 10 Vendor Request 0000 Device
USB/標準リクエスト
- bmRequestTypeの5,6ビット目が0x00
- エンドポイント0のコントロール転送を使って行うリクエスト
bRequestの値 bRequest 機能 0x00 GET_STATUS エンドポイント等のステータス取得 0x01 CLEAR_FEATURE 特定の機能をクリア。ストール解除など 0x02 Reserved 0x03 SET_FEATURE リモートウェィクアップなどの機能を設定 0x04 Reserved 0x05 SET_ADDRESS デバイスのアドレスを設定 0x06 GET_DESCRIPTOR ディスクリプタを取得 0x07 SET_DESCRIPTOR? ディスクリプタを変更 0x08 GET_CONFIGURATION 現在のコンフィギュレーション番号取得 0x09 SET_CONFIGURATION コンフィギュレーション番号設定 0x0A GET_INTERFACE? 現在の代替インタフェース番号を取得 0x0B SET_INTERFACE インタフェースを設定 0x0C SYNC_FRAME? パターン同期のアイソクロナス転送で使用される、パターン開始番号取得要求
USB 3.0で追加
0x30 SET_SEL SEL(System Exit Latency)、電源状態U1,U2からの復帰時間の設定 0x31 SET_ISOCH_DELAY ホストがパケット送出してからデバイスが受信するまでの遅延時間の設定
USB/クラスリクエスト
- bmRequestTypeの5,6ビット目が0x01
HID/クラスリクエスト
bRequestの値 bRequest 0x01 GET_REPORT コントロール転送を使い、デバイスから USB ホストに HID データを転送要求 0x02 GET_IDLE インタラプトINの間隔(アイドルレート)の現在値を報告要求 0x03 GET_PROTOCOL? 現在選択されているプロトコル(ブートプロトコルまたはレポートプロトコル)を報告要求 0x09 SET_REPORT コントロール転送を使い、USB ホストからデバイスに HID データを転送 0x0A SET_IDLE インタラプトINの間隔を設定 0x0B SET_PROTOCOL? 使用するプロトコル(ブートプロトコルまたはレポートプロトコル)を設定
UVC/クラスリクエスト
ベンダリクエスト
- bmRequestTypeの5,6ビット目が0x02