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 简单类型总结
数据类型代码类型描述
0X0000UNDEFUndefined
0X0001INT8Signed 8-bit integer
0x0002UINT8Unsigned 8-bit integer
0x0003INT16Signed 16-bit integer
0x0004UINT16Unsigned 16-bit integer
0x0005INT32Signed 32-bit integer
0x0006UINT32Unsigned 32-bit integer
0x0007INT64Signed 64-bit integer
0x0008UINT64Unsigend 64-bit integer
0x0009INT128Signed 128-bit integer
0x000AUINT128Unsigned 128-bit integer
0x4001AINT8Array of signed 8-bit integers
0x4002AUINT8Array of unsigned 8-bit integers
0x4003AINT16Array of signed 16-bit integers
0x4004AUINT16Array of unsigned 16-bit integers
0x4005AINT32Array of signed 32-bit integers
0x4006AUINT32Array of unsigned 32-bit integers
0x4007AINT64Array of signed 64-bit integers
0x4008AUINT64Array of unsigned 64-bit integers
0x4009AINT128Array of signed 128-bit integers
0x400AAUINT128Array of unsigned 128-bit integers
0xFFFFSTRVariable-length Unicode string 可变长度的Unicode字符串
所有其他值Undefined保留(PTP)
#### 3.2.2 数组

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

​ 空

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/12412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【iOS】工厂模式

文章目录 前言设计模式的三大原则简单工厂模式工厂方法模式抽象工厂模式关于三兄弟的升级与降级注意 前言 上文讲完了iOS的架构模式,接下来聊一聊设计模式,设计模式有许多,主要介绍一下工厂模式 设计模式的三大原则 S 单一职责原则 告诉我…

PBR系列-光之简史

作者:游梦 ​ 欢迎进入官网体验使用:Mapmost——让人与机器联合创作成为新常态 ​说到PBR理论分为三大理论:物理光源、物理材质与物理相机,三者都与光有着千丝万缕的关系,原打算这期讲解物理材质,在梳理知…

MySQL:某字段追加随机数

在MySQL中,你可以使用UPDATE语句结合随机函数RAND()来为某个字段追加随机数。以下是一个示例,假设我们有一个表my_table,其中有一个字段my_field,我们想要为这个字段追加一个介于1到100之间的随机数: UPDATE my_table…

OpenHarmony 3.1 Release实战开发 + Linux 原厂内核Launcher起不来问题分析报告

1、关键字 Launcher 无法启动;原厂内核;Access Token ID; 2、问题描述 芯片:rk3566;rk3399 内核版本:Linux 4.19,是 RK 芯片原厂发布的 rk356x 4.19 稳定版内核 OH 版本:OpenHa…

Java Spring的远程调用方式(如RMI、Hessian、Burlap等)

Spring框架提供了对多种远程调用技术的集成,使得开发者可以方便地在分布式系统中实现远程服务调用。以下是Spring支持的一些常见远程调用方式: 1. RMI (Remote Method Invocation) RMI是一种Java特有的远程调用技术,允许一个Java虚拟机上的…

【一站式学会Kotlin】第六节 lamda表达式、拖尾lamda表达式

一、 lamda 表达式的完整语法形式: val sum: (Int, Int) -> Int = {x: Int, y: Int -> x + y }(1)lamda表达式总是在花括号中 (2)完成的语法形式参数声明放在花括号内,(可选) (3)函数体跟在->后 (4)如果能推断出该lamda表达式的返回值类型不是Unit,那么该…

nginx文件夹内文件解释<一>

目录 linux中/etc/nginx/查询目录整体解释分目录解释Conf.d目录 linux中/etc/nginx/查询目录 [rootrelease nginx]# ls -l total 76 drwxr-xr-x 2 root root 4096 Mar 12 22:49 conf.d drwxr-xr-x 2 root root 4096 Nov 11 2022 default.d -rw-r--r-- 1 root root 1077 Nov 1…

vue中图片引入与使用几种方式

方法一&#xff1a;img 标签静态引入 朴实无华 <img src"../assets/img/logo.png" > 方法二&#xff1a;background-image 朴实无华2.0版 background-image: url("../assets/img/bg.jpg");方法三&#xff1a;require()方法 将编写代码时定义的路径…

