最終更新:2014-08-28 (木) 07:39:10 (3754d)
レポートディスクリプタ/アイテム
Top / レポートディスクリプタ / アイテム
すべてのアイテムは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
アイテムタイプ
アイテムタイプ 用途 タグの種類 レポートディスクリプタ/メインアイテム データの種類や集合を定義 5種類 レポートディスクリプタ/グローバルアイテム データを記述 12種類 レポートディスクリプタ/ローカルアイテム 特性を定義 10種類
パース時の動作
- メインアイテムがでてくると新しいレポート構造が一時状態テーブルに割り当てられる。
- グローバルアイテムはメインアイテムが出てきても一時状態テーブルに残る。
- ローカルアイテムはメインアイテムが出てきたら一時状態テーブルから消える。
アイテムの長さ
ショートアイテム (データ長0、1、2、4バイト)
データ プレフィックス ビット 32〜39 24〜31 16〜23 8〜15 7 6 5 4 3 2 1 0 バイト 4 3 2 1 0 フィールド data4 data3 data2 data1 bTag bType bSize
bType
bType値 タイプ 00 Main 01 Global 10 Local 11 Reserve
bSize
bSize値 データサイズ 00 0byte 01 1byte 10 2byte 11 4byte
ロングアイテム (データ長最大255バイト)
- 1バイト目 (1111 11 10)
- bSize=2
- プレフィックスは0xFEになる
レポートディスクリプタ/メインアイテム
- レポートタイプの定義とグループ化
item tag bTag bType bSize 意味 bSize=0 bSize=1 bSize=2 bSize=3 Input 1000 00 nn 1つ以上の物理的なコントロールが提供するデータに関する情報について記述 - 0x81 0x82 - Output 1001 00 nn 出力データフィールドを定義するために使用 - 0x91 0x92 - Collection 1010 00 nn 2 つ以上のデータ(Input、Output あるいは Feature)のグループ化を開始 - 0xA1 0xA2 - Feature 1011 00 nn デバイスに送ることができるデバイスコンフィギュレーション情報について記述 - 0xB1 0xB2 - End Collection 1100 00 nn Collection に対応し、2 つ以上のデータ(Input、Output あるいは Feature)のグループ化を終了 0xC0 - - -
dataのビットマップ (属性)
ビット 0のとき 1のとき 説明 0 データ(項目の内容が変更可能) 定数 項目がR/Wかどうか 1 配列 (変更のあった分のレポートを個数分送る:(サイズ3*nレポート)) 変数 (すべての状態(サイズ1*8レポート)を一度に送る) レポートの送り方。例は8bitの場合 2 絶対値 相対値 値が相対値か絶対値か 3 ロールオーバーなし(No Wrap) ロールオーバーあり(Wrap) 最大値を超えた場合に最小値にするかどうか。 4 線形 非線形 5 優先 非優先 優先状態(入力がないときのデフォルト状態)の有無 6 Nullデータを不許可 Nullデータを許可 NULLステート(意味のあるデータを送信していない状態。範囲外のデータを送る)を許可するかどうか 7 変化しない値 変化する値(volatile) デバイス自らが値を変更するかどうか 8 ビット単位フィールド バイト単位のバッファ 9-31 Reserved(0)
レポートディスクリプタ/グローバルアイテム
- データの最大値とかの属性、レポートのサイズや数の指定
- 続くフィールドのデフォルト属性になる(次の同じ項目が出てくるまで適用される)
- メインアイテムが出てきても一時状態テーブルに残る。
item tag bTag bType bSize 意味 bSize=0 bSize=1 bSize=2 bSize=3 Usage Page (必須) 0000 01 nn 現在の Usage Page を指定している値。アイテム使用法のインデックスを定義 - 0x05 0x06 0x07 Logical Minimum (必須) 0001 01 nn 変数または配列のアイテムが報告する最小値。たとえば、0~128 まで X位置価値を報告するマウスは、0 の論理的な最小値をもつ。 0x14 0x15 0x16 0x17 Logical Maximum (必須) 0010 01 nn 変数または配列のアイテムが報告する最大値。たとえば、0~128 まで X位置価値を報告するマウスは、128 の論理的な最大値をもつ。 0x24 0x25 0x26 0x27 Physical Minimum? 0011 01 nn 物理的な最小範囲値(論理値xUnit値) 0x34 0x35 0x36 0x37 Physical Maximum 0100 01 nn 物理的な最大範囲値(論理値xUnit値) 0x44 0x45 0x46 0x47 Unit Exponent 0101 01 nn 基数を 10 としたときの指数(2 の補数) 0x54 0x55 0x56 0x57 Unit 0110 01 nn 単位値 0x64 0x65 0x66 0x67 Report Size (必須) 0111 01 nn レポートフィールドのサイズをビットで指定する符号なし値 0x74 0x75 0x76 0x77 Report ID 1000 01 nn レポート ID を指定する符号なし値 0x84 0x85 0x86 0x87 Report Count (必須) 1001 01 nn アイテムのデータフィールド数を指定する符号なし整数
何個のフィールドがこの特定のアイテムのためにレポートに含められるかを決定する(したがってビットが何個であるかがレポートに付け加えられる)0x94 0x95 0x96 0x97 Push 1010 01 nn グローバル・アイテムの状態一覧をスタックに保管 0xA4 0xA5 0xA6 0xA7 Pop 1011 01 nn スタックの先頭に保管されているグローバル・アイテムの状態一覧を取り出す 0xB4 0xB5 0xB6 0xB7
Logical Max/Min
- レポート値の上下限を定義
- 最上位ビットは符号とみなされる。(HID仕様によると最大値は正の値)
- 最大値を255にしたければbSize=2として0x26 0x00FFとする。
Physical Max/Min
- Unitタグの定義する単位で表した場合の値の上下限を定義
- デフォルトはLogicalと同じ値
レポートディスクリプタ/ローカルアイテム
- 次に出てくるメインアイテムで定義されるフィールドについて記述
- メインアイテムが出てきたら一時状態テーブルから消える。
item tag bTag bType bSize 意味 bSize=0 bSize=1 bSize=2 bSize=3 Usage (必須) 0000 10 nn アイテムまたはコレクションの用法(Usage)インデックスを定義 0x08 0x09 0x0A 0x0B Usage Minimum 0001 10 nn 配列あるいはビットマップと関連づけた用法(Usage)の開始を定義 0x18 0x19 0x1A 0x1B Usage Maximum 0010 10 nn 配列あるいはビットマップと関連づけた用法(Usage)の終了を定義 0x28 0x29 0x2A 0x2B Designator Index 0011 10 nn フィジカルディスクリプタのID 0x38 0x39 0x3A 0x3B Designator Minimum 0100 10 nn 配列あるいはビットマップと関連づけた Designator の開始インデックスを定義 0x48 0x49 0x4A 0x4B Designator Maximum 0101 10 nn 配列あるいはビットマップと関連づけた Designator の終了インデックスを定義 0x58 0x59 0x5A 0x5B String Index 0111 10 nn ストリングディスクリプタのID 0x78 0x79 0x7A 0x7B String Minimum 1000 10 nn 配列またはビットマップのコントロールに対して、ひとまとまりの連続するストリングを割り付けるときの始めのストリングのインデックス 0x88 0x89 0x8A 0x8B String Maximum 1001 10 nn 配列またはビットマップのコントロールに対して、ひとまとまりの連続するストリングを割り付けるときの終わりのストリングのインデックス 0x98 0x99 0x9A 0x9B Delimiter 1010 10 nn ローカルアイテムの開始か終了を定義 0xA8 0xA9 0xAA 0xAB
Usage Max/Min
- 一連のUsage IDを一連の配列またはビットマップ中の要素に割り当てることができる