デバイスプロパティの一部は必須でサポートする必要がありますが、それ以外のサポートは任意となっています。PTPデバイス(レスポンダー)は、イニシエーターに対して自分がどのようなデバイスプロパティをサポートするのか示す必要があります。そのためにDevicePropDescデータセットが用いられます。
通常はPTPデバイスがイニシエーターに接続されたとき、初期設定の一部としてイニシエーターがGetDevicePropDescオペレーションを使ってデバイスプロパティディスクリプタを要求します。
フィールド順 | フィールド | サイズ [byte] | 説明 |
---|---|---|---|
1 | Device Property Code | 2 | デバイスプロパティコード |
2 | DataType | 2 | このデバイスプロパティのデータ型 |
3 | GetSet | 1 | このデバイスプロパティのread-write属性 0 : read-only 1 : read-write |
4 | Factory Default Value | - | このデバイスプロパティの工場出荷設定値 |
5 | Current Value | - | このデバイスプロパティの現在の値 |
6 | Form Flag | 1 | このフィールドの値によって、この後のデータ構造が決定します。 0x00 : この後にデータは存在しない。 0x01 : この後にRange-Formのデータが続く 0x02 : この後にEnumeration-Formのデータが続く |
FormFlag(フィールド6)より後にデータするかどうかは、FormFlagの値によって示されます。FormFlagの値が0x00の時、FormFlagより後のデータは存在しません。FormFlagの値が0x01の時、FormFlagの後にReange-Form(以下を参照)のデータが続きます。FormFlagの値が0x01の時は、FormFlagの後にEmumeration-Form(以下を参照)のデータが続きます。
Reange-Formはデバイスプロパティ値の取り得る範囲(最大値と最小値)及び値の刻み(ステップ)を示すために用いられます。Reange-Formの場合のデータ構造は以下の通りです。
フィールド順 | フィールド | サイズ [byte] | 説明 |
---|---|---|---|
7 | MinimumValue | - | このプロパティに設定することができる最小値 |
8 | MaximumValue | - | このプロパティに設定することができる最大値 |
9 | StepSize | - | このプロパティに設定することができる値の刻み |
Emumeration-Formでは、デバイスプロパティの取り得る値の総数とともに取り得る値を列挙します。非連続な値を取り得るデバイスプロパティのためのデータ形式です。Emumeration-Formの場合のデータ構造は以下の通りです。
フィールド順 | フィールド | サイズ [byte] | 説明 |
---|---|---|---|
7 | Number of Values | - | このプロパティでサポートされる値の数 |
8 | SupportedValue1 | - | このプロパティでサポートされる値 |
... | |||
7+Number of Values | SupportedValue [Number of Values] | - | このプロパティでサポートされる値 |