MTP协议中文翻译第一二三四章

1 简介

​ 媒体传输协议(MTP)是一种协议,旨在与瞬态存储设备进行内容交换以及命令和控制。它是作为PTP或图像传输协议的扩展而开发的,主要针对便携式数码相机媒体播放器和手机。

1.1 目标

​ 这个协议的主要目的是促进具有瞬时连接性和显著存储容量的媒体设备之间的通信。这包括交换二进制对象以及枚举连接设备的内容。该协议的次要目的是实现对连接设备的命令和控制。这包括远程调用设备功能、监控设备发起的事件,以及读取和设置设备属性。

1.2 MTP设备模型

​ MTP设备可以被宽泛地定义为具有存储功能的设备,它们以二进制格式消费或产生媒体对象,与其它媒体设备有间歇性的连接,并且在不连接到另一设备时仍能实现其主要功能。设备通常主要作为媒体消费者或媒体生产者,尽管这两者之间的界限正变得越来越模糊。一些常见的便携式媒体设备的例子包括:数码相机(包括静态和视频)、便携式音频播放器和手机。

1.3 MTP对象模型

​ 在“媒体传输协议”中,“媒体”一词用来指代任何二进制数据,并不局限于通常应用的音频/视频格式。一些非音频/视频对象的例子包括联系人、程序、预定事件和文本文件。媒体对象在传输过程中需要被表示为原子二进制对象,但并不要求在设备上以相同的格式或结构存储。对象可以按需创建,只要它们在内容枚举过程中被准确表示。MTP对象不仅包括文件的二进制内容,还包括描述性元数据和引用。MTP的设计是这样的:对象可以通过协议中提供的机制被识别,而不需要理解文件本身的二进制格式。在MTP中,二进制文件、其描述性元数据和任何内部对象引用的组合被称为一个对象。

1.4 范围

​ 本规范旨在定义USB实现MTP的方式,这种方式对设备类型和操作系统都是中立的。某些操作系统或设备类别可能需要MTP的特定子集以实现其最小场景;强烈建议实现者调查预期的使用场景,以确定是否存在任何此类要求。

1.5 PTP兼容性

​ 本协议是作为现有图片传输协议(Picture Transfer Protocol,PTP)的扩展实现的,该协议由ISO 15740规范定义(http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=37445&ICS1=37&ICS2=40&ICS3=99)。MTP旨在与PTP功能共存,而不是重叠,并且希望尽可能开发符合PTP规范的设备,以利用现有的PTP支持设备和应用程序的基础。MTP是使用PTP定义的供应商可扩展性机制实现的,使用MTP供应商扩展ID。通过这种方式实现MTP,保持了与PTP的设备兼容性。然而,在极少数情况下,为了增强连接设备的功能,包括了对核心协议的可选修改。这些在本规范中已明确标识,并且实现此协议的实现者有责任确定是否需要PTP兼容性,如果需要,以与PTP兼容的方式实现此协议。
​ "媒体传输协议"这个名称用于指代核心PTP规范和由USB-IF在本规范中提供的扩展集的组合。

2 传输要求

​ MTP旨在与传输方式无关,即,它旨在通过多种底层传输方式工作。然而,本规范特别处理MTP的USB实现——它假设了USB传输的某些特性以有效运作。

2.1 断开连接事件

​ 当连接的MTP设备在传输层被断开连接或以其他方式变得不可访问时,底层传输应该通知实现MTP发起者或响应者功能的应用程序或服务。

2.2 无差错数据传输

​ 底层传输应该保证无差错的数据传输。这可以通过传输本身使用纠错码或数据包验证来提供,或者可以在不一致的传输上通过传输特定的实现定义。

2.3 异步事件

​ MTP设备需要立即通知任何连接的设备关于设备状态、设备属性、对象添加/删除/修改或存储状态修改等的任何变化。为了提供这种支持,底层传输必须能够使事件与操作、响应或数据传输异步通信。

2.4 设备发现和枚举

​ MTP并不尝试定义如何发现设备或识别支持MTP的设备。这应该以与底层传输一致的方式定义,并且对于给定的传输可以有多种执行方式。