elementui,iview等 表格单元格合并之固定列

要的效果如下 需要合并 show weak 及 Siginin这三列 上代码 <template><Table:columns"columns":span-method"handleSpan":data"data"bordersize"small"ref"table"></Table> </template> <sc…

R实验 基础(一)

实验目的&#xff1a; 了解实验报告书的书写要求&#xff1b;掌握R、RStudio的下载与安装&#xff1b;熟悉R的界面及基本操作&#xff1b;进一步熟悉R和RStudio的界面及基本操作&#xff1b;初步了解R的绘图和程序包的下载、安装和加载使用。 实验内容&#xff1a; 了解实验报…

Python sort() 和 sorted() 的区别应用实例详解

大家好&#xff0c;今天针对 Python 中 sort() 和 sorted() 之间的区别&#xff0c;来一个实例详细解读。sort — 顾名思义就是排序的意思&#xff0c;它可以接收的对象为可迭代的数据类型。今天以列表为例子演示两者的不同点、相同点&#xff0c;以及其中一些常用的高级参数使…

支付平台怎么应对DDOS攻击

支付平台怎么应对DDOS攻击?在数字化时代&#xff0c;支付平台已成为人们日常生活中不可或缺的一部分。然而&#xff0c;随着支付平台的广泛应用&#xff0c;其面临的安全威胁也日益严峻。其中&#xff0c;DDOS&#xff08;分布式拒绝服务攻击&#xff09;以其高隐蔽性、强破坏…

智慧武装三维实景电子沙盘系统

智慧武警实景三维电子沙盘系统是一个集成了先进三维建模技术、大数据分析、实时动态更新、交互操作以及高度安全可靠的综合性平台。它专为武警部队设计&#xff0c;旨在提供一个实战指挥和战术训练的基础平台支撑&#xff0c;以满足指战员在作战环境研究、标图作业、战法研究、…

Java 包装类型的缓存机制了解吗?

在 Java 中&#xff0c;基本数据类型有各自的包装类型。这些包装类型在某些情况下会使用缓存机制来提高性能。本文将详细探讨这些缓存机制的实现原理及其实际应用。 什么是包装类型的缓存机制&#xff1f; Java 的包装类型缓存机制是指在某些特定范围内&#xff0c;包装类型对…

【知识碎片】2024_05_14

本篇记录了两道关于位运算的选择题&#xff0c;和一道有点思维的代码题。 C语言碎片知识 求函数返回值&#xff0c;传入 -1 &#xff0c;则在64位机器上函数返回&#xff08; &#xff09; int func(int x) {int count 0;while (x){count;x x&(x - 1);//与运算} return c…

24/05/14总结

签到2&#xff1a; 签到界面上有时间显示&#xff0c;签到码输入框&#xff0c;开始签到&#xff0c;当倒计时结束&#xff0c;老师端和学生端都会显示签到结果&#xff0c;所以签到结果需要建表&#xff1a;&#xff08;签到了的学生和未签到的学生&#xff0c; 这次签到的时间…

详述进程的地址空间

进程的地址空间 合法的地址 (可读或可写) 代码 (main, %rip 会从此处取出待执行的指令)&#xff0c;只读数据 (static int x)&#xff0c;读写堆栈 (int y)&#xff0c;读写运行时分配的内存 (???)&#xff0c;读写动态链接库 (???) 非法的地址 NULL&#xff0c;导致 se…

蓝桥杯第2357题——限高杆(多层图+dijkstra)

问题描述 某市有 &#x1d45b; 个路口, 有 &#x1d45a; 段道路连接这些路口, 组成了该市的公路系统。其 中一段道路两端一定连接两个不同的路口。道路中间不会穿过路口。 由于各种原因, 在一部分道路的中间设置了一些限高杆, 有限高杆的路段 货车无法通过。 在该市有两个…

【微命令】git config如何配置全局的用户和邮箱?(--global user.name、user.email;git config --help)

虽然经常用&#xff0c;也经常忘记&#xff0c;特此记录。 命令 git config --global user.name "myname" git config --global user.email test163.com另外一种方式 help git config --help |grep email | grep name直接help查看

Git系列:git log 掌握版本控制的精髓

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…