5 设备模型
MTP是一种协议,旨在表示设备的抽象视图,可以通过以下标准松散的定义:
-
它有存储空间
-
它能与自身的存储进行交互。 It interacts with its own storage.
-
它在非MTP会话期间实现了其主要目的。
-
它频繁地使用MTP连接到其他设备,以便交换和更新内容。
5.1 设备表示
在MTP中,设备在协议中与其内容具有同等重要的地位。了解设备的功能和属性可以实现除简单数据传输之外的许多重要场景。
启用场景示例包括:
-
丰富用户界面的连接设备表示。Rich UI representation of a connected device.
-
将内容与设备能力相匹配
-
对象元功能,例如DRM
-
设备命令和控制
-
等等
这些场景是通过标准设备描述数据集(DeviceInfo数据集)的组合来实现的,以提供基本的设备功能,这些功能始终存在并且隐含在MTP功能中;并且灵活且可扩展的设备属性。下面将对两者进行更详细的讨论。
5.1.1 DeviceInfo数据集
DeviceInfo 数据集用于提供设备的描述。可以使用GetDeviceInfo操作获取此数据集,而无需先启动会话,并且大多数情况下是静态的。如果在会话处于活动状态时更改此数据集中的任何值,则应向每个连接的 Initiator 发出DeviceInfoChanged事件,并且每个 Initiator 必须重新获取 DeviceInfo 数据集以确定更新的值。
DeviceInfo 数据集可能在会话内更改的情况示例是对设备功能模式更改的反应。设备可能会进入 “睡眠”状态,其中它具有有限 (但足够)的启用的 MTP 操作和功能集。当进入这种状态时,会向每个活动会话发出DeviceInfoChanged事件,以提醒它们设备的功能已更改。
5.1.1.1 标准版
以百分位数标识此设备可以支持的 PTP 版本。对于按照此规范实现的 MTP 设备,此值应包含 100 (代表 1.00)。
5.1.1.2 MTP 供应商扩展 ID
标识此设备正在使用的 PTP 供应商扩展版本。对于根据本规范实现的 MTP 设备,此值应包含 0xFFFFFFFF。
5.1.1.3 MTP 版本
这标识了该设备支持的 MTP 标准的版本。它以百分之几表示。本规范的最终版本将确定放置在此字段中的正确值。
5.1.1.4 MTP 扩展
该字符串用于识别应用于 MTP 的任何扩展集,并将在本规范的后面详细讨论
5.1.1.5 功能模式
模式允许设备以不同的能力表达不同的状态。如果设备仅支持一种模式,则此字段应包含值 0x00000000。
Value | Description |
---|---|
0x0000 | Standard mode |
0x0001 | Sleep state |
All other values with bit 15 set to 0 | Reserved |
0xC001 | Non-responsive playback播放无响应 |
0xC002 | Responsive playback响应式播放 |
All other values with bit 15 set to 1 and bit 14 set to 0 | MTP vendor extension |
All other values with bit 15 set to 1 and bit 14 set to 1 | MTP-defined |
当前功能模式也包含在设备属性中。为了更改设备的功能模式,必须打开会话并更新相应的设备属性 (如果允许)。有关 设备属性的更多信息将在本文档后面提供。
5.1.1.6 支持的操作
该字段通过数据代码标识该设备在当前功能模式下支持的所有操作。
5.1.1.7 支持的事件
该字段通过数据代码标识该设备在当前功能模式下可以生成的所有事件。
5.1.1.8 支持的设备属性
该字段通过数据代码标识该设备在当前功能模式下支持的所有设备属性。
5.1.1.9 捕获格式
该字段通过数据代码来标识本设备可以独立生成的每种格式的对象格式代码 (即,不需要将内容放置在设备上)。
5.1.1.10 播放格式
此字段通过数据代码标识此设备放置到设备上后能够理解和解析的每种格式的对象格式代码。
如果设备可以携带未识别的二进制对象而不理解它们,则应通过在其播放格式中包含未定义对象 (0x3000)代码来指 示这一点。
5.1.1.11 制造商
此可选字符串是人类可读的字符串,用于标识此设备的制造商。
5.1.1.12 型号
此可选字符串是人类可读的字符串,用于标识该设备的型号。
5.1.1.13 设备版本
此可选字符串以供应商特定的格式标识此设备的软件或固件版本。
5.1.1.14 序列号
此字符串是必需的,包含 MTP 功能的序列号。序列号必须在所有共享相同型号和设备版本字段的 MTP 功能中保持唯 一 (此字段在 PTP 规范中是可选的,但在 MTP 中是必需的)。序列号应为设备的唯一序列号,例如通常打印在设备上的序列号。
出于与旧版本的兼容性考虑,序列号应为 32 个字符的十六进制字符串。此字符串必须正好为 32 个字符 (包括任何 前导 0),并且不需要任何前缀来将其标识为十六进制 (例如“0x”)。
5.1.2 设备属性
本节介绍设备属性。设备属性支持是 PTP 的强制性部分,除了附加的、添加的设备属性外,在 MTP 中保持不变。
设备属性标识设备的设置或状态条件,并且不链接到设备上的任何数据对象。设备上的对象使用对象属性进行描述,这将 在第 5.3.2 节对象属性中进一步讨论。
设备属性可能是只读或读写的,并且根据使用环境的不同,具有不同的功能。单个设备只能有一组设备属性,并且它们在所有会话和连接中必须相同。
5.1.2.1 设备属性描述数据集
设备属性由其DevicePropDesc数据集定义,可以使用GetDevicePropDesc操作检索该数据集。DevicePropDesc数据集包括设备属性值、属性的读/写设置、默认值以及(如果相关)允许值的任何限制。使用核心数据集后面的附加字段来传达对设备属性允许值的限制。附加表格的格式由第六字段中的标志确定,
该字段列举了允许的表格。
Field name | Field order | Size(bytes) | Datatype | Description |
---|---|---|---|---|
Device Property Code | 1 | 2 | UINT16 | A specific device property code. |
Datatype | 2 | 2 | UINT16 | Identifies the data type code of the property, as defined in section 3.2 Simple Types. |
Get/Set | 3 | 1 | UINT8 | Indicates whether the property is read-only(Get), or read-write(Get/Set). 0x00 Get 0x01 Get/Set |
Factory Default Value | 4 | DTS | DTS | Identifies the value of the factory default for the property |
Current Value | 5 | DTS | DTS | Identifies the current value of this properyt |
Form Flag | 6 | 1 | UINT8 | Indicates the format of the netx field. 0x00 None. This is for properties like DataTime. In this case the FORM field is not present. 0x01 Range-Form 0x02 Enumeration-Form |
FORM | N/A | - | This dataset depends on the Form Flag, and is absent if Form Flag = 0x00. |
5.1.2.1.1 范围形式
Field name | Field order | Size(bytes) | Datatype | Description |
---|---|---|---|---|
Minimum Value | 7 | DTS | DTS | Minimum value supported by this property |
Maximum Value | 8 | DTS | DTS | Maximum value supported by this property |
Step Size | 9 | DTS | DTS | A particular vendor’s device shall support all values of a property defined by Minimum Value + N x Step Size, which is less than or equal to Maximum Value where N = 0 to a vendor-defined maximum. |
5.1.2.1.2 枚举形式
Field name | Field order | Size(bytes) | Datatype | Description |
---|---|---|---|---|
Number Of Values | 7 | 2 | UINT16 | This field indicates the number of values of size DTS of the particular property supported by the device. |
Supported Value 1 | 8 | DTS | DTS | A particular vendor’s device shall support this value of the property |
Supported Value 2 | 9 | DTS | DTS | A particular vendor’s device shall support this value of the property. |
Supported Value 3 | 10 | DTS | DTS | A particular vendor’s device shall support this value of the property. |
… | … | … | … | … |
Supported Value M | M+7 | DTS | DTS | A particular vendor’s device shall support this value of the property. |
5.1.2.2 检索设备属性
可以通过以下两种方法之一检索设备属性: 它们可以作为GetDeviceP