2.5 安全性和认证

​ MTP不包含任何用户认证或数据安全的功能。任何设备验证或在传输过程中保护数据的方法都应该以特定于传输的方式实现。

2.6 传输独立性

​ MTP本质上被定义为一个与传输方式独立的协议,而本规范仅用于定义标准的USB实现。因此,尽管本规范应被视为确定性的协议参考,但本规范中的任何内容都不应妨碍核心协议在其他传输方式上运行。这些可能包括但不限于TCP/IP、蓝牙、串行或任何其他尚未定义的传输机制。

2.7 MTP设备枚举

​ 通过USB进行MTP设备枚举不需要任何特定或专有的USB字符串描述符。在本规范发布之前,一些实现可能需要专有的枚举技术;这些在本文档中并未特别涵盖。

3 规范引用

​ 在MTP的上下文中,某些术语和惯例被广泛使用,以提供协议功能的基本基础。这些惯例在此进行了描述。MTP不要求设备在内部工作时采用这些惯例或表示,只要求在实现有线协议时遵守它们。

3.1 数据格式化

​ PTP定义了一种编码数据类型和数据集的惯例,作为PTP扩展集,MTP中使用的数据结构与PTP中使用的相同。为方便起见,这里重复说明,但PTP规范(如常)应被视为权威来源。

3.1.1 多字节数据

​ 本规范中多字节数据的标准格式为大端序。也就是说,字节内的位将被读取,以便首先读取最高有效字节。实际上通过传输发送的多字节数据可能不必遵循相同的格式,设备上使用的实际多字节数据也可能使用不同的多字节格式。大端序惯例仅在此文档中适用,除非另有说明。

3.1.2 位字段格式

​ 位字段以这种格式定义时,最低有效位位于零位置。在规范中表示位字段时,这是最右边的位置。例如,一个32位整数(UINT32)的最高有效位将在第31位,而最低有效位将在第0位。

3.2 简单类型

​ MTP中的所有非不透明数据由简单类型的原子值或简单类型的原子值数组组成。在MTP中使用的简单原子类型的集合在此作为数据表示的共同基础进行了描述。具体来说,任何时候将数据作为操作、响应或事件的参数传递时,它必须采取以下形式之一。

3.2.1 简单类型总结
数据类型代码 类型 描述
0X0000 UNDEF Undefined
0X0001 INT8 Signed 8-bit integer
0x0002 UINT8 Unsigned 8-bit integer
0x0003 INT16 Signed 16-bit integer
0x0004 UINT16 Unsigned 16-bit integer
0x0005 INT32 Signed 32-bit integer
0x0006 UINT32 Unsigned 32-bit integer
0x0007 INT64 Signed 64-bit integer
0x0008 UINT64 Unsigend 64-bit integer
0x0009 INT128 Signed 128-bit integer
0x000A UINT128 Unsigned 128-bit integer
0x4001 AINT8 Array of signed 8-bit integers
0x4002 AUINT8 Array of unsigned 8-bit integers
0x4003 AINT16 Array of signed 16-bit integers
0x4004 AUINT16 Array of unsigned 16-bit integers
0x4005 AINT32 Array of signed 32-bit integers
0x4006 AUINT32 Array of unsigned 32-bit integers
0x4007 AINT64 Array of signed 64-bit integers
0x4008 AUINT64 Array of unsigned 64-bit integers
0x4009 AINT128 Array of signed 128-bit integers
0x400A AUINT128 Array of unsigned 128-bit integers
0xFFFF STR Variable-length Unicode string 可变长度的Unicode字符串
所有其他值 Undefined 保留(PTP)
#### 3.2.2 数组

​ 数组在 PTP (以及 MTP)中被定义为相同固定长度类型的串联。 MTP 没有定义字符串数组。每个元素的大小由数组中包含的简单类型标识 (参见 3.2.2.1)。 MTP 中的数组以无符号 32 位整数开头,该整数标识后面的元素数量,后面是由数组的数据类型代码标识的简单类型的重复实例的串联。出于本规范的目的,数组被认为是从零开始的。

​ 空

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值