CN104322037A - 缓冲传输服务 - Google Patents
缓冲传输服务 Download PDFInfo
- Publication number
- CN104322037A CN104322037A CN201380026550.4A CN201380026550A CN104322037A CN 104322037 A CN104322037 A CN 104322037A CN 201380026550 A CN201380026550 A CN 201380026550A CN 104322037 A CN104322037 A CN 104322037A
- Authority
- CN
- China
- Prior art keywords
- equipment
- data object
- grouping
- point
- transmission
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种缓冲传输会话,该缓冲传输会话可用于使用低开销、可靠的点对点数据传输协议来将数据对象从一个设备发送到另一个设备。响应于将数据对象传输至接收设备的请求,发送设备可定位所请求的数据对象并建立第一缓冲传输会话以将数据对象传输至接收设备。缓冲传输会话可被分配唯一的会话标识符。发送设备可将数据对象作为分组序列来发送,每个分组包括数据对象的一部分和会话标识符。多个缓冲传输会话可同时建立在两个设备之间。在一些情况下,可将传输暂停、恢复、取消、切换至不同传输、或跨断开/重新连接事件持续进行。
Description
背景技术
本公开整体涉及在设备之间传送数据,并且具体涉及对已知大小的数据对象的传送进行管理的缓冲传输服务。
便携式电子设备能够存储并提供对数据对象包括多种格式的媒体文件(音频、视频、图像)、文档、原图文件、个人数据(例如,联系人、日历)、表格等等的交互式用户访问。因此,用户能够操作便携式电子设备来听音乐、看电影、查看并管理个人信息等等。在一些情况下,便携式电子设备还能够创建数据对象,例如通过音频或视频录制、使用静物照相机拍照、收集并处理用户输入等。
一些便携式电子设备还能够与各种附件进行通信以增强用户与设备的交互。例如,便携式电子设备可连接至具有比便携式电子设备更大的显示器或更强的扬声器、或更方便的用户接口的附件。此类附件可用于呈现存储于便携式电子设备上的媒体内容和其他信息并与其进行交互。
发明内容
为了支持通过附件与便携式电子设备的用户交互(或反之亦然),在设备和附件之间传输数据对象有时是有用的。本发明的某些实施例涉及缓冲传输服务,其能够被调用以在两个设备(发送设备和接收设备,两者中任何一者通常可根据具体实施被视为便携式的或非便携式的)之间使用低开销、可靠的点对点数据传输协议根据要求来发送数据对象。例如,在接收到将数据对象传输至接收设备的请求时,发送设备可对所请求的数据对象进行定位并建立第一缓冲传输会话以将数据对象传输至接收设备。可为缓冲传输会话分配唯一的会话标识符以将其与可能同时建立的其他通信会话区别开来,并且在一些实施例中,在这两个设备之间可同时建立多个缓冲传输会话,其中每个缓冲传输会话分配有不同的会话标识符。当建立了传输会话时(例如,当两个设备相互传送它们的准备就绪状态时),发送设备发送分组序列,每个分组包括会话标识符和需传输的数据对象的一部分。在一些实施例中,分组还可包括另外的信息,诸如序号或由发送设备和接收设备用来确定已对数据对象的哪些部分进行传输的其他唯一的分组标识符、由接收方用来检测所接收的分组中的错误的错误检测和/或错误校正代码,等等。在一些实施例中,传输可根据接收方的控制被暂停和恢复。在一些实施例中,正在进行的传输可跨断开事件和重新连接事件持续进行。
本发明的某些方面涉及用于在第一设备和第二设备之间传输数据的方法。第一设备(发送方设备)可建立与第二设备(接收方设备)的点对点通信链路并且可接收将第一数据对象发送至第二设备的指令。例如,第二设备可经由点对点链路发送对第一数据对象的请求。第一设备可定位第一数据对象,为第一传输会话分配第一唯一标识符,并且将包括第一唯一标识符的第一发送准备就绪消息发送至第二设备(经由点对点通信链路)。发送准备就绪消息还可包括其他信息,诸如第一数据对象的标识符和/或指示第一数据对象的大小的信息。在响应于第一发送准备就绪消息,发送方接收到了接收准备就绪消息之后,发送方可开始发送第一组分组,第一组中的每个分组包括第一唯一标识符,和第一数据对象的不同部分。第一组分组可包括足以传输第一数据对象的全部的多个分组。
在一些实施例中,可同时执行多个传输。例如,在发送第一组分组时,第一设备可接收将第二数据对象发送至第二设备的指令,定位第二数据对象,为第二传输会话分配第二唯一标识符,并且将包括第二唯一标识符的第二发送准备就绪消息发送至第二设备(经由点对点通信链路)。在第一设备响应于第二发送准备就绪消息接收到第二接收准备就绪消息之后,第一设备可开始发送第二组分组,第二多个分组中的每个分组包括第二唯一标识符,和第二数据对象的不同部分。第二组分组可包括足以传输第二数据对象的全部的多个分组;其根据数据对象的大小可能与第一组中分组的数量不同或相同。第一组分组和第二组分组中的至少一些可经由点对点通信链路以交织方式发送。
在一些实施例中,由于链路是点对点的,因此分组无需包括发送方设备标识或接收方设备标识。分组也无需包括作为第一数据对象的一部分的内容的任何显式标识;接收方设备可根据第一唯一标识符存在于分组中以及分组是在会话发起消息之后发送的事实来推断出内容。给定分组大小的固定上限,这就能够通过将可用于数据的空间最大化来减少与传输较大数据对象相关联的开销。
本发明的某些方面涉及用于在第二设备处接收来自第一设备的数据的方法。第二设备可建立与第一设备的点对点通信链路并可经由链路接收来自第一设备的发送准备就绪消息。发送准备就绪消息可指示第一设备已准备好将数据对象传输至第二设备并且可包括用于传输所述数据对象的会话标识符。在一些实施例中,发送准备就绪消息可响应于来自第二设备的对接收数据对象的请求。响应于发送准备就绪消息,第二设备可向第一设备发送接收准备就绪消息,接收准备就绪消息指示第二设备已准备好接收数据对象。在一些实施例中,在发送接收准备就绪消息之前,第二设备可准备接收数据对象,例如通过分配足够的存储空间来存储数据对象。随后,第二设备可接收来自第一设备的一组分组。在一些实施例中,这些分组中的每一个包括标头和有效载荷,其中标头包括会话标识符和针对每个分组来讲唯一的序号。基于会话标识符,第二设备可确定每个分组的有效载荷包含数据对象的一部分并且可将每个分组的有效载荷存储在存储介质中,其中用于存储每个分组的有效载荷的位置至少部分地基于分组的序号来确定。
在一些实施例中,分组可包括错误检测和/或错误校正代码,并且第二设备可对所接收的分组执行错误检查和/或错误校正操作。如果检测到错误,第二设备可向第一设备发送否定确认(Nack)分组;如果未检测到错误,第二设备可发送确认(Ack)分组。可针对每个数据分组发送Ack或Nack分组,或可针对一组数据分组(诸如连续数据分组的子集)发送单个Ack或Nack分组。这能够有助于确保数据完整性。
在一些实施例中,在接收到数据对象的一组分组时,第二设备可将暂停消息发送至第一设备以信号式通知第一设备暂停发送分组并且随后可发送恢复消息至第一设备以信号式通知第一设备来恢复所述分组的发送。第一设备例如可基于在暂停发送之前所接收的最后的Ack分组所确定的时间点处进行恢复。
在一些实施例中,当已接收到数据对象的所有部分时,第二设备可向第一设备发送完成消息以指示传输完成。
本发明的某些其他方面涉及可将数据对象发送至接收方设备的电子设备。例如,电子设备可包括被配置为建立与接收方设备的点对点通信链路的接口以及耦接至接口的处理子***。处理子***可被配置(例如,通过适当的编程)为发起各种会话,包括被配置为经由点对点通信链路将数据对象传输至接收方设备的缓冲传输会话。每个会话可拥有其自身的唯一标识符。缓冲传输会话可响应于对数据对象的请求而发起。请求可以例如由在处理子***中执行的应用程序或由接收方设备而产生。对于缓冲传输会话,处理子***可将需传输的数据对象的至少一部分加载到缓冲区中并将包括分配给缓冲传输会话的唯一标识符的发送准备就绪消息发送至接收方设备(经由点对点通信链路)。处理子***可响应于发送准备就绪消息接收所述接收准备就绪消息。响应于所述接收准备就绪消息,处理子***可被配置为经由点对点通信链路将分组序列发送至接收方设备。每个分组可包括序号、分配给缓冲传输会话的唯一标识符和数据对象的从缓冲区读取的一部分。在一些实施例中,处理***可被配置为定义链路层,并且数据对象的分组的发送可由链路层进行管理。
在一些实施例中,在向接收方设备发送数据对象的分组时,发送设备可检测到点对点通信链路已丢失。如果发生这种情况,发送设备可确定是否应经由已与同一接收方设备建立的另一点对点通信链路来继续第一数据对象的传输。如果是这样的话,则可使用另一点对点通信链路来恢复分组的发送;恢复发送的时间点可基于在链路丢失之前所接收的最后的Ack分组来确定。
在一些实施例中,如果在发送数据对象的分组时链路丢失,发送设备可确定随后应恢复数据对象的传输,并相应地存储指示当前传输状态的信息(例如,存储在其自身的本地存储介质中);该信息可在与接收方设备的点对点通信链路重新建立之后用于恢复第一数据对象的传输。因此,传输操作可跨断开/重新连接事件持续进行。
本发明的某些其他方面涉及可接收来自发送方设备的数据对象的电子设备。例如,电子设备可包括被配置为建立与发送方设备的点对点通信链路的接口、被配置为存储数据的存储介质和耦接至接口和存储介质的处理子***。处理子***可被配置为经由点对点通信链路将对数据对象的请求发送至发送方设备并且从发送方设备接收(经由点对点通信链路)指示发送方设备准备好发送数据对象的发送准备就绪消息。发送准备就绪消息可包括与传输数据对象相关联的会话标识符。作为响应,处理子***可向发送方设备发送(经由点对点通信链路)指示电子设备准备好接收数据对象的接收准备就绪消息。然后,处理子***可从发送方设备接收(再次经由点对点通信链路)作为由发送方设备所产生的分组序列的数据对象。多个分组的序列中的每个分组可标记有与数据对象的传输相关联的会话标识符并且可包括数据对象的作为有效载荷的一部分。处理子***可将所接收的分组中每个分组的有效载荷作为数据对象的一部分存储在存储介质中。例如,多个分组的序列中的每个分组可包括序号,并且在用于存储每个分组的有效载荷的存储介质内的位置可至少部分地基于分组的序号进行确定。
本文所述的技术可在多种设备中实现。在一些实施例中,发送方设备可为便携式设备,并且接收方设备可为能够与便携式设备互操作的附件。设备可使用物理连接(例如,有线连接,诸如可由配对连接器、缆线或适配器提供的连接)和/或无线连接(例如,WiFi、Bluetooth或其他射频连接)进行通信。
以下具体实施方式连同附图将提供对本发明的实质和优点的更好理解。
附图说明
图1示出根据本发明的实施例的主机设备和附件。
图2为根据本发明的实施例的包括主机设备和附件的***的简化框图。
图3为示出根据本发明的实施例的主机设备内的进程的进一步详情的框图。
图4为示出根据本发明的实施例的能够发送的与从主机设备到附件的文件传输相关的消息的表。
图5为根据本发明的实施例的用于发送数据对象的缓冲传输进程的流程图。
图6为根据本发明的实施例的用于接收数据对象的缓冲传输进程的流程图。
图7为根据本发明的实施例进一步示出缓冲传输操作的简化消息传送图。
图8为根据本发明的实施例的可实施以支持暂停和恢复缓冲传输会话的进程流程图。
图9为根据本发明的实施例示出两个数据对象从主机设备并发传输到附件的简化消息传送图。
图10示出根据本发明的实施例的用于在缓冲传输会话中提供回退和持续选项的进程。
具体实施方式
本发明的某些实施例涉及缓冲传输服务,其能够被调用以在两个设备(发送设备和接收设备,两者中任何一者通常可根据具体实施被视为便携式的或非便携式的)之间使用低开销、可靠的点对点数据传输协议根据请求发送数据对象。例如,在接收到向接收设备发送数据对象的请求时,发送设备可对所请求的数据对象进行定位并建立第一缓冲传输会话以将数据对象传输至接收设备。缓冲传输会话可被分配唯一的会话标识符以将其与可能同时建立的其他通信会话区别开来,并且在一些实施例中,在两个设备之间可同时建立多个缓冲传输会话,其中每个缓冲传输会话分配有不同的会话标识符。当建立了传输会话时(例如,当两个设备相互传送它们的准备就绪状态时),发送设备发送分组的序列,每个分组包括会话标识符和需传输的数据对象的一部分。在一些实施例中,分组还可包括另外的信息,诸如序号或由发送设备和接收设备用来确定数据对象的哪些部分已被传输的其他唯一的分组标识符、由接收方用来检测所接收分组中的错误的错误检测和/或错误校正代码,等等。在一些实施例中,传输可根据接收方的控制暂停和恢复。在一些实施例中,正在进行的传输可跨断开事件和重新连接事件持续进行。
图1示出根据本发明的实施例的主机设备100和附件102。
例如,主机设备100可为手持设备,诸如媒体播放器、智能电话、个人数字助理;平板电脑;膝上型计算机;台式计算机;或能够发送数据并与其他设备通信的任何其他电子设备。在一些实施例中,主机设备100可为便携式设备(即,用户容易携带到不同地方的设备),但这并非是必需的。在示出的实例中,主机设备100为平板电脑,其具有控制按钮108和由边框106环绕的显示区域104。插座连接器110在主机设备100的底部处提供(例如,嵌入到外壳中)以允许附件连接至主机设备100。
附件102可为能够与主机设备102交互的任何附件,诸如扬声器底座或扬声器***、媒体控制台、汽车音响主体等等。附件102可具有各种用户接口部件,诸如扬声器112、显示器114和用户可操作控件116。在示出的实例中,附件102具有能够***插座连接器110中的插头连接器118以在附件102和主机设备100之间提供电连接和机械连接。在一些实施例中,电连接可同时包括电力连接和数据连接,从而允许附件102传送电力至主机设备100和/或从主机设备100接收电力。尽管指出连接器110和118之间的直接连接,但应当理解,一些实施例可使用间接连接,例如经由缆线或适配器。在一些实施例中,除了或代替如连接器110和118所提供的有线信号路径,主机设备100和附件102还能够例如使用诸如WiFi或Bluetooth之类的射频通信技术、近场通信技术、红外通信等进行无线通信。在一些实施例中,多条通信路径可能同时在主机设备100和附件102之间建立,不同类型的信息选择性地经由不同路径进行路由。
如插图120所示,主机设备100可存储各种数据对象,诸如数据对象122。数据对象的实例包括音频文件、视频文件、图像文件、原图文件、数据文件诸如文档和电子邮件消息、个人信息记录诸如联系方式信息或预约日程,等等。附件接口124可提供缓冲传输会话126以有助于将数据对象122传送至附件102;下面对具体实例进行描述。
如插图130所示,附件102可具有主机接口132,其与主机设备100的附件接口124兼容。控制逻辑134可操作主机接口132以将通信发送至主机设备100并接收来自主机设备的通信。控制逻辑134还可例如响应于从主机设备100所接收的指令或响应于通过控件116所接收的用户输入操作附件102的其他部件,并且可例如基于用户输入经由接口132向主机设备100发送消息。存储介质136可存储各种数据对象,包括传输自主机设备100的数据对象。
例如,附件102的控制逻辑134可生成从主机设备100接收数据对象(例如,数据对象122)的请求。在一个具体实例中,附件102可播放来自主机设备100的音频并通过扬声器112呈现音频;在播放音频时,附件102可请求与音频相关联的原图或图像文件以展示在显示器114上。在该示例中,控制逻辑134可经由接口132与主机设备100进行通信以确定哪些文件是可用的,然后再次通过经由接口132进行通信来请求文件(例如,数据对象122)。响应于所述请求,主机设备100的接口124可发起缓冲传输会话126以将数据对象122传输至附件102;附件102可将数据对象122存储在存储介质136中并执行使用数据对象122的其他操作,例如将原图或图像文件显示在显示器114上。
应当理解,图1的主机设备和附件为示例性的并且可能做出变型和修改。主机设备和/或附件可实现任何功能的组合。本文所述的缓冲传输会话可用于从主机设备100到附件102来传输任何数据对象;在一些实施例中,缓冲传输会话还可用于从附件102到主机设备100传输数据对象;例如,附件102可包括用于存储数据对象的存储设备,并且附件102的接口132可具有发起缓冲传输会话以传输所选择的数据对象至主机设备100的能力。
本文所述的缓冲传输会话可用于传输其大小在开始传输之前为已知的离散数据对象(诸如文件)。在一些实施例中,发起缓冲传输会话来传输单个数据对象并且在完成数据对象的传输时终止。在其它实施例中,一个缓冲传输会话可用于顺序地传输多个数据对象。如下所述,在一些实施例中,缓冲传输会话仅用于其大小超过某一阈值的数据对象,而其他可用的数据传输技术(例如,不同类型的通信会话)对于传输较小数据对象可更为有效。此外,一些实施例还可提供流式数据会话以传送其大小为未知的数据对象或不易分割成离散对象的数据流。因此,不需要主机设备100和附件102将缓冲传输会话用于所有数据传输。
图2为根据本发明的实施例的包括主机设备202和附件204的***200的简化框图。在该实施例中,主机设备202(例如,实施图1的主机设备100)可提供计算、传送和/或媒体回放能力。主机设备200可包括处理子***210、存储设备212、用户接口214、网络接口216和附件输入/输出(I/O)接口218。主机设备202还可包括其他部件(未明确示出),诸如电池、功率控制器和能够操作以提供各种增强的能力的其他部件。
存储设备212例如可使用磁盘、闪存存储器或任何其他非暂态存储介质或介质的组合来实现,并且可包括易失性和/或非易失性介质。在一些实施例中,存储设备212可存储数据对象,诸如音频文件、视频文件、图像或原图文件、有关用户联系方式(名称、地址、电话号码等)的信息、有关用户预约和事件的信息、备注和/或其他类型的信息。在一些实施例中,存储设备212还可存储需由处理子***210执行的一个或多个应用程序(例如,视频游戏程序、个人信息管理程序、媒体回放程序,等等)。
用户接口214可包括诸如触控板、触摸屏、滚轮、点击式转盘、拨号盘、按钮、开关、小键盘、麦克风等输入设备,和诸如显示屏、指示灯、扬声器、耳机插孔等输出设备,以及辅助性电子器件(例如,数模转换器或模数转换器、信号处理器等)。用户可操作用户接口214的输入设备以调用主机设备202的功能并且可经由用户接口214的输出设备查看和/或听取来自主机设备202的输出。
处理子***210可实现为一个或多个集成电路,例如一个或多个单核或多核微处理器或微控制器,其实例在本领域中是已知的。在操作中,处理***210可控制主机设备202的操作。在各种实施例中,处理子***210可响应于程序代码执行多种程序并且可保持多个同时执行的程序或进程。在任何给定时间,需执行的一些或所有程序代码可位于处理子***210中和/或诸如存储设备212之类的存储介质中。
通过合适的编程,处理子***210可为主机设备202提供各种功能。例如,响应于来自附件204的请求,处理子***210可发起缓冲传输会话以经由附件I/O接口218将存储在存储设备212中的数据对象传输至附件204。处理子***210还可执行用于控制主机设备202的其他功能的其他程序,包括可存储在存储设备212中的应用程序;在一些实施例中,这些应用程序可包括生成发送或接收数据对象的请求的指令,并且处理子***210可发起缓冲传输会话以服务于任何此类请求。
网络接口216可以为主机设备202提供语音和/或数据通信能力。在一些实施例中,网络接口216可包括用于访问无线语音和/或数据网络(例如使用蜂窝电话技术、诸如3G或EDGE的高级数据网络技术、WiFi(IEEE802.11系列标准)、或其他移动通信技术、或它们的任何组合)的射频(RF)收发器部件、用于短程无线联网(例如,使用蓝牙标准)的部件、GPS接收器部件,和/或其他部件。在一些实施例中,除了或代替无线接口,网络接口216可提供有线网络连接性(例如以太网)。网络接口216可以利用硬件(例如,驱动器电路、天线、调制器/解调器、编码器/解码器,以及其他模拟和/或数字信号处理电路)与软件组件的组合来实现。
附件I/O接口218可允许主机设备202与各种附件进行通信。例如,附件I/O接口218可支持连接计算机、外部键盘、扬声器底座或媒体回放台、数字相机、无线电调谐器、车载娱乐***或音响主体、外部视频设备、存储卡读卡器,等等。在一些实施例中,附件I/O接口218可包括连接器诸如与用于各种和产品中的连接器相对应的连接器,以及支持电路***。连接器可提供用于电源和接地端的连接以及诸如通用串行总线(USB)、火线(IEEE 1394标准)、和/或通用异步接收器/发送器(UART)之类的一个或多个数据通信接口的连接。在一些实施例中,连接器提供专用电源触头和接地触头,以及可用于并行地实现不同通信技术的一些数量(例如,四个)的可编程数字数据触头;例如,可将两个引脚分配为USB数据引脚(D+和D-)并且将两个其他引脚分配为串行发送/接收引脚(例如,实现UART接口);在建立连接时可协商引脚对特定通信技术的分配。在一些实施例中,连接器还可提供用于音频和/或视频信号的连接,其可以模拟和/或数字格式传输来往于主机设备202。因此,附件I/O接口218可支持多个通信信道,并且给定附件可使用任何或所有的这些信道。在一些实施例中,除了或代替有线通信信道,附件I/O接口218还可支持无线通信(例如,经由WiFi、Bluetooth或其他无线协议)。
附件202(例如,实现图1的附件102)可包括控制器230、用户接口设备232、存储介质233、其他附件专用硬件234和主机I/O接口236。附件202表示能够与主机设备进行互操作的一系列附件,并且此类附件在能力、复杂性和形状因数上可以有很大变化。各种附件可包括图2中未明确示出的部件,包括但不限于具有固定或可移动存储介质的存储设备(磁盘、闪存存储器等);显示屏、扬声器、或用于连接至外部音频/视频设备的端口;相机组件,诸如透镜、图像传感器和用于它们的控件(例如,光圈、缩放、曝光时间、帧率,等等);用于记录音频(单独地或与视频记录相结合)的麦克风;等等。此外,一些附件可提供可连接至并与另一附件进行通信的其他接口(未示出)。
控制器230可包括例如执行程序代码以执行与附件204相关联的各种功能的一个或多个单核或微处理器和/或微控制器。例如,在附件230包含用户可操作控件(例如,图1的控件116)的情况下,控制器230可翻译所述控件的用户操作并且作为应答来调用附件202的功能;在一些情况下,调用的功能可包括发送信息至主机设备202和/或从主机设备202接收信息。
用户接口232可包括诸如触控盘、触摸屏、滚轮、点击式转盘、拨号盘、按钮、开关、小键盘、麦克风等用户可操作输入设备,和诸如显示屏、指示灯、扬声器、耳机插孔等输出设备,以及辅助性电子器件(例如,数模转换器或模数转换器、信号处理器等)。根据特定附件202的具体实施,用户可操作用户接口232的输入设备以调用附件202的功能。
存储介质233可包含任何类型的数据存储介质,包括但不限于磁盘、闪存存储器、或任何其他非暂态存储介质、或介质的组合,并且可包括易失性和/或非易失性介质。存储介质233可用于存储需由控制器230执行的程序代码、从主机设备202接收的数据对象、以及可在附件204的操作中生成和/或使用的任何其他数据或指令。
附件专用硬件234可包括可存在于附件202中以允许其功能的任何其他部件。例如,在各种实施例中,附件专用硬件234可包括使用固定或可移动存储介质的一个或多个存储设备;GPS接收器;网络接口;电源和/或电源管理电路;环境传感器(例如,温度传感器、压力传感器、加速度计、化学传感器等);等等。应当理解,可通过提供适当的附件专用硬件234来支持任何类型的附件功能。
主机I/O接口236可允许附件204与主机设备202进行通信。根据本发明的一些实施例,主机I/O接口236可包括与包含在主机设备202中的连接器直接相配对的连接器,诸如与用于各种和产品中的连接器互补的连接器。此类连接器可用于向主机设备202提供电力和/或从主机设备202接收电力,用于以模拟和/或数字格式发送和/或接收音频和/或视频信号,并用于使用一种或多种数据通信接口诸如USB、UART和/或火线来传送信息。还可使用其他连接器;例如,主机I/O接口236可包含标准USB连接器并且可经由适配器线缆而连接至主机设备202的附件I/O接口218。在其它实施例中,除了或代替有线通信信道,主机I/O接口236还可支持无线通信(例如,经由WiFi、Bluetooth或其他无线协议)。
附件204可为与主机设备202交互的任何电子装置。在一些实施例中,附件204可提供对主机设备202操作的远程控制、或可同时包括输入控制和输出控制(例如,用于显示从主机设备202得到的当前状态信息的显示器)的远程用户接口。在各种实施例中的附件204可控制主机设备202的任何功能并且还可接收来自主机设备202的数据对象。在其它实施例中,主机设备202可控制附件204的操作,诸如从附件204的存储介质中检索存储数据,由结合到附件204中的相机发起图像捕获操作,等等。
应当理解,本文描述的***配置和部件是例示性的,并且可能做出变型和修改。主机设备和/或附件可具有本文未具体描述的其他能力(例如,移动电话、全球定位***(GPS)、宽带数据通信、互联网连接性,等等)。
位于主机设备202和附件204的相应的I/O接口218、236处的连接器可为互补的或根据需要不为互补的。在两个连接器非互补的情况下,可提供适配器(未示出)来用于连接两个设备。尽管连接器在本文中可描述为具有引脚(通常与具有用于连接部件的电线的常规电子设备相关联的术语),但应当理解,也可用其他信号路径(例如,光信号)来代替。此外,在一些实施例中,一些连接可为无线的,并且在提供无线接口的情况下可将连接器省略。
此外,尽管本文参考特定块描述了主机设备和附件,但应当理解,定义这些块是为了描述方便,并非旨在暗示组件部分的特定物理布置。此外,块不必对应于物理上不同的部件。可以配置块以执行各种操作,例如通过对处理器编程或提供适当的控制电路,并且各个块根据初始配置是如何获得的而可以被重新配置或不能被重新配置。可以在包括利用电路和软件的任意组合实现的电子设备在内的多种装置中实现本发明的实施例。
主机设备202的附件I/O接口218和附件204的主机I/O接口236允许主机设备202与附件204连接并随后从附件204断开。如本文所用,主机设备和附件在通信信道建立在它们相应的接口之间时“连接”并且在信道终止时“断开”。此类连接可经由直接物理连接,例如通过配对的连接器;间接物理连接,例如经由缆线;和/或无线连接,例如经由蓝牙来实现。
在一些实施例中,主机设备和附件可在通过根据“附件协议”交换消息和数据而连接时进行通信。消息和数据例如可使用由相关接口所提供的任何有线或无线传输介质进行传送。
附件协议可定义能够在主机设备202和与其连接的诸如附件204之类的任何附件之间交换的消息的“领域”。消息格式可包括例如指示以下所述为消息代码的起始位或位序列,之后是可由接收方翻译并实施的实际消息代码。消息代码中的至少一些可具有由协议定义的一个或多个相关联的参数,并且除了消息代码之外,消息还可包括用于任何此类参数的值。在一些情况下,协议还可在未接收到与消息代码相关联的特定参数的情况下或在通过消息代码接收到非期望参数的情况下规定接收方的行为。对于不同消息,多个参数可为不同的,并且在一些情况下,参数可具有可变长度。在一些实施例中,可对消息代码进行定义,使得给定消息代码仅在一个方向上为有效的。还可使用其他消息结构。
附件协议还可定义消息交换的格式。例如,附件协议可规定使用一个或多个分组来发送消息,每个分组具有标头和有效载荷。标头提供基本信息(例如,起始指示符;分组长度;分组序号;如下所述的分组与其相关联的会话标识符),而有效载荷提供全部或部分的消息数据。分组还可包括本领域中已知的错误检测或错误校正代码。
在一些实施例中,可在逻辑上将消息分成“通用”消息集和“可选”消息集。可能需要使用附件协议的每个附件和每个主机设备来至少支持通用消息集。该消息集可包括使得主机设备和附件能够彼此识别和验证并且提供有关它们相应的能力的信息的消息,包括每个均支持的可选集中的消息(如果有的话)。例如,通用消息集可包括附件可发送至主机设备的消息以列出可选集中的附件能够发送的每个消息以及可选集中的附件能够接收并实施的每个消息。通用消息集还可包括主机设备能够用于验证附件的声称身份和能力(或反之亦然)的认证消息,并且在认证不成功的情况下附件(或主机设备)可被阻止调用某些(或全部的)可选消息。
可选消息集可包括在给定附件中可能被支持或不被支持的与各种功能相关的消息。例如,可选消息集可包括允许附件对主机设备的需调用的功能进行识别的简单的远程消息、能够用于获得与将主机设备的全部或部分用户接口复制在附件上(从而支持更高级的远程控制)相关的信息的远程用户接口消息、允许用户通过操作主机设备控制附件中的无线电调谐器和/或通过操作附件控制主机设备中的无线电调谐器的消息、有助于在主机设备和附件之间传输数据对象(其实例在下文中描述)的消息,等等。可在附件协议中对可选消息的任何组合进行定义,并且并未要求给定附件或主机设备支持所有(甚至任何)的可选消息。
图3为示出根据本发明的实施例的主机设备202内的进程的进一步详情的框图。示出的各种进程可对应于在图2的处理子***210中执行的程序。在一些实施例中,多个处理器芯片或单个芯片内的多个处理器核可用于实现本文所述的多种进程。一些或所有的处理器可为执行软件和/或固件程序的可编程的通用处理器;其他的处理器可为数字信号处理器、具有内置功能的状态机、或它们的任何组合。
物理传输介质302可包括天线、信号引脚、驱动器、数模转换器、编码器、射频电路、以及可操作以经由物理传输介质发送和接收信号的其他部件,诸如引脚或电线、光纤、无线传输介质(例如,射频载波)等。特定的细节取决于传输介质,其为设计选择的问题。
协议守护进程304可通过管理各种物理的或逻辑的端口来控制附件协议通信。在一些实施例中,协议守护进程304可定义端口306,其对应于每个端口建立至附件的连接。尽管仅示出一个端口306,但一些实施例允许多个并发连接,并且可存在多个端口306。每个端口306可与物理传输介质302(其可为针对不同端口306的相同传输介质或不同传输介质)交互以接收和发送信号至连接于端口306上的附件。在一些情况下,端口306可以实现为软件对象(例如,设备固件的一部分);在其他情况下,端口306可连接至合适的通信硬件或与其相关联。协议守护进程304可提取经由接口306所接收的入站附件协议消息(或任何其他活动端口)并将它们传送至协议管理器308。协议守护进程304还可接收来自协议管理器308的出站附件协议消息并将这些消息提供至端口306(或另一活动端口)以供传送至连接至端口306的附件。
更具体地,协议守护进程304可包括链路层310,其可以实现为在适当的硬件上执行的软件对象(例如,设备固件的一部分)。在一些实施例中,链路层310操作为创建、发送、接收和读取符合附件协议的分组(例如,如上所述)。对于出站通信,链路层310可接收来自协议管理器308的消息,将消息封装进一个或多个分组中,并经由端口306和物理传输介质302发送分组。对于入站通信,链路层310可经由端口306接收分组,提取消息,并将消息提供至协议管理器308以供处理。在连接多个端口306的情况下,链路层310可管理跨不同的连接端口的通信交织,特别是在多个端口共享共同的物理传输介质(例如,使用所有端口所共用的天线的无线传输介质)的情况下。
协议管理器308可接收来自协议守护进程304的附件协议消息并开始翻译消息的进程。协议管理器308可以相同的格式接收所有消息,而与端口无关;因此,图3所示的进程堆栈的较高级别可与传输机制隔离开来。协议管理器308可将消息传送至充当协议管理器308(以及可选地其他低级别设备功能)和应用程序324之间的中间层的支持层322,或者在一些情况下直接传送至应用程序324。
协议管理器308可包括会话层312,其可以实现为在适当硬件上执行的软件对象(例如,设备固件的一部分)。会话层312可操作以创建并读取符合附件协议(例如,如上所述的协议)的消息。对于出站通信,会话层312可例如基于来自支持层308或直接来自应用程序324的函数调用来创建消息,并将消息提供至用于被发送的链路层310。对于入站通信,链路层310可将提取自分组的消息提供至会话层312以供处理。会话层312可翻译消息并将适当的函数调用发送至协议管理器308或直接发送至应用程序324。
在一些实施例中,会话层312可创建并定义不同类型的多个会话,每个会话被适配于处理不同类型的消息和数据交换。图3中的实例示出为会话314、316、318和320。每个会话可被分配唯一的会话标识符(未示出)使得会话层312中没有两个同时存在的会话具有相同的会话标识符。可定义不同的会话以处理附件协议中的不同子集的消息;在一些实施例中,这些子集可重叠。
控制会话314可被配置为处理与附件协议的通用消息集相关联的所有消息,诸如连接附件的识别和认证;控制会话314还可确定允许其他哪些类型的会话与附件进行通信。该确定可基于附件识别和认证、主机设备的能力,等等。
可创建消息会话316以处理来自附件协议的可选消息集中的至少一些消息。例如,大部分消息可包括相对较少量的参数和/或其他数据,并且消息会话316可用于创建和读取此类消息。
缓冲传输会话318可在请求传输诸如数据对象322之类的数据对象时进行创建。如下所述,缓冲传输会话318可管理对象级的数据对象322的传输,将较低级别的细节留给链路层310。在一些实施例中,多个缓冲传输会话(例如,会话318和320)可并存以支持多个数据对象的并发传输。
还可定义其他类型的会话(图3中未示出)。例如,针对传输来往于主机设备202的开放式数据可定义流式会话。还可定义测试和诊断会话,例如以供开发人员使用。
在具有多个端口306的一些实施例中,会话层312可针对每个连接端口定义不同组的会话。每个会话可具有全局唯一的会话标识符(例如,与第一端口相关联的控制会话和与第二端口相关联的控制会话可具有不同的标识符)。在一些实施例中,每个所接收的分组包含会话标识符,并且链路层310可基于会话标识符对所提取的消息进行路由;同样地,链路层310可基于消息来源的会话标识符将传出消息路由至端口。链路层310可保持会话标识符到端口的映射,并且会话层312可在不了解当前定义了哪些端口的情况下操作。应当理解,多个会话标识符可被映射到同一端口。在多个会话标识符映射到同一端口的情况下,链路层310可对来往于不同会话的通信交织进行管理,其对会话层312来说是透明的。
对于入站通信,协议管理器308中的会话314、316、318、320中的一个可接收来自协议守护进程304的附件协议消息并且开始对消息进行翻译的进程。协议管理器308可以相同的格式接收所有消息,而与端口无关;因此,图3所示的进程堆栈的较高级别可与传输机制隔离开来。协议管理器308可将消息传送至充当协议管理器308(以及可选地其他低级别设备功能)和应用程序324之间的中间层的支持层322,或者在一些情况下直接传送至应用程序324。
应用程序324可包括实现主机设备202的各种功能的一个或多个应用程序。实例包括用于导航媒体资产的数据库并用于回放各种类型的资产(例如,音频、视频、诸如照片之类的静态图像,等等)的接口。其他实例包括万维网浏览器、电子邮件程序、个人信息管理应用程序(例如,用于管理日历、任务、联系人等)、地理导航程序(例如,在存在的情况下使用GPS功能),等等。根据具体实施,应用程序324可为主机设备202的操作***的一部分、预加载到主机设备202上的独立程序、或由用户加载到主机设备202上的程序。
会话层312中的一些或所有会话可根据需求发起和终止。例如,控制会话314可在检测到新的连接并且对端口306进行初始化时发起。控制会话314可用于处理从附件接收的识别和认证消息并确定是否应创建消息会话316。在一些实施例中,控制会话314可保持活动状态直至端口306出现断开时为止。消息会话316可响应于控制会话314确定应创建消息会话316而创建。一旦创建,消息会话316可保持活动状态直至端口306出现断开时为止,或直至控制会话314确定应终止消息会话316(例如,由于经由端口306从附件接收到新的识别消息)时为止。
在一些实施例中,消息会话316可接收来自附件的、请求传输数据对象322的消息。作为响应,消息会话316可发起缓冲传输会话318以传输数据对象322。在一些实施例中,在控制会话314确定连接附件未被授权执行缓冲传输的情况下,可阻止消息会话316发起缓冲传输会话318。缓冲传输会话318一旦创建,则可开始传输数据对象322,并且一旦传输完成则可终止。如果随后对另一传输进行请求,则可创建另一缓冲传输会话。
应当理解,本文所述的进程是示例性的,并且可能做出变型形式和修改形式。主机设备202可支持任何类型的应用程序,并且应用程序可根据用户或另一进程的控制来启动或退出。预期较低级别的进程(包括支持层322、协议管理器308和协议守护进程304)可在软件和/或固件中实现并且可被配置为在设备上电时自动开始并仅在切断电源时或在检测到各种异常情况时终止。进程可在未使用时进入非活动状态以最小化资源消耗。此外,本文所示的所有等级和进程并非都是需要的;例如,在一些实施例中,应用程序可与协议管理器或协议守护进程直接通信。在其它实施例中,可对图3中单独示出的进程进行合并。
还应当了解,附件204可实现类似于图3所示的进程和设备或它们的任何变型。通信需要主机设备202和附件204同时具有适当配置的硬件和/或软件组件以发送和接收互通的消息(例如,符合分组级和消息级的附件协议),但具体实施可根据需要而变化。
如上所述,附件协议可根据需实现的功能包含任何数量和组合的消息。在本发明的某些实施例中,功能可包括使用缓冲传输会话将数据对象从主机设备传输至附件和/或将数据对象从附件传输至主机设备。附件协议可包括有助于建立缓冲传输会话和传输数据对象的消息。
例如,图4为表400,其示出根据本发明的实施例能够发送的与从主机设备到附件的文件传输相关的消息。这些信息例如可使用图3的进程进行发送和接收。对于列402中的每个消息,表400标识出消息为有效的方向404(附件(A)到主机(H)或主机到附件)和相关联的消息参数406。
DataRequest消息可从附件发送至主机设备以请求由DataID参数所识别的特定数据对象。DataID参数可包括由主机用来识别所请求的数据对象的任何信息,诸如文件名称、句柄、在保持文件标识符的情况下到查找表或其他数据结构中的索引、或任何其他信息。在会话层312在主机设备中实现的情况下,DataRequest消息可被发送至例如消息会话316。在一些实施例中,可存在用于请求不同种类的数据对象或用于指示所请求的数据对象的不同预期使用的多个不同消息。
BXSendReady消息可从主机发送至附件以指示缓冲传输会话(例如,图3的缓冲传输会话318)已在主机上发起并已准备好开始向附件发送数据对象。BXSendReady消息可包括分配给缓冲传输会话318的唯一的会话标识符(SessionID)、由附件发送的DataID参数、以及数据对象的大小信息。在一些实施例中,可省略DataID参数,并且附件可基于附件协议的规则推断出与缓冲传输会话相关联的数据对象的身份。例如,协议规则可规定在附件作出多个数据请求的情况下将按照请求顺序发起缓冲传输会话,或者每次仅一个数据请求可为显著的。大小消息例如可参考数据对象中数据字节的数量或传输整个数据对象将需要的分组的数量进行规定。参见图3,在一些实施例中,发起缓冲传输会话318包括将数据对象(或它的一部分)传输至能够访问链路层310的缓冲区330,并且BXSendReady消息是在将此完成之后发送的。
BXRcvReady消息可从附件发送至主机以指示附件已准备好接收数据对象。例如,在接收到BXSendReady消息时,附件可分配适当大小的缓冲区(或其他存储装置)以接收数据对象,使所分配的缓冲区与缓冲传输会话的SessionID相关联,并且进行任何其他必要或期望的准备,然后发送BXRcvReady消息。在一些实施例中,主机直到接收到BXRcvReady消息才开始发送数据对象。响应于BXRcvReady消息,主机可开始发送数据对象。
在一些实施例中,主机将数据对象作为一系列连续编号的分组进行发送,每个分组在标头中标记有缓冲传输会话的SessionID。SessionID标签足以指示分组包含数据对象的一部分,并且序号指示数据对象的哪部分。因此,无需来自主机的像这样识别出数据对象的传输部分的消息;附件可假设在其发送BXRcvReady之后,标记有缓冲传输会话的SessionID的所有接收到的分组包含数据文件的一部分,并且附件可基于序号按顺序放置这些部分。这能够减少在数据传输期间的开销并且允许数据对象更为有效地传输。
BXPause、BXResume和BXCancel消息可在主机发送数据对象的分组时的任何时间由附件进行发送。可发送BXPause消息以请求主机暂停发送其他对象数据分组直至另行通知,并且可发送BXResume消息以请求主机在BXPause之后恢复发送。在一些实施例中,暂停和恢复的具体实施依赖于如下所述用于通过其对分组进行发送和接收的链路层。
BXCancel消息可在传输处于进行中时由附件来发送以指示附件不再需要数据对象。在接收到BXCancel消息之后,图3的缓冲传输会话318可通知链路层310停止发送分组并释放缓冲区330,使其可用于其他用途。在此情况下,链路层310并不保留指示传输操作已到达位置处的信息。
BXDone消息可在已接收到整个数据对象后由附件来发送。响应于BXDone消息,图3的缓冲传输会话318可通知链路层310释放缓冲区330并且可终止。
应当理解,这些消息为例示性的,并且可能做出变型和修改。例如,以上所述的消息有关从主机到附件的数据对象传输。在一些实施例中,相同的消息或类似消息集可被定义为支持沿相反方向(从附件到主机)的数据对象传输;因此,一些实施例可支持沿任一方向或沿双向的、使用本文所述的缓冲传输会话的数据对象传输。
图5为根据本发明的实施例的用于发送数据对象的缓冲传输进程500的流程图。进程500例如可在使用图3所示的软件进程的图2的主机设备200中实现。
在框502处,在主机设备处接收对数据对象的请求。该请求可来自各种来源。在一些实施例中,请求可作为如上所述参考图4的DataRequest消息从附件中接收。在一些实施例中,在主机设备上执行的应用程序324可确定应被传输的数据对象并且直接地或经由支持层322发送指令至协议管理器308。请求可识别需传输的特定数据对象,例如数据对象322。
在框504处,会话层312可发起缓冲传输会话318以传输数据对象322。例如,在框506处,可将唯一的会话标识符(SessionID)分配给缓冲传输会话318。在框508处,缓冲传输会话318可确定数据对象322的大小。在框510处,会话层312可分配链路层310中的缓冲区330以暂时存储待传输的数据对象322(或它的一部分)在框512处,会话层312可将数据对象322(或它的第一部分)加载到缓冲区330中。在一些实施例中,数据对象322可本地存储到主机设备200,例如存储在存储设备212中。在一些实施例中,数据对象322还可被远程地存储并使用网络接口216从其存储位置中检索。加载数据对象322可包括将数据对象从其存储位置复制或移动到缓冲区330。
在框514处,当数据对象322(或其足够部分)已加载到缓冲区330中时,缓冲传输会话318可发送BXSendReady消息至附件(例如,经由链路层310)。如上所述,BXSendReady消息可包括缓冲传输会话318的SessionID、数据对象的大小信息(在框508处获得)和数据对象的标识符。在框516处,缓冲传输会话318可接收来自附件的BXRcvReady消息(例如,经由链路层310);BXRcvReady消息还可包括缓冲传输会话318的SessionID。
在框518处,链路层310可传输数据对象。例如,响应于BXRcvReady消息,缓冲传输会话318可发信号通知链路层310开始从缓冲区330生成数据分组。链路层310可管理实际的数据传输:生成分组、发送分组和接收来自附件的确认(Ack分组)或否定确认(Nack分组)。在一些实施例中,缓冲传输会话318在传输期间可为活动状态以用作其他目的。例如,如果数据对象322大于缓冲区330,则缓冲传输会话318可对缓冲区330中未发送数据的程度进行监控,并将数据对象322的其他部分传输至缓冲区330,替换已被成功发送的部分。常规的方案,诸如读取指针和写入指针,可用于管理缓冲区330中未发送数据的程度并且用于防止缓冲区330中的数据在其成功传输至附件之前被覆盖。在传输处于进行中时,缓冲传输会话318可侦听来自附件的消息,诸如图4所示的BXPause、BXResume、和BXCancel消息。(以下参考图8来描述相对于这些消息的缓冲传输会话318的操作。)
在框520处,当传输数据对象322完成时,附件可发送如上所述的BXDone消息。响应于BXDone消息,缓冲传输会话318可结束或终止于框522处。结束缓冲传输会话318可包括在框524处释放链路层310中的缓冲区330(即,释放由其他进程使用的资源)以及在框326处释放缓冲传输会话318的SessionID以供不同缓冲传输会话或不同类型的会话进行再利用。
图6为根据本发明的实施例的用于接收数据对象的缓冲传输进程600的流程图。进程600例如可在用于接收与在主机设备202上执行的进程500相关的数据对象的图2的附件204中实现。
在框602处,附件204可将对数据对象的请求发送至主机,例如主机设备202。在一些实施例中,可使用如上所述的DataRequest消息。在一些实施例中,代替发送请求,附件204可接收指示主机提出发送数据对象的消息,并且附件204可响应以指示接受。
在框604处,附件204可接收来自主机设备202的BXSendReady消息或指示主机设备202已准备好发送数据对象的另一消息。如上所述,BXSendReady消息可包括与传输相关联的缓冲传输会话的SessionID。在框606处,响应于BXSendReady消息,附件204可准备接收数据对象。例如,附件204可分配足够量的存储空间(例如,存储介质233内的区域)。在一些实施例中,附件204可发起其自身的缓冲传输端点以有助于管理传输。该端点可为会话或在适当的硬件上执行的其他软件对象。在一些实施例中,缓冲传输端点例如可基于分组序号将所接收的数据存储到所分配存储空间内的适当位置(从而允许顺序颠倒地接收分组)。在一些实施例中,缓冲传输端点还可对所接收分组的有效载荷执行数据完整性检查、视情况生成确认或重试分组,等等。在一些实施例中,可在与如上所述的链路层310相类似的链路层中对传入分组的管理进行处理。
在框608处,当已准备好开始接收分组时,附件204可发送BXRcvReady消息至主机设备202。在框610处,附件204可开始接收来自主机设备202的数据分组。如上所述,数据分组可包括序号、将其标识为属于缓冲传输会话(例如,通过包括SessionID)的标头和包含进行传输的对象的一部分的有效载荷。附件204可从每个所接收的分组中提取有效载荷并将其存储到所分配的存储区域中(例如,在存储介质233内分配的区域);可基于序号选择特定的存储位置,并且可顺序颠倒地接收分组而不影响数据完整性。在分组包括错误检测代码的实施例中,附件204可在存储有效载荷之前验证数据完整性;如果分组包括错误校正代码,附件204可在存储有效载荷之前校正数据。附件204还可发送Ack(确认)和Nack(否定确认)分组至主机设备202。在一些实施例中,针对每个成功接收的分组发送Ack,并且在分组包含错误的情况下发送Nack。在其它实施例中,在成功接收到一组N个连续分组之后(N例如可为2、4、8或16)发送一个Ack,并且在检测到错误的情况下发送Nack;滑动窗口或其他技术可用于管理对Ack分组和Nack分组的发送和响应。如上所述,根据具体实施,生成Ack分组和Nack分组可被委派给附件中的链路层。
在框612处,附件204可例如基于所接收的数据的量和数据对象的已知大小来确定是否已接收到整个数据对象。如果已接收的部分小于整个数据对象,进程600可返回至框610以继续接收分组。一旦已接收到整个数据对象,在框614处,附件204可发送BXDone消息至主机设备202以确认递送。
图7为根据本发明的实施例的进一步示出进程500和600的操作的简化消息传送图。在该图中,时间是垂直运行的并且各种进程由垂直线来表示;在进程之间发送的消息以箭头示出。将主机702示出为具有包括协议管理器704、缓冲传输会话706和链路层708的进程;这些可类似于以上参考图3描述的进程。将附件710示出为具有单个进程;应当理解,还可存在另外的进程,例如单独的链路层和会话层。
示出的消息顺序开始于从附件704发送至主机702的DataRequest消息712,识别出所请求的数据对象。DataRequest消息712由协议管理器704接收,协议管理器可发送意图传输所请求数据对象的确认(消息714)并发起缓冲传输会话706(消息716)。如Alloc/Ld信号718所指出的那样,缓冲传输会话706对链路层708中的缓冲区进行分配并将所请求数据对象加载到缓冲区中。尽管示出单个Alloc/Ld信号718,但应当理解,在此阶段可在主机702中交换多个信号并且其他进程(未明确示出)可参与对主机702进行准备以用于传输。
当主机702已准备好开始传输时,将BXSendReady消息718发送至附件704。附件704准备接收数据,并且在其做好准备时,发送BXRcvReady消息720至主机702,消息由缓冲传输会话706进行接收。作为响应,缓冲传输会话706可发送Go信号722至链路层708以发起用于传输数据对象的分组的发送。
数据对象的传输由数据分组726和Ack分组728来表示。每个数据分组726可包括分组ID(例如,序号)以及与缓冲传输会话706相关联的会话标识符(SessID)。如上所述,各种技术可在链路层708和附件704之间实现以确保分组的接收和数据完整性。这些技术可包括由附件704来发送Ack分组728;每个Ack分组728可确认单个数据分组或多个数据分组。可交换任何数量的数据分组726和Ack分组728。
当附件704已接收到整个数据对象时,可发送BXDone消息730至缓冲传输会话706。缓冲传输会话706可通过指示链路层708释放缓冲区(信号732)进行响应,在此之后缓冲传输会话706可结束,其由信号734所指示。
如图7所示,缓冲传输会话可响应于数据请求而发起并且在传输完成时终止。单独的链路层可管理数据传输进程的详情,而无需所述缓冲传输会话的干预。在一些实施例中,数据分组(例如,数据分组726)的有效载荷可完全由来自数据对象的数据组成;接收方(在这种情况下,附件704)可根据标头中存在会话标识符以及分组的定时(即,在附件发送BXRcvReady之后接收)推断出分组包含对象数据。这就能够减少与使用分组传输较大数据对象相关联的开销。
应当理解,本文所述的缓冲传输会话为例示性的并且可能做出各种变型和修改。可并行执行按序列描述的步骤,可改变步骤的次序,并且可修改、组合、添加或省略步骤。例如,在上述实施例中,缓冲传输会话用于传输单个数据对象。在其它实施例中,单个缓冲传输会话可用于在能够检测到每个数据对象的起点和/或终点时相继地传输一系列数据对象。例如,如果正在发送多个数据对象,则主机可发送第一数据对象,等待来自附件的BXDone,然后开始发送第二数据对象。在一些实施例中,在发送第二数据对象之前,主机可发送标识第二数据对象的第二BXSendReady并等待来自附件的BXRcvReady响应。
如上参考图4所描述的,在一些实施例中,附件可请求主机暂停、恢复或取消进行中的缓冲传输。图8为根据本发明的实施例的例如可在图3的缓冲传输会话318中实现的进程800的流程图。进程800示出可在链路层310正生成并发送数据分组时进行的操作。
在框802处,进程800可等待要接收的消息。消息可例如经由如上所述的链路层310来接收。在框804处,如果未接收到消息,进程800可继续等待直到接收到消息为止。在框806处,进程800翻译消息。在该示例中,消息可为“暂停”(例如,上述BXPause消息)、“恢复”(例如,上述BXResume消息)、“取消”(例如,上述BXCancel消息)或“完成”(例如,上述BXDone消息)。
对于暂停消息,在框810处,进程800可发信号通知链路层310停止发送数据分组。在一些实施例中,该信号仅仅影响与缓冲传输会话相关的数据分组的发送;链路层310可继续发送与其他会话(例如,图3的消息会话316或控制会话314)相关联的分组。在框812处,缓冲传输会话318(或链路层310)可保存由附件所确认的最后的数据分组的分组标识符(例如,序号);这就能够允许链路层310恢复传输而几乎没有重复或完全没有重复。进程800可返回至框802以等待进一步的消息。
对于恢复消息,在框820处,进程800可确定传输当前是否被暂停(例如,BXPause是否为所接收的最后的消息)。如果不是,可忽略恢复消息,并且进程800可返回至框802以等待进一步的消息。(在一些实施例中,在传输未暂停时接收到恢复消息可被视为错误,并且缓冲传输会话318可中止传输。)在框822处,如果传输当前被暂停,则缓冲传输会话318可指示链路层310恢复对数据分组的发送。在一些实施例中,链路层310(或缓冲传输会话318)已保存最后被确认的分组的标识符,并且所述传输可利用最后被确认的分组之后的下一连续分组进行恢复。进程800可返回至框802以等待进一步的消息。
对于取消消息,在框830处,进程800可发信号通知链路层310停止发送数据分组。正如暂停消息一样,这无需影响发送与其他会话相关联的分组。在此情况下,假设附件将不恢复传输,并且无需保存有关传输的当前状态的信息。在框832处,缓冲传输会话318可结束。在成功完成的情况下,结束可包括释放链路层缓冲区和释放会话标识符。
对于完成消息,进程800可前进至框832以结束缓冲传输会话。(由于传输完成,因此假设链路层310不发送数据分组。)
应当理解,进程800可根据具体实施而包括另外的选项。在传输期间还可接收其他消息;例如,附件可发送周期性的状态消息至缓冲传输会话。
在一些实施例中,多个数据对象的传输可同时处于进行中,每个数据对象处于不同的缓冲传输会话中。图9为根据本发明的实施例的、类似于图7的、示出可将两个数据对象从主机设备902传输至附件904的一个场景的简化消息传送图。
顺序可开始于附件904发送消息920至主机904的协议管理器906以请求第一数据对象(ObjA)。协议管理器906可通过确认(消息922)进行响应并如消息924所指出的那样发起具有唯一标识符的第一缓冲传输会话908(Sess1)。消息926可用于分配链路层912中的缓冲区并为传输第一数据对象(例如,如上所述)做准备。当第一缓冲传输会话908准备好时,其可发送BXSendReady消息928至附件904,所述消息包括其会话标识符和第一数据对象的标识符。附件904可通过BXRcvReady消息930进行响应。缓冲传输会话908可指示链路层912开始发送分组(“Go”消息932);对分组的发送可如数据和Ack消息934所指出的那样开始。
在传输第一数据对象完成之前,附件904可发送消息940至协议管理器906以请求第二数据对象(ObjB)。协议管理器906可通过确认(消息942)进行响应并如消息944所指出的那样发起具有唯一标识符的第二缓冲传输会话910(Sess2)。消息946可用于分配链路层912中的第二缓冲区并为传输第二数据对象(例如,如上所述)做准备。在所有这些均发生的情况下,链路层912可如消息948所指出的那样继续发送第一数据对象的分组。
当第二缓冲传输会话910准备好时,其可发送BXSendReady消息950至附件904,所述消息包括其会话标识符(Sess2)和第二数据对象(ObjB)的标识符。附件904可通过BXRcvReady消息952进行响应;由于会话标识符是不同的,因此与进行中的第一会话不存在混淆。在接收消息952之后,缓冲传输会话910可指示链路层912开始发送分组(“Go”消息954)。
此时,链路层912可具有两个进行中的缓冲传输。来自两个缓冲传输中的数据可在主机902和附件904之间的单一物理传输介质上交织;例如,消息956和958中的任一消息可根据需要交织进行。在一些实施例中,优先逻辑可用于确定来自不同缓冲传输的分组之间的相对顺序。在一些实施例中,如果在主机902和附件904之间连接多个端口或多个传输介质(例如,如上参考图3所描述的),链路层310可经由不同端口或传输介质对用于不同缓冲传输的分组进行路由。
在接收侧(附件904),可通过参考所述会话标识符将用于不同对象的数据区别开来,所述会话标识符可被包括在如上所述的每个分组标头中。基于会话标识符,附件904可将每个分组的有效载荷存储到适当位置中,从而同时装配两个数据对象。由附件904发送的每个Ack分组还包括会话标识符,允许链路层912正确地追踪对于每个传输而言哪些分组已被接收或尚未接收。
当附件904已接收到第一数据对象的所有分组时,其可发送BXDone消息960至主机设备902。由于BXDone消息960以特定的缓冲传输会话(Sess1)标识,因此其由缓冲传输会话908(而非缓冲传输会话910)进行处理。缓冲传输会话908可释放其在链路层912中的缓冲区(消息962)并结束(消息964)。第二缓冲传输会话910继续,并且链路层912可如消息966所指出的那样继续发送用于第二数据对象的分组。
当附件904已接收到用于第一数据对象的所有分组时,其可发送BXDone消息968至主机设备902。BXDone消息968由缓冲传输会话910进行处理(基于其会话标识符)。缓冲传输会话910可释放其在链路层912中的缓冲区(消息970)并结束(消息972)。
应当理解,图9的消息顺序为例示性的,并且可能做出各种变型和修改。可使用不同的消息,并且可改变顺序。例如,在一些情况下,根据优先规则、可用的传输介质和所传输数据对象的大小,开始较晚的传输可能先于开始较早的传输而完成。任何数量的传输可同时处于进行中,其受制于可能由主机或附件对并发会话数量所施加的限制,这关乎设计选择的问题;此类选择可基于可用的资源、对快速完成传输的愿望、预期使用场景等等。
在一些实施例中,各种错误可能在缓冲传输期间发生。如上所述,分组传输错误可通过重新发送分组来处理。如果错误率过高,一些实施例可中止传输(如果需要重新开始)。
还可能的是附件或主机可在传输期间变为断开的。例如,参见图1,用户可在传输进行时物理地断开连接器110和118。在无线传输的情况下,例如在一个设备移出另一个设备的范围的情况下或在信号质量以其他方式降至无法接受的水平的情况下,连接可能丢失。其他事件也可导致断开。在断开的情况下,本发明的一些实施例可简单地中止传输;当设备重新连接时,如果需要,传输可从头重新启动。
在一些实施例中,可继续进行中的传输,而不重新开始。例如,可实现回退和/或持续逻辑。如本文所用,回退为在同一附件连接在两个或更多个端口上的情况下的选项。如果一个端口断开,则链路层可回退至保持连接的另一端口并继续传输。持续是在回退端口不可用的情况下(或在无法实现回退逻辑的情况下)的选项;根据该选项,进行中的传输的当前状态信息可被保存到持久性存储装置中并在附件重新连接时访问,允许传输恢复。
图10示出根据本发明的实施例的实现回退和持续的进程1000。在框1002处,检测到例如链路层310中的端口断开,并且链路层310停止向断开的端口发送分组。在框1004处,链路层310可确定回退端口是否处于连接状态。例如,在一些实施例中,链路层310可保持端口映射,其包括(针对每个当前连接的端口)连接至该端口的附件的标识符;如果同一附件标识符与端口映射中的两个端口相关联,则两个端口中的任一个可为另一端口的回退端口。
如果回退端口处于连接状态,则在框1006处,链路层310可确定是否使用回退端口来继续缓冲传输操作。例如,链路层310可经由回退端口将特定的控制分组发送至附件,从而提供有关进行中的传输的信息。附件可通过经由回退端口发送分组来响应:Ack分组可用于指示传输应经由回退端口来恢复,并且Nack分组可用于指示不应恢复传输。
如果在框1006处确定传输应继续,则在框1008处所述传输可使用回退端口而恢复。例如,链路层310可确定在断开之前最后被确认的分组的序号,并且通过下一连续分组而恢复。可使用相同的缓冲传输会话标识符,并且转变为新端口对缓冲传输会话来说是不可见的。
如果回退端口未连接(框1004)或如果确定传输不应经由回退端口而继续(框1006),则在框1010处进程1000可确定传输是否应持续。在一些实施例中,在主机和附件之间可对持续进行协商,例如,在识别进程期间或在请求数据对象传输时。如果传输应持续,则在框1012处,传输的当前状态信息由主机进行保存。该信息可包括例如数据对象的标识符、最后发送的分组的序号(或已知数据对象的哪些部分已传输的一些其他指示)、会话标识符、数据对象所传输至的附件的标识符,以及可用于在同一附件重新连接时重建传输的任何其他信息。状态信息可保存在主机设备中的非易失性存储装置中使其在附件重新连接时可用。在一些实施例中,传输状态信息仅在固定时间段内保存(例如,一天、一周或30天)以避免状态信息的蓄积。
如果回退端口和持续均不可用,则在框1014处,可中止所述缓冲传输会话。在这种情况下,附件可重新连接并通过从头启动新的传输操作来获得数据对象。
本文所述的实施例可提供较大数据对象在两个设备之间的可靠有效的传输。将会话层与链路层分离允许以多个层次来管理传输:会话层将传输作为涉及数据对象的单一事务来处理,而链路层将传输作为数据分组序列来处理。此外,由于在发送方和接收方之间存在点对点连接,因此链路层可使用非常简单的分组结构来减少开销。例如,数据分组可仅仅包括以下元素:会话标识符、序号、错误检测和/或错误校正代码、以及对象数据。分组无需明确标识发送方、接收方或其所有关的数据对象。由于分组可为固定长度(例如,由端口(分组将经由其发送)所支持的最大长度,以便最小化所需的分组数量),因此有效载荷信息尽管是可选的但并不需要。另外的元素可包括起始字节、结束字节或用于帮助接收方将比特流解析到分组中的类似分隔符。
尽管相对于特定实施例对本发明进行了描述,但本领域的技术人员应认识到,可能做出许多修改并且可使特定参考一个实施例所描述的特征适用于其他实施例中。
例如,前述具体实施方式涉及将数据对象从主机传输到附件。本领域的技术人员应理解,可将角色颠倒,并且相同的技术可用于将数据从附件传输到主机。更一般地,所述技术可用于在其间具有点对点连接的任何两个设备之间传输数据。
以发送设备为重点,对缓冲传输会话进行了描述。应当理解,接收设备也可实现单独的会话层和链路层。因此,例如,接收设备可响应于接收到BXSendReady消息而发起缓冲传输会话,并且会话可生成诸如BXRcvReady和BXDone之类的消息。同时,接收设备中的链路层可处理数据分组的接收、检查和确认;接收链路层可将实际数据路由到接收缓冲传输会话或简单地将其存储在缓冲区中并且当缓冲区已准备好被读取时将通知所述接收缓冲传输会话。所述接收缓冲传输会话可有助于将数据移动至长期存储位置和/或将所接收的数据对象传送至将对其进行使用的用户进程。在上述实例中,缓冲传输操作可基于来自接收设备的请求而发起。其他事件也可导致发起缓冲传输操作。例如,在第一设备上执行的应用程序可确定第一设备连接至第二设备并且第一设备将发送特定数据对象至第二设备。应用程序可指示第一设备中的较低层发起缓冲传输,而传输操作本身可使用上述技术来实现。因此,传输操作并不依赖于传输请求的来源。
在一些实施例中,缓冲传输会话的发起与否基于发送设备的协议管理器进行确定。例如,当接收到对传输数据对象的请求时,协议管理器可确定数据对象的大小。在一些情况下,小数据对象可使用消息来传输,所述消息能够使用消息会话(例如,图3的会话316)进行发送。由于可能存在与发起缓冲传输会话相关联的开销,因此在数据对象足够小的情况下,使用消息会话来发送数据对象可能更有效。因此,协议管理器可对数据对象的大小施加阈值。如果大小低于阈值,数据对象可经由消息会话进行发送;如果大小超过阈值,可使用缓冲传输会话。在一些实施例中,阈值可基于关于与建立缓冲传输会话相关联的开销的具体实施细节、分组的大小和传输速率、在消息会话中用于缓冲传出数据对象的可用资源等进行确定。
本公开整体涉及数据对象的传输,所述数据对象可为任何固定大小的数据项,对于数据的大小或信息内容没有限制。此外,应当理解,本文所用的“传输”涉及将数据对象从发送方提供到接收方;根据具体实施,在传输之后发送方可能保留或不保留原始数据对象。(因此,“传输”应理解为同时包括复制和移动数据对象。)
可使用专用组件和/或可编程处理器和/或其他可编程设备的任意组合来实现本发明的实施例。本文所述的各种进程可以任何组合方式在相同处理器上或不同处理器上实现。在组件被描述为被配置成执行某些操作的情况下,可例如通过设计电子电路以执行操作、通过对可编程电子电路(诸如微处理器)进行编程以执行操作或它们的任何组合,来实现此类配置。尽管上述实施例可引用具体硬件和软件组件,但本领域的技术人员将会知道,也可以使用硬件和/或软件组件的不同组合,并且被描述为在硬件中实现的特定操作也可能在软件中实现,或反之亦然。
可以在各种计算机可读存储介质上编码并存储结合了本发明各特征的计算机程序;合适的介质包括磁盘或磁带、光学存储介质诸如光盘(CD)或DVD(数字多功能盘)、闪存存储器,以及其他非暂态介质。(应当理解,数据的“存储”不同于使用诸如载波之类的暂态介质的数据传播。)可将用程序代码编码的计算机可读介质与兼容的电子设备封装在一起,或者所述程序代码可独立于电子设备提供(例如,经由互联网下载或作为单独封装的计算机可读存储介质)。
因此,尽管已相对于具体实施例描述了本发明,但应当理解,本发明意在覆盖以下权利要求范围之内的所有修改和等价形式。
Claims (25)
1.一种用于在第一设备和第二设备之间传输数据的方法,所述方法包括:
由所述第一设备建立与所述第二设备的点对点通信链路;
在所述第一设备处,接收向所述第二设备发送第一数据对象的指令;
由所述第一设备对所述第一数据对象进行定位;
由所述第一设备将第一唯一标识符分配给第一传输会话;
由所述第一设备经由所述点对点通信链路将包含所述第一唯一标识符的第一发送准备就绪消息发送至所述第二设备;
响应于所述第一发送准备就绪消息,由所述第一设备经由所述点对点通信链路从所述第二设备接收第一接收准备就绪消息;以及
响应于所述第一接收准备就绪消息,由所述第一设备经由所述点对点通信链路向所述第二设备发送第一多个分组,所述第一多个分组中的每个分组包括所述第一唯一标识符和所述第一数据对象的不同部分,其中所述第一多个分组包括足以传输所述第一数据对象的全部的多个分组。
2.根据权利要求1所述的方法,其中所述分组不包括发送方设备标识或接收方设备标识。
3.根据权利要求1所述的方法,其中发送所述第一数据对象的指令经由所述点对点通信链路作为数据请求消息从所述第二设备接收。
4.根据权利要求1所述的方法,还包括:
在发送所述第一多个分组时,在所述第一设备处,接收向所述第二设备发送第二数据对象的指令;
由所述第一设备对所述第二数据对象进行定位;
由所述第一设备将第二唯一标识符分配给第二传输会话;
由所述第一设备经由所述点对点通信链路将包含所述第二唯一标识符的第二发送准备就绪消息发送至所述第二设备;
响应于所述第二发送准备就绪消息,由所述第一设备经由所述点对点通信链路从所述第二设备接收第二接收准备就绪消息;以及
响应于所述第二接收准备就绪消息,由所述第一设备经由所述点对点通信链路向所述第二设备发送第二多个分组,所述第二多个分组中的每个分组包括所述第二唯一标识符和所述第二数据对象的不同部分,其中所述第二多个分组包括足以传输所述第二数据对象的全部的多个分组,
其中所述第一多个分组中的至少一些和所述第二多个分组中的至少一些在所述点对点通信链路上交织。
5.根据权利要求1所述的方法,还包括:
在发送所述第一多个分组时,从所述第二设备接收暂停消息;以及
响应于所述暂停消息,停止发送所述第一多个分组。
6.一种用于从第一设备向第二设备传输数据的方法,所述方法包括:
由所述第二设备建立与所述第一设备的点对点通信链路;
在所述第二设备处,接收来自所述第一设备的发送准备就绪消息,所述发送准备就绪消息指示所述第一设备已准备好向所述第二设备传输数据对象,所述发送准备就绪消息包括用于传输所述数据对象的会话标识符;
由所述第二设备将接收准备就绪消息发送至所述第一设备,所述接收准备就绪消息指示所述第二设备已准备好接收所述数据对象;
继发送所述接收准备就绪消息之后,由所述第二设备接收来自所述第一设备的多个分组,所述多个分组中的每个分组包括标头和有效载荷,所述标头包括所述会话标识符和序号,其中所述多个分组中的每个分组具有不同的序号;
由所述第二设备基于所述会话标识符确定所述多个分组中的每个分组的所述有效载荷包含所述数据对象的一部分;以及
由所述第二设备将所述多个分组中的每个分组的所述有效载荷存储在存储介质中,其中用于存储所述多个分组中的每个分组的所述有效载荷的位置至少部分地基于所述分组的所述序号来确定。
7.根据权利要求6所述的方法,其中所述发送准备就绪消息包括指示待传输的所述数据对象的大小的信息,所述方法还包括:
在发送所述接收准备就绪消息之前,由所述第二设备分配所述存储介质中的足以包含所述数据对象的空间,所述分配基于指示所述数据对象的大小的所述信息。
8.根据权利要求6所述的方法,还包括:
由所述第二设备确定是否已接收所述数据对象的所有部分;以及
响应于确定已接收所述数据对象的所有部分,由所述第二设备向所述第一设备发送指示所述传输完成的完成消息。
9.根据权利要求6所述的方法,其中所述多个分组中的每个分组包括错误检测代码,所述方法还包括:
由所述第二设备检查所述多个分组中的第一子集的每个分组以检测错误,所述检查使用所述错误检测代码;
在未检测到所述多个分组中的所述第一子集中存在错误的情况下,由所述第二设备将确认分组发送至所述第一设备;以及
在检测到所述多个分组中的所述第一子集中存在至少一个错误的情况下,由所述第二设备将否定确认分组发送至所述第一设备。
10.根据权利要求6所述的方法,还包括:
继建立所述连接之后,由所述第二设备向所述第一设备发送对所述数据对象的请求,
其中响应于对所述数据对象的所述请求,接收所述发送准备就绪消息。
11.根据权利要求6所述的方法,还包括:
在接收所述多个分组时,由所述第二设备向所述第一设备发送暂停消息,其中响应于所述暂停消息,所述第一设备暂停所述多个分组的发送;以及
在发送所述暂停消息之后,由所述第二设备向所述第一设备发送恢复消息,其中响应于所述恢复消息,所述第一设备恢复所述多个分组的发送。
12.一种电子设备,包括:
被配置为建立与接收方设备的点对点通信链路的接口;和
耦接至所述接口的处理子***,所述处理子***被配置为:
发起多个会话,所述多个会话包括被配置为经由所述点对点通信链路将数据对象传输至所述接收方设备的缓冲传输会话,所述多个会话中的每个会话具有为其分配的唯一标识符;
将所述数据对象的至少一部分加载到缓冲区中;
经由所述点对点通信链路将发送准备就绪消息发送至所述接收方设备,所述发送准备就绪消息包括分配给所述缓冲传输会话的所述唯一标识符;
响应于所述发送准备就绪消息,经由所述点对点通信链路接收来自所述接收方设备的接收准备就绪消息;以及
响应于所述接收准备就绪消息,经由所述点对点通信链路向所述接收方设备发送分组序列,其中所述序列中的每个分组包括序号、分配给所述缓冲传输会话的所述唯一标识符和所述数据对象的从所述缓冲区读取的一部分,其中所述分组序列包括对应于所述数据对象的每个部分的分组。
13.根据权利要求12所述的电子设备,其中所述处理子***还被配置为执行应用程序,并且其中所述缓冲传输会话是响应于来自所述应用程序的向所述接收方设备传输所述数据对象的指令而发起的。
14.根据权利要求12所述的电子设备,其中所述处理子***还被配置为从所述接收方设备接收对所述数据对象的请求,并且其中所述缓冲传输会话是响应于接收所述请求而发起的。
15.根据权利要求12所述的电子设备,其中所述电子设备为便携式设备。
16.根据权利要求15所述的电子设备,其中所述接口包括连接器并且所述接收方设备为所述便携式电子设备的连接至所述连接器的附件。
17.根据权利要求12所述的电子设备,其中所述处理子***还被配置为对链路层进行定义,并且其中发送所述分组序列是由所述链路层执行的。
18.一种电子设备,包括:
被配置为建立与发送方设备的点对点通信链路的接口;
被配置为存储数据的存储介质;以及
耦接至所述接口和所述存储介质的处理子***,所述处理子***被配置为:
经由所述点对点通信链路向所述发送方设备发送对数据对象的请求;
经由所述点对点通信链路从所述发送方设备接收指示所述发送方设备已准备好发送所述数据对象的发送准备就绪消息,所述发送准备就绪消息包括与所述数据对象的传输相关联的会话标识符;
经由所述点对点通信链路将指示所述电子设备已准备好接收所述数据对象的接收准备就绪消息发送至所述发送方设备;
经由所述点对点通信链路从所述发送方设备接收作为由所述发送方设备产生的分组序列的所述数据对象,所述分组序列中的每个分组标记有与所述数据对象的传输相关联的会话标识符并且包括所述数据对象的作为有效载荷的一部分;以及
将所接收的分组中的每个分组的所述有效载荷作为所述数据对象的一部分存储在所述存储介质中。
19.根据权利要求18所述的电子设备,其中所述分组序列中的每个分组包括序号并且其中所述处理子***还被配置为至少部分地基于所述分组的所述序号来确定用于存储每个分组的所述有效载荷的存储介质内的位置。
20.根据权利要求18所述的电子设备,其中所述处理子***还被配置为:
确定所述分组序列的子集是否被无错误地接收;
在所述子集被无错误地接收的情况下,经由所述点对点通信链路向所述发送方设备发送确认分组;以及
在所述子集并非被无错误地接收的情况下,经由所述点对点通信链路向所述发送方设备发送否定确认分组。
21.一种存储有程序代码的计算机可读存储介质,所述程序代码包括指令,所述指令在被电子设备中的处理子***执行时使得所述处理子***执行一种方法,所述方法包括:
建立与接收方设备的点对点通信链路;
确定第一数据对象将被传输至所述接收方设备;
发起第一缓冲传输会话以管理所述第一数据对象至所述接收方设备的所述传输,其中发起所述第一缓冲传输会话包括将第一唯一标识符分配给所述第一缓冲传输会话;
经由所述点对点通信链路从所述第一缓冲传输会话向所述接收方设备传送指示所述第一唯一标识符与所述第一数据对象的传输相关联的消息;以及
经由所述点对点通信链路向所述接收方设备发送第一多个分组,所述第一多个分组中的每个分组包括所述第一唯一标识符,和所述第一数据对象的不同部分,其中所述第一多个分组包括足以传输所述第一数据对象的全部的多个分组。
22.根据权利要求21所述的计算机可读存储介质,其中所述方法还包括:
确定第二数据对象将被发送至所述第二设备;
发起第二缓冲传输会话以管理所述第二数据对象至所述接收方设备的传输,其中发起所述第二缓冲传输会话包括将第二唯一标识符分配给所述第二缓冲传输会话;
经由所述点对点通信链路,从所述第二缓冲传输会话向所述接收方设备传送指示所述第二唯一标识符与所述第二数据对象的传输相关联的消息;以及
经由所述点对点通信链路向所述接收方设备发送第二多个分组,所述第二多个分组中的每个分组包括所述第二唯一标识符和所述第二数据对象的不同部分,其中所述第二多个分组包括足以传输所述第二数据对象的全部的多个分组,
其中所述第一多个分组和所述第二多个分组在所述点对点通信链路上交织。
23.根据权利要求21所述的计算机可读存储介质,其中发送所述第一多个分组是由链路层执行的而无需所述缓冲传输会话的干预。
24.根据权利要求23所述的计算机可读存储介质,其中所述方法还包括:
在发送所述第一多个分组时,在所述链路层处检测到所述点对点通信链路已丢失;
响应于检测到所述点对点通信链路已丢失,确定是否应当在已与同一接收方设备建立的另一点对点通信链路上继续所述第一数据对象的传输;以及
在应当继续所述第一数据对象的传输的情况下,使用所述另一点对点通信链路来恢复对所述第一多个分组的发送。
25.根据权利要求23所述的计算机可读存储介质,其中所述方法还包括:
在发送所述第一多个分组时,在所述链路层处检测到所述点对点通信链路已丢失;
响应于检测到所述点对点通信链路已丢失,确定是否随后应恢复所述第一数据对象的传输;以及
在随后应恢复所述第一数据对象的传输的情况下,将指示所述传输的当前状态的信息存储在所述电子设备本身的存储介质中,其中所存储的信息在重新建立了与所述接收方设备的所述点对点通信链路之后可用于恢复所述第一数据对象的传输。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/480,202 | 2012-05-24 | ||
US13/480,202 US9014183B2 (en) | 2012-05-24 | 2012-05-24 | Buffer transfer service |
PCT/US2013/039333 WO2013176862A1 (en) | 2012-05-24 | 2013-05-02 | Buffer transfer service |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104322037A true CN104322037A (zh) | 2015-01-28 |
CN104322037B CN104322037B (zh) | 2018-09-21 |
Family
ID=48464102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380026550.4A Active CN104322037B (zh) | 2012-05-24 | 2013-05-02 | 缓冲传输服务 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9014183B2 (zh) |
CN (1) | CN104322037B (zh) |
WO (1) | WO2013176862A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110784432A (zh) * | 2018-07-31 | 2020-02-11 | 华为技术有限公司 | 一种会话创建方法及装置 |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9960820B2 (en) * | 2008-12-23 | 2018-05-01 | Keyssa, Inc. | Contactless data transfer systems and methods |
US9219956B2 (en) | 2008-12-23 | 2015-12-22 | Keyssa, Inc. | Contactless audio adapter, and methods |
US8942102B2 (en) * | 2010-11-05 | 2015-01-27 | Qualcomm Incorporated | Segmented data transfer with resume capability |
WO2014015486A1 (zh) * | 2012-07-25 | 2014-01-30 | 华为技术有限公司 | 数据分流方法,数据发送装置以及分流节点装置 |
WO2015069793A1 (en) * | 2013-11-05 | 2015-05-14 | Fox Broadcasting Comany | Method and apparatus for portably binding license rights to content stored on optical media |
US9251109B2 (en) * | 2013-12-20 | 2016-02-02 | EXILANT Technologies Private Limited | Communication with accessories |
CN103825905B (zh) * | 2014-03-10 | 2018-05-25 | 云中致用(广州)信息科技有限公司 | 一种多媒体数据交换方法及装置 |
TWI538425B (zh) | 2014-04-14 | 2016-06-11 | 微晶片科技公司 | 藍牙介面的資料傳輸系統及傳輸方法 |
US9614724B2 (en) | 2014-04-21 | 2017-04-04 | Microsoft Technology Licensing, Llc | Session-based device configuration |
US10111099B2 (en) | 2014-05-12 | 2018-10-23 | Microsoft Technology Licensing, Llc | Distributing content in managed wireless distribution networks |
US9874914B2 (en) | 2014-05-19 | 2018-01-23 | Microsoft Technology Licensing, Llc | Power management contracts for accessory devices |
US10439832B2 (en) | 2014-06-02 | 2019-10-08 | Microsoft Technology Licensing, Llc | Enhanced discovery for AD-HOC meetings |
US9882990B2 (en) * | 2014-06-02 | 2018-01-30 | Microsoft Technology Licensing, Llc | Enhanced discovery for ad-hoc meetings |
US9717006B2 (en) | 2014-06-23 | 2017-07-25 | Microsoft Technology Licensing, Llc | Device quarantine in a wireless network |
US20160088079A1 (en) * | 2014-09-21 | 2016-03-24 | Alcatel Lucent | Streaming playout of media content using interleaved media players |
US10101987B2 (en) * | 2015-03-11 | 2018-10-16 | Echelon Corporation | Method and system of processing an image upgrade |
TWI549450B (zh) * | 2015-06-09 | 2016-09-11 | 大鵬科技股份有限公司 | 監控方法 |
CN108292978B (zh) | 2015-12-01 | 2022-04-26 | 瑞典爱立信有限公司 | 预测性确认反馈机制 |
EP3453128B1 (en) | 2016-05-03 | 2021-01-27 | Telefonaktiebolaget LM Ericsson (publ) | Variable transport format parameters for fast acknowledgment feedback mechanism |
US10063414B2 (en) * | 2016-05-13 | 2018-08-28 | Cisco Technology, Inc. | Updating a transport stack in a content centric network |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0984600A2 (en) * | 1998-02-24 | 2000-03-08 | Canon Kabushiki Kaisha | Data communication system and method for connection setup- |
US20050154774A1 (en) * | 2002-03-28 | 2005-07-14 | Raffaele Giaffreda | Method of data transfer in mobile and fixed telecommunications systems |
US20050273592A1 (en) * | 2004-05-20 | 2005-12-08 | International Business Machines Corporation | System, method and program for protecting communication |
US20070058656A1 (en) * | 1998-09-11 | 2007-03-15 | Teledesic Llc | Method of data transmission in a data communication network |
US20090175221A1 (en) * | 2008-01-03 | 2009-07-09 | Airgain, Inc. | multimedia wireless distribution systems and methods |
US20090271525A1 (en) * | 2006-04-24 | 2009-10-29 | Electronics And Telecommunications Research Instit | Rtsp-based progressive streaming method |
CN102428665A (zh) * | 2009-03-16 | 2012-04-25 | 苹果公司 | 使用应用通信协议的附件和移动计算设备通信 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7010801B1 (en) * | 1999-06-11 | 2006-03-07 | Scientific-Atlanta, Inc. | Video on demand system with parameter-controlled bandwidth deallocation |
US7747688B2 (en) * | 2007-02-07 | 2010-06-29 | International Business Machines Corporation | System and method for managing group interaction session states |
US8032589B2 (en) * | 2008-10-27 | 2011-10-04 | Telefonaktiebolaget L M Ericsson (Publ) | Methods and systems for resuming, transferring or copying a multimedia session |
US8909806B2 (en) * | 2009-03-16 | 2014-12-09 | Microsoft Corporation | Delivering cacheable streaming media presentations |
US20120137332A1 (en) * | 2010-11-26 | 2012-05-31 | Pranay Kumar | Mobile tv delivery system |
US8914833B2 (en) * | 2011-10-28 | 2014-12-16 | Verizon Patent And Licensing Inc. | Video session shifting using a provider network |
-
2012
- 2012-05-24 US US13/480,202 patent/US9014183B2/en active Active
-
2013
- 2013-05-02 WO PCT/US2013/039333 patent/WO2013176862A1/en active Application Filing
- 2013-05-02 CN CN201380026550.4A patent/CN104322037B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0984600A2 (en) * | 1998-02-24 | 2000-03-08 | Canon Kabushiki Kaisha | Data communication system and method for connection setup- |
US20070058656A1 (en) * | 1998-09-11 | 2007-03-15 | Teledesic Llc | Method of data transmission in a data communication network |
US20050154774A1 (en) * | 2002-03-28 | 2005-07-14 | Raffaele Giaffreda | Method of data transfer in mobile and fixed telecommunications systems |
US20050273592A1 (en) * | 2004-05-20 | 2005-12-08 | International Business Machines Corporation | System, method and program for protecting communication |
US20090271525A1 (en) * | 2006-04-24 | 2009-10-29 | Electronics And Telecommunications Research Instit | Rtsp-based progressive streaming method |
US20090175221A1 (en) * | 2008-01-03 | 2009-07-09 | Airgain, Inc. | multimedia wireless distribution systems and methods |
CN102428665A (zh) * | 2009-03-16 | 2012-04-25 | 苹果公司 | 使用应用通信协议的附件和移动计算设备通信 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110784432A (zh) * | 2018-07-31 | 2020-02-11 | 华为技术有限公司 | 一种会话创建方法及装置 |
CN110784432B (zh) * | 2018-07-31 | 2021-11-19 | 华为技术有限公司 | 一种会话创建方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104322037B (zh) | 2018-09-21 |
WO2013176862A1 (en) | 2013-11-28 |
US20130315235A1 (en) | 2013-11-28 |
US9014183B2 (en) | 2015-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104322037A (zh) | 缓冲传输服务 | |
CN106233637A (zh) | 用于短距离无线数据传输的***和方法 | |
CN103597805B (zh) | 用于促进附件与多个设备之间的交互操作的技术 | |
KR20160007576A (ko) | 무선 트랜스포트를 통한 액세서리 프로토콜을 이용한 호스트 디바이스와 액세서리 디바이스 사이의 통신 | |
CN102938939A (zh) | 平台使能的接近服务 | |
CN104350484A (zh) | 基于消息的电子设备识别 | |
US8755746B2 (en) | Method for transmitting virtualized data in cloud computing environment | |
EP2573970B1 (en) | Near field communication reader device, near field communication tag device, near field communication system and near field communication method | |
TW200528988A (en) | Managing transmissions between devices | |
CN109643294A (zh) | Usb-c多连接器支持 | |
CN108848163A (zh) | Tws耳机的升级方法及tws耳机 | |
CN103385013A (zh) | 用于使能设备间的无线安全通信的方法 | |
US20080189422A1 (en) | Communication Device, Communication System, Communication Method, Communication Program, and Communication Circuit | |
CN104253840A (zh) | 用于支持多种类型安全载体之间通信的装置及其通信方法 | |
US10681115B2 (en) | Multimedia data transmission method and device | |
WO2017088494A1 (zh) | 一种链路管理方法及装置 | |
CN108833542A (zh) | Tws耳机的升级方法及tws耳机 | |
CN107041017A (zh) | Ue上下文信息恢复方法、装置和*** | |
EP4106357A1 (en) | Method for logging into on-board computer system and related device | |
CN105592019A (zh) | 双执行环境之间双向访问应用的方法 | |
JP2009182459A (ja) | 通信装置、通信システム、通信方法及びプログラム | |
CN104427000B (zh) | 具有传输链路机制的通信***及其操作的方法 | |
CN110750206B (zh) | 数据处理方法、装置及*** | |
CN104468499A (zh) | 在跨数据处理设备传送多媒体文件前确定格式兼容性 | |
CN109936539B (zh) | 帐号信息的传输方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |