具体实施方式
以下参照附图对本发明的实施例进行了更加充分的描述,其中示出了本公开内容的实施例。然而,本公开内容可以体现为许多不同的形式并且不应当被解释为仅限于本文所阐述的实施例;更确切地说,提供这些实施例从而本公开内容将是彻底的和完整的,并且将向本领域的技术人员充分传达本公开内容的范围。
通过使用简化的协议,本公开内容中描述的实施例可以提供用于实现两个移动设备之间的对等无线网络连接的系统、方法、和装置。在一方面,移动设备用户可能想要与另一个移动设备用户交换有关单个应用的数据或信息。典型地,这需要用户实现详细的通信协议以建立Wi-Fi和TCP/IP连接。在替代方案中,该公开内容描述了在不必建立TCP/IP连接的情况下直接从单个应用发起连接的系统和方法。可以修改现有通信协议的各个方面以启动用于建立第一移动设备上的应用和第二移动设备上的相应应用之间的对等无线网络连接的简化流程。
现在参照附图对本发明的示例性实施例进行描述。
图1是对等无线网络和实现对等无线网络的移动设备的代表环境的简化框图。环境100可以包括通过对等无线网络连接106耦合到一起的第一移动设备102和第二移动设备104。在这个实施例中,对等无线网络连接不需要接入点以在两个设备之间建立自组织网络。通常,对等网络使得附近的设备能够发现彼此并且彼此间进行通信。例如,无线网络连接106使得第一用户108和第二用户110在它们各自的设备102和104之间交换信息。
在一个实施例中,第一设备102可以包括计算机处理器112、存储器114、通信模块116、文件传输模块118、聊天模块120、游戏模块122和打印模块124。然而,第一设备102可以包括可以用于任何类型的移动设备或在任何类型的移动设备上发现的多种其它模块(未显示)。例如,第一设备102可以包括视频模块、音频模块、和针对可以由第一设备102实现的特征或应用的任何其它模块。
在这个实施例中,计算机处理器112可以执行存储在存储器114中使得设备能够执行安装的硬件、应用、或服务的计算机可读指令。一个或多个计算机处理器112可以包括但不限于中央处理单元(CPU)、数字信号处理器(DSP)、精简指令集计算机(RISC)、复杂指令集计算机(CISC)、微处理器、微控制器、现场可编程门阵列(FPGA)、或它们的任意组合。设备102还可以包括用于控制在一个或多个处理器112和设备102中的一个或多个其它部件之间的通信的芯片组(未显示)。在某些实施例中,设备102可以基于架构系统,并且处理器112和芯片组可以来自处理器和芯片组家族,例如处理器家族。一个或多个处理器112还可以包括用于处理特定数据处理功能或任务的一个或多个专用集成电路(ASIC)或特定应用标准产品(ASSP)。
在这个实施例中,存储器114可以包括一个或多个易失性和/或非易失性存储器设备,包括但不限于,随机存取存储器(RAM)、动态RAM(DRAM)、静态RAM(SRAM)、同步动态RAM(SDRAM)、双倍数据速率(DDR)SDRAM(DDR-SDRAM)、RAM-BUS DRAM(RDRAM)、闪存设备、电可擦除可编程只读存储器(EEPROM)、非易失性RAM(NVRAM)、通用串行总线(USB)可移除存储器、或它们的组合。
在这个实施例中,通信模块116可以实现和管理第一设备102的无线通信。通信模块可以包括无线系统,所述无线系统可以包括使用Wi-Fi直连标准(见2010年10月出版的Wi-Fi直连规范)和/或IEEE802.11无线标准(见2007年3月8日出版的IEEE802.11-2007;2009年10月出版的IEEE802.11n-2009)或它们的组合来广播和接收消息的硬件和软件。无线系统可以包括能够工作在802.11无线标准管辖的宽广的操作频率内的发射机和接收机或收发机(未显示)。
在这个实施例中,设备102可以包括在设备102上启用特定功能的若干模块和/或应用。例如,文件传送模块118可以使得第一设备102能够与其它设备共享文件,无论是移动、复制还是传送存储在存储器114中的各种文件。聊天模块120可以启动两个或多个设备之间的文本、视频或音频数据的近乎实时的交换。游戏模块122可以使得能够进行可以包括各种视频、音频和控制特征的交互游戏。在一方面,游戏可以在移动设备之间近乎实时地进行,从而用户可以在公共游戏环境中彼此对战或一同游戏。打印模块124可以使得能够与远程打印机对接以允许用户打印存储在第一设备102上的任意类型的文件。最后,第一设备102可以包括同步模块140,所述同步模块140使得设备102能够与另外一个设备104或维持位于第一设备102上的文件复印件或原件的远程存储设备(未显示)同步各种文件(例如,音乐、视频、文本)。第二设备104还可以包括计算机处理器126、存储器128、和上述的相同或类似的模块,例如通信模块130、文件传送模块132、聊天模块134、游戏模块136、打印模块138、和同步模块142。应当注意的是上述模块可以由硬件、软件和它们的组合实现。
图2是示出了移动设备可以如何建立对等无线网络的简化框图200。图200提供了针对图1中描述的通信模块116、通信模块130的额外细节。在这个实施例中,通信模块116、通信模块130可以包括在开放系统互连(OSI)网络模型下工作的模块。通常,OSI模型被分解成介质层和主机层。介质层可以包括物理层(层1)、数据链路层(层2)、和网络层(层3)。层1模块202、层1模块216涉及介质、信号和数据的二进制传输。层2模块204、层2模块218可能涉及物理寻址,层2中的数据是由可以用于发现网络上的其它设备的发现动作帧或动作帧构成。层3模块206、层3模块220可能涉及路径确定和逻辑寻址;该层中的数据称为分组。主机层包括传输层(层4)、会话层(层5)、表示层(层6)、和应用层(层7)。层4模块208、层4模块222可以涉及端到端连接、可靠性、和流量控制并且通常称为分段单元。层5模块210、224可以涉及主机间通信以及在应用间管理会话。层6模块212、层6模块226可以涉及数据表示、加密、和解密。层7模块214、层7模块228可以涉及针对跨越互联网协议网络的进程到进程通信的应用数据。
在层2协议下,设备(例如设备102)可以通告它正在寻求其它设备(例如设备104)以建立Wi-Fi直接连接或对等无线网络连接106。通过将来自一个设备的信息通过网络发送或广播到其它设备,发生通告。层2通告或发现协议可以包括包含针对设备102的地址或网络信息(例如服务集ID)的信标帧、探测请求帧、和探测响应帧。一般而言,接收设备(例如设备104)可以从由发送设备(例如设备102)发送的帧中提取地址和网络。帧或发现动作帧可以包括除了地址和网络信息字段之外的信息字段。例如,帧还可以包括主要设备类型字段和辅助设备类型字段。主要设备类型字段通常可以包括与发送设备正通过网络查找的设备类型有关的设备信息。在一个实施例中,辅助设备类型字段可以包括通过网络寻求的一列额外设备。设备类型字段可以包括与设备的制造或型号有关的供应商特定设备信息。此外,设备信息还可以包括设备应当包括的硬件特定特征。然而,在替代实施例中,辅助设备类型字段可以包括在网络上的设备上寻求的一个或多个应用或服务的名称或标识符。应用和服务可以包括在上文描述的图1中的特征和可以由计算设备执行的任意其它类型的应用或服务。
图3是用于针对移动设备上的应用发起对等无线网络连接的方法300的流程图。方法300示出了由设备102使用上述层2协议实现应用通告。
在框302,设备102将所有的应用和服务映射到在通过网络广播的动作帧中使用的辅助设备类型字段。动作帧可以包括任意层2通信帧中的一个或多个,所述任意层2通信帧包括但不限于信标帧、探测响应帧、和探测请求帧。在一个实施例中,辅助设备类型字段可以是供应商特定的,因此寻求的设备是供应商特定类型。供应商特定类型可以映射到主要设备类型字段中。
信标帧是通过无线网络广播的并且包括将设备102的存在通告给无线网络106上的其它设备(例如设备104)的服务集标识符(SSID)。通过无线网络106定期地对信标进行广播。在对等环境中,将信标广播给距离设备相对较短距离内的、少于150英尺的设备。除了SSID,信标还可以包括主要设备类型和辅助设备类型信息。例如,主要设备类型字段可以包括由设备102寻求的设备的供应商特定细节。辅助设备类型字段可以包括针对由设备102寻求的应用的应用标识符。
探测请求帧可以用来在无线网络连接106上从其它设备请求信息。例如,探测请求帧可以请求其它设备对探测请求进行响应以确定哪些设备位于发送设备的范围内。探测请求还可以包括主要设备类型和辅助设备类型信息。设备类型信息可以看作是用于确定某些类型的设备(例如使用主要设备类型字段)是否位于范围内以及它们是否已经安装了(例如使用辅助设备类型字段)特定应用的请求。以类似的方式,响应于接收到探测请求帧而发送的探测响应帧也可以包括主要和辅助设备类型信息。
在框304,辅助设备类型字段被附加到可以由设备102广播的发现帧。如上面所指出的,发现帧可以包括但不限于信标帧、探测请求帧、和探测响应帧。
在框306,发现帧由设备102通过网络106广播。发现帧试图发现附近的设备(例如设备104)。如果发现帧可以包括主要和辅助设备类型信息,则发现帧可以尝试定位附近的已经安装了某些应用的某种设备类型的设备。在另一个实施例中,发现帧可以包括辅助设备类型信息并且被用于检测具有安装在设备上的、罗列在辅助设备类型字段中的一个或多个应用的无论是哪种类型的任意设备。
在框308,在设备102处接收到对发现帧的响应。所述响应是在网络上发送自另外一个设备104的动作帧,其可以包括使用一个或多个应用与设备102连接的请求。在一个实施例中,所述响应可以指示设备104不包括由发送发现帧的设备102寻求的应用。在另外一个实施例中,所述响应可以指示设备104包括由广播设备102寻求的应用。所述响应还可以包括来自设备104的、针对访问安装在广播设备102上的一个或多个应用的请求。
在框310,在接收到对连接另外一个设备104的响应后,通信模块116发起与设备104的连接。一旦在第一设备102的应用和第二设备104上的应用之间取得连接,第一和第二设备开始通过无线网络连接106交换与应用相关的信息。
图4是示出了用于针对移动设备102上的应用发起对等无线网络连接的另一个方法400的流程图4。方法400示出了通过设备102使用上述的层2协议实现应用通告。应当注意的是,在方法400中呈现的事件的顺序仅仅是一个实施例的代表。在其它实施例中,所述事件可以以不同的顺序来实现并且在另外一个顺序中甚至可以省略一个或多个事件。
在框402,设备102确定或被指示设备102想要通过无线网络连接106与哪种类型的设备连接。设备类型可以包括具有网络连接的任意设备或基于制造、型号、或操作系统版本的供应商特定设备。设备类型信息可以被映射到在层2发现帧或动作帧中使用的主要设备类型字段。如上面所指出的,主要设备类型字段由层2发现技术用来定位与网络连接的特定类型的设备。
在框404,设备102确定或被指示哪个应用需要与另外一个设备104上的相应应用连接。设备将应用名称或标识符映射到辅助设备类型字段。如上面指出的,与应用名称或标识符相映射的辅助设备类型字段由层2发现技术用来定位连接到网络的设备上的特定应用。
在框406,设备102将辅助设备类型字段附加到用于无线网络连接106上设备的发现的层2动作帧。
在框408,设备102通过无线对等网络发送具有辅助设备类型字段信息的发现动作帧,以通告寻求具有兼容应用的兼容设备。在另一个实施例中,设备102通告寻求具有兼容应用的任意设备。兼容应用是可以与另外一个应用对接、与另外一个应用成功交换信息、和/或设计来与映射到动作帧的辅助设备类型字段的另外一个应用对接的应用或服务。
在框410,设备102接收对发现动作帧的响应。在一个实施例中,所述响应可以包括针对包括在所广播的发现动作帧中的应用的连接请求。在另一个实施例中,所述响应可以包括关于在发现动作帧中指定的应用被安装在响应设备104上的指示。
在框412,在广播设备102上的应用和响应设备104上的相应应用之间启动了通过无线网络的连接。在独占性或非独占性基础上使得所述连接在应用之间交换信息。在非独占性实施例中,通过使得可被设备上的其它应用使用的无线连接用来交换信息来启动连接。在独占性实施例中,在发现动作帧中通告的应用之间启动独占连接。设备上的其它应用被排除在外而不能使用无线连接。
图5是建立针对移动设备102上的应用与另外一个移动设备104上的应用的对等无线连接的方法500的流程图。方法500示出了对由设备104使用上述的层2协议接收到的发现帧或动作帧的回应。
在框502,设备104通过对等无线网络连接106接收层2通信(例如发现帧或动作帧)。层2通信可以包括但不限于信标帧或探测请求帧。嵌入一个或多个帧内的是已经被修改以包括应用名称或标识符的辅助设备类型字段,所述应用名称或标识符存储在发送层2通信的设备102上。
在框504,设备104从发现帧或动作帧的辅助设备类型字段中提取应用名称。在一个实施例中,提取过程可以包括从辅助设备类型字段复制应用名称。在另一个实施例中,提取过程可以包括读取存储在辅助设备类型字段中的信息。
在框506,如果设备104具有存储在设备上的存储器128或模块130到模块138内的相同或类似的服务或应用,那么计算机处理器在设备104的显示器上呈现提示符,以询问用户110它是否想要使用从发现帧或动作帧中提取的应用或服务来与设备102对接。
在框508,设备104向请求通过对等无线网络106的连接的设备102发送响应。所述响应可以是肯定的响应或否定的响应。如果请求设备102接收到肯定响应,那么设备102、设备104就将它们的相应应用通过对等无线网络彼此连接并且开始交换信息。
图6是示出了用于针对两个设备102、104之间的特定应用使用层2通信协议来建立对等无线网络连接106的方法600的流程图。流程图包括指示设备102、设备104之间的交换时机的时间轴(例如时间箭头)。
在框602,第一设备102可以通过对等无线网络连接106提供发现帧以搜寻一定范围内的其它设备(例如设备104)。发现帧包括设备102想要在那些设备上发现的应用名称或标识符。在一个实施例中,应用名称存储在被嵌入到发现帧内的辅助设备类型字段中。发现帧可以被包括作为任意层2通信协议的一部分。在一个实施例中,发现帧可以是信标帧。在另一个实施例中,发现帧可以是探测请求帧。
在框604,第二设备104可以提供对从第一设备102接收到的发现帧的响应。所述响应可以包括关于包含在发现帧内的应用被存储在或安装在第二设备104上的指示。所述响应还可以包括关于第二设备104想要交换信息的指示,例如在第一设备102上的应用和第二设备104上的相应应用之间的操作。
在另外一个实施例中,第二设备104可以提供可以包括被嵌入在帧中的应用名称的发现帧。在一个实施例中,应用名称被嵌入在发现帧的辅助设备类型字段中。第一设备102接收发现帧并且确定应用是否存储或安装在例如设备102的存储器中。第一设备102可以发送指示用户108想要使用应用与第二设备104交换信息的响应。
在框606,设备102和设备104启动无线或Wi-Fi连接以在存储在每个设备上的相应应用之间交换信息。在一个实施例中,Wi-Fi连接是非独占性的并且连接可以在存储在设备上的任意应用之间使用。在另外一个实施例中,无线或Wi-Fi连接对嵌入在发现帧中的应用是独占性的。
图7是用于发起针对多个应用的对等无线网络连接的设备102的示例性图形用户界面(GUI)700的简化示图。在这个实施例中,多个应用图标702-712位于GUI700的桌面上方。应用图标是可以接入或调用(spawn)设备上的应用的可选择性特征。在一个实施例中,应用可以包括文件传送应用702、聊天应用704、打印应用706、和第一游戏应用708、第二游戏应用710、以及同步应用712。
通过复制、移动、或将文件从一个存储位置传送到另一个存储位置,文件传送应用702可以用来在设备内或向连接到该设备的其它设备传送文件。所述文件可以包括任意电子文档、文件、指令或代码。
启动聊天应用704以在这个设备102和另外一个设备104之间以实时或近乎实时的方式交换文本、音频或视频消息。
打印应用706可以启动对存储在设备102上的文档的打印。设备可以与联网的打印机对接或通过对等无线连接与打印机对接。
游戏应用708、游戏应用710代表通过网络或对等连接在设备上运行的任意游戏或娱乐程序。
最后,设备102可以包括使得设备能够对在其它设备之间共享的或距离设备102远程存储的文件进行同步的同步应用712。在一个实施例中,同步应用712可以将设备102的音乐文件数据库与另外一个设备上存储的远程音乐文件数据库同步。
GUI700还可以包括针对应用714-724中的每一个的连接窗口。连接窗口使得用户能够选择用户想要与另一个用户共享或对接的应用。在一个实施例中,当光标(未显示)悬停在文件传送应用702上时,通过右键点击鼠标可以调用文件传送连接窗口714。文件传送连接窗口714可以提供一列可用的、有针对性的、或在范围内的用户,所述用户被询问他们是否希望自己的文件传输应用通过对等无线网络连接106彼此间进行通信。在这个实施例中,显示的三个用户是可用的。用户108可以选择用户1、用户2、或服务器1,或它们的组合,并且通过选择启动按钮来发起连接请求。在一个实施例中,启动按钮使得计算机处理器112能够将文件传输应用映射到在层2通信动作帧中使用的辅助设备类型字段中。如在图3到图6中所描述的,辅助设备类型字段使得设备102能够将它的文件传输应用与另外一个设备104上的另外一个文件传输应用相连接。在其它实施例中,可用实体可以是打印机、服务器、数据库、或运行在另一个设备上的应用。
可以使用例如用于执行本文中描述的方法和/或操作的硬件、软件、和/或固件来实现本文中描述的实施例。本文中描述的某些实施例可以提供为有形的、存储有机器可执行指令的机器可读介质,所述机器可执行指令如果被机器执行则使得机器执行本文中描述的方法和/或操作。有形机器可读介质可以包括但不限于任意类型的磁盘,包括软盘、光盘、压缩光盘只读存储器(CD-ROM)、可重写压缩光盘(CD-RW)、磁光盘、半导体器件,例如只读存储器(ROM)、随机存取存储器(RAM)如动态和静态RAM、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存、磁或光卡、或适于存储电子指令的任何类型的有形介质。所述机器可以包括任意合适的处理或计算平台、设备或系统并且可以使用任意合适的硬件和/或软件组合来实现。所述指令可以包括任意合适类型的代码并且可以使用任意合适的编程语言来实现。在其它实施例中,用于执行本文中描述的方法和/或操作的机器可执行指令可以嵌入在固件中。
本文中描述了各种特征、方面和实施例。本领域的技术人员将会理解,所述特征、方面和实施例是易于彼此相组合的且是易于变形和修改的。因此,本公开内容应当被视为包括这些组合、变形和修改。
本文中使用的术语和表达方式可以用作描述性而非限制性的术语。在使用这些术语和表达方式时,并不旨在排除所显示的和描述的特征(或它的一部分)的任意等价物,并且应当认识到各种修改是可能落在权利要求范围内的。其它修改、变形和替代也是可能的。从而,权利要求书旨在覆盖所有这些等价物。
虽然本发明的某些实施例已经结合目前被认为是最实用的各种实施例进行了描述,但是应当理解,本发明并不被限定于所公开的实施例中,而是相反,旨在覆盖包括在权利要求书的范围内的各种修改和等同布置。尽管在本文中使用了特定术语,但它们可以仅用于一般性的和描述性的意义,而不是为了限制的目的。
本书面描述使用实例来公开本发明的某些实施例,包括最佳模式,并且还使得本领域的任何技术人员能够实施本发明的某些实施例,包括制作和使用任何装置或系统,以及执行任何引入的方法。本发明的某些实施例的可授予专利的范围由权利要求书限定,并且可包括对于本领域技术人员而言可发生的其它实例。如果这些其它实例具有不与权利要求书的字面语言不相同的结构元素,或如果它们包括与权利要求书的字面语言无实质差异的等效结构元素,那么它们旨在处于权利要求书的范围之内。
下面的实例涉及进一步的实施例。方法包括将设备上的应用映射到数据链路层辅助设备类型字段、将辅助设备类型字段附加到数据链路层发现动作帧、通过对等无线网络发送发现动作帧和接收包括针对访问辅助设备类型字段中提供的应用的请求的响应。所述方法还包括将设备类型映射到主要设备类型字段。
在一个实施例中,数据链路层部分地基于开放系统连接模型数据链路层协议。此外,发现动作帧包括信标帧、探测请求或探测响应帧。此外,应用的映射可以部分地基于检测针对应用的图标的选择来发起,图标被显示在设备的图形用户界面上。
另一个示例性实施例包括方法,所述方法包括在设备处通过对等无线网络接收动作帧,动作帧包括包含应用名称或标识符的辅助设备类型字段,将应用名称或标识符从辅助设备类型字段中提取出来,确定应用名称或标识符是否对应于存储在设备上的应用,确定是否使用对等无线网络来交换与应用有关的信息,以及发送包括发起针对应用的对等无线网络连接的指示的响应。在一个例子中,动作帧包括包含设备类型信息的主要设备类型字段和针对开放系统连接模式数据链路层协议的发现动作帧。
在另外一个实施例中,所述方法还包括确定应用名称或标识符是否对应于存储在设备上的应用,包括确定相应的应用是否与命名的应用兼容。在一个例子中,设备是第一设备并且应用是第一应用,以及方法还包括在第一设备上的第一应用和第二设备上的第二应用之间建立对等无线连接。
另外一个示例性实施例包括包含计算机可执行指令的一个或多个有形的计算机可读存储介质,当这些指令由至少一个计算机处理器执行时,可操作为使得至少一个计算机处理器实现包含以下内容的方法:将设备上的应用映射到数据链路层辅助设备类型字段,将辅助设备类型字段附加到数据链路层发现动作帧,通过对等无线网络发送发现动作帧,以及接收包括针对访问辅助设备类型字段中提供的应用的请求的响应,以及将设备类型映射到主要设备类型字段。
在一个实施例中,发现动作帧包括信标帧、探测请求帧或探测响应帧。
在另一个实施例中,方法还包括确定针对应用的图标被选出以发起针对应用的无线连接,所述图标被显示在设备的图形用户界面上,以及确定可用设备被选择作为针对应用的无线连接的目标。
另外一个实施例可以包括一种设备,所述设备包含:存储器,用于存储可在设备上执行的多个应用;计算机处理器,用于将应用中的至少一个映射到发现动作帧;通信模块,用于使用发现动作帧请求针对至少一个应用的对等无线连接;当接收到对发现动作帧的响应时,所述通信模块用于建立针对至少一个应用的对等无线连接。发现动作帧包括主要设备类型字段和辅助设备类型字段。至少一个应用被映射到辅助设备类型字段以及设备类型被映射到主要设备类型字段。此外,至少一个应用包括以下各项中的一项:文件传送应用、同步应用、游戏应用、聊天应用或打印应用。最后,发现动作帧包括信标帧、探测请求帧或探测响应帧。