最終更新:2014-08-28 (木) 07:39:10 (1603d)  

レポートディスクリプタ/アイテム はてなブックマークを見る

すべてのアイテムは1バイトのプレフィックスを持つ。

  • 05 01  Usage Page (Generic Desktop), ;Use the Generic Desktop Usage Page
  • これはプレフィックス(0x05)が 0000 01 01 なので下記のようになる。
    • bTag = Usage Page (0000)
    • bType = Global (01)
    • bSIze = 1 (01)
    • data0 = 0x01

アイテムタイプ

パース時の動作

  • メインアイテムがでてくると新しいレポート構造が一時状態テーブルに割り当てられる。
    • グローバルアイテムはメインアイテムが出てきても一時状態テーブルに残る。
    • ローカルアイテムはメインアイテムが出てきたら一時状態テーブルから消える。

アイテムの長さ

ショートアイテム (データ長0、1、2、4バイト)

  • データプレフィックス
    ビット32〜3924〜3116〜238〜1576543210
    バイト43210
    フィールドdata4data3data2data1bTagbTypebSize

bType

  • bType値タイプ
    00Main
    01Global
    10Local
    11Reserve

bSize

  • bSize値データサイズ
    000byte
    011byte
    102byte
    114byte

ロングアイテム (データ長最大255バイト)

  • データタグとかプレフィックス
    ビット...16〜238〜1576543210
    バイト3〜258210
    フィールドdatabLongItemTag?bDataSize?11111110
  • 1バイト目 (1111 11 10)
    • bSize=2
    • プレフィックスは0xFEになる
  • 2バイト目 bDataSize?
  • 3バイト目 bLongItemTag?
  • 4バイト目以降 (データ0〜255バイト)

レポートディスクリプタ/メインアイテム

  • レポートタイプの定義とグループ化
    item tagbTagbTypebSize意味bSize=0bSize=1bSize=2bSize=3
    Input100000nn1つ以上の物理的なコントロールが提供するデータに関する情報について記述-0x810x82-
    Output100100nn出力データフィールドを定義するために使用-0x910x92-
    Collection101000nn2 つ以上のデータ(Input、Output あるいは Feature)のグループ化を開始-0xA10xA2-
    Feature101100nnデバイスに送ることができるデバイスコンフィギュレーション情報について記述-0xB10xB2-
    End Collection110000nnCollection に対応し、2 つ以上のデータ(Input、Output あるいは Feature)のグループ化を終了0xC0---

dataのビットマップ (属性)

  • ビット0のとき1のとき説明
    0データ(項目の内容が変更可能)定数項目がR/Wかどうか
    1配列 (変更のあった分のレポートを個数分送る:(サイズ3*nレポート))変数 (すべての状態(サイズ1*8レポート)を一度に送る)レポートの送り方。例は8bitの場合
    2絶対値相対値値が相対値か絶対値か
    3ロールオーバーなし(No Wrap)ロールオーバーあり(Wrap)最大値を超えた場合に最小値にするかどうか。
    4線形非線形
    5優先非優先優先状態(入力がないときのデフォルト状態)の有無
    6Nullデータを不許可Nullデータを許可NULLステート(意味のあるデータを送信していない状態。範囲外のデータを送る)を許可するかどうか
    7変化しない値変化する値(volatile)デバイス自らが値を変更するかどうか
    8ビット単位フィールドバイト単位のバッファ
    9-31Reserved(0)

レポートディスクリプタ/グローバルアイテム

  • データの最大値とかの属性、レポートのサイズや数の指定
  • 続くフィールドのデフォルト属性になる(次の同じ項目が出てくるまで適用される)
  • メインアイテムが出てきても一時状態テーブルに残る。
    item tagbTagbTypebSize意味bSize=0bSize=1bSize=2bSize=3
    Usage Page (必須)000001nn現在の Usage Page を指定している値。アイテム使用法のインデックスを定義-0x050x060x07
    Logical Minimum (必須)000101nn変数または配列のアイテムが報告する最小値。たとえば、0~128 まで X位置価値を報告するマウスは、0 の論理的な最小値をもつ。0x140x150x160x17
    Logical Maximum (必須)001001nn変数または配列のアイテムが報告する最大値。たとえば、0~128 まで X位置価値を報告するマウスは、128 の論理的な最大値をもつ。0x240x250x260x27
    Physical Minimum?001101nn物理的な最小範囲値(論理値xUnit値)0x340x350x360x37
    Physical Maximum010001nn物理的な最大範囲値(論理値xUnit値)0x440x450x460x47
    Unit Exponent010101nn基数を 10 としたときの指数(2 の補数)0x540x550x560x57
    Unit011001nn単位値0x640x650x660x67
    Report Size (必須)011101nnレポートフィールドのサイズをビットで指定する符号なし値0x740x750x760x77
    Report ID100001nnレポート ID を指定する符号なし値0x840x850x860x87
    Report Count (必須)100101nnアイテムのデータフィールド数を指定する符号なし整数
    何個のフィールドがこの特定のアイテムのためにレポートに含められるかを決定する(したがってビットが何個であるかがレポートに付け加えられる)
    0x940x950x960x97
    Push101001nnグローバル・アイテムの状態一覧をスタックに保管0xA40xA50xA60xA7
    Pop101101nnスタックの先頭に保管されているグローバル・アイテムの状態一覧を取り出す0xB40xB50xB60xB7

Logical Max/Min

  • レポート値の上下限を定義
  • 最上位ビットは符号とみなされる。(HID仕様によると最大値は正の値)
  • 最大値を255にしたければbSize=2として0x26 0x00FFとする。

Physical Max/Min

  • Unitタグの定義する単位で表した場合の値の上下限を定義
  • デフォルトはLogicalと同じ値

レポートディスクリプタ/ローカルアイテム

  • 次に出てくるメインアイテムで定義されるフィールドについて記述
  • メインアイテムが出てきたら一時状態テーブルから消える。
    item tagbTagbTypebSize意味bSize=0bSize=1bSize=2bSize=3
    Usage (必須)000010nnアイテムまたはコレクションの用法(Usage)インデックスを定義0x080x090x0A0x0B
    Usage Minimum000110nn配列あるいはビットマップと関連づけた用法(Usage)の開始を定義0x180x190x1A0x1B
    Usage Maximum001010nn配列あるいはビットマップと関連づけた用法(Usage)の終了を定義0x280x290x2A0x2B
    Designator Index001110nnフィジカルディスクリプタのID0x380x390x3A0x3B
    Designator Minimum010010nn配列あるいはビットマップと関連づけた Designator の開始インデックスを定義0x480x490x4A0x4B
    Designator Maximum010110nn配列あるいはビットマップと関連づけた Designator の終了インデックスを定義0x580x590x5A0x5B
    String Index011110nnストリングディスクリプタのID0x780x790x7A0x7B
    String Minimum100010nn配列またはビットマップのコントロールに対して、ひとまとまりの連続するストリングを割り付けるときの始めのストリングのインデックス0x880x890x8A0x8B
    String Maximum100110nn配列またはビットマップのコントロールに対して、ひとまとまりの連続するストリングを割り付けるときの終わりのストリングのインデックス0x980x990x9A0x9B
    Delimiter101010nnローカルアイテムの開始か終了を定義0xA80xA90xAA0xAB

Usage Max/Min

  • 一連のUsage IDを一連の配列またはビットマップ中の要素に割り当てることができる

参考