JAJU884J October 2014 – June 2024 DLPC900
USB 1.1 HID プロトコルは図 1-4 に示す構造を持っています。ホストは、レポート ID 、ヘッダー、ペイロードで構成されるバイト ストリームを構成する必要があります。これらの 3 つの部分の説明を以下に示します。
レポート ID:レポート ID は常に 0x0 に設定され、常にすべての転送の先頭バイトです。
ヘッダー:ヘッダーは 4 バイトで構成されています。
1) フラグ バイト:図 1-4 に示され、セクション 1.2.2 とセクション 1.2.3 の読み出し / 書き込みの例で説明されています。
2) シーケンス バイト:シーケンス バイトはローリング カウンタにすることができ、DLPC900 からの応答をホストが要求している場合に主に使用されます。DLPC900 は、ホストが送信したものと同じシーケンス バイトで応答します。これによりホストは、自身が送ったコマンドのシーケンス バイトを、DLPC900 が応答したシーケンス バイトと照合できます。
3) 長さ:長さを表す 2 バイト。これは、ペイロードのみのデータ バイト数を示します。
ペイロード バイト:ペイロード バイトは、USB コマンドと、それに続く、そのコマンドに関連付けられたデータで構成されます。
書き込み動作中、ホストはトランザクション シーケンス全体を DLPC900 に送信し、DLPC900 はその書き込みコマンドに関連する動作を実行します。読み出し動作中、ホストはトランザクション シーケンス全体を DLPC900 に送信し、DLPC900 はその読み出しコマンドに関連する動作を実行します。このため、書き込みトランザクションと読み出しトランザクションはどちらも、HID ドライバに対して API レベルの WriteFile をホストが実行する、DLPC900 への書き込みと見なされます。その違いは、DLPC900 が読み出し動作を実行するタイミングです。読み出し動作では、DLPC900 は応答を内部バッファに配置し、HID ドライバに対する API レベルの Readfile をホストが実行するのを待ち、その後で DLPC900 が応答データをホストに送り返します。
DLPC900 の内部コマンド バッファは最大 512 バイトであり、書き込み動作と読み出し動作の両方で共有されます。したがって、ホストが読み出し動作を実行するたびに、HID ドライバに対する Readfile を実行して応答を取得する必要があります。そうしないと、応答データは次の書き込みまたは読み出し動作によって上書きされます。
HID プロトコルは、両方向で 64 バイトまでの転送に制限されています。したがって、64 バイトを超えるコマンドは複数回の転送を必要とします。このようなコマンドが使用される際は常に、最初の転送のみがヘッダーと USB コマンドを必要とします。レポート ID は常に、すべての転送の先頭バイトです。図 1-5 に、76 バイトを含み、2 回の転送を必要とする書き込みコマンドの例を示します。最初の転送には 65 バイトが含まれていますが、それは正しいことに注意します。ホスト ハードウェア レベルの HID ドライバは、USB バス経由でデータを送受信する前に、レポート ID を抽出します。