CN101828160A - 与平台无关的通信协议 - Google Patents

与平台无关的通信协议 Download PDF

Info

Publication number
CN101828160A
CN101828160A CN200880106142A CN200880106142A CN101828160A CN 101828160 A CN101828160 A CN 101828160A CN 200880106142 A CN200880106142 A CN 200880106142A CN 200880106142 A CN200880106142 A CN 200880106142A CN 101828160 A CN101828160 A CN 101828160A
Authority
CN
China
Prior art keywords
byte
report
series
host apparatus
bytes
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.)
Pending
Application number
CN200880106142A
Other languages
English (en)
Inventor
P·W·卡南三世
M·沃斯勒
L·维勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zeemote Inc
Original Assignee
Zeemote Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zeemote Inc filed Critical Zeemote Inc
Publication of CN101828160A publication Critical patent/CN101828160A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/04Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Computer Security & Cryptography (AREA)
  • Position Input By Displaying (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)

Abstract

本发明尤其揭示通过通信协议在移动控制器装置与主机装置之间实现与平台无关的双向通信的技术。实现所述通信的步骤包括从所述移动控制器装置向所述主机装置递送一系列字节。所述一系列字节描述所述移动控制器装置的一个或多个数据包。当探测到所述主机装置包含本机装置驱动程序时,使用所述本机装置驱动程序来剖析所述所递送的一系列字节。或者,当探测到所述主机装置不包含本机装置驱动程序时,提供装置驱动程序来剖析所述所递送的一系列字节。

Description

与平台无关的通信协议
相关申请案的交叉参考
本申请案主张2007年8月24日提出申请的第11/844,999号美国申请案的优先权,此申请案的内容以引用的方式并入本文。
技术领域
本发明涉及用于通过通信协议在移动控制器装置与主机装置之间实现与平台无关的双向通信的技术。
背景技术
例如移动电话等移动装置不再被简单地视为提供语音呼叫功能性的通信装置。移动装置可实施为可用以运行多种应用程序的计算平台,所述应用程序包含文本消息接发、地址簿、日历、其它生产力应用程序、测绘应用程序、游戏应用程序和许多其它应用程序。
蓝牙2.0(Bluetooth 2.0)标准可指定多种“简档(profile)”,这些简档经设计以使得例如鼠标、键盘、无线头戴式耳机以及免提车载套件等有限数目的装置能够与移动电话进行通信。这些简档通常以固件形式实施在移动电话中,例如,支持人机界面装置(Human Interface Device;HID)简档的移动电话将具有以固件形式嵌入的HID协议。另外,为了利用蓝牙2.0简档,移动电话和移动电话希望与之进行通信的输入、输出或输入/输出装置均需要具有以固件或软件形式支持的相同简档。
发明内容
本文描述的用于在移动控制器装置与主机装置之间实现与平台无关的通信的人机界面与输入系统和技术的实施方案可包含以下特征的各种组合。
在一方面中,通过通信协议在移动控制器装置与主机装置之间提供与平台无关的双向通信包含从所述移动控制器装置向所述主机装置递送一系列字节。所述所递送的一系列字节描述所述移动控制器装置的一个或多个数据包。当探测到所述主机装置包含本机装置驱动程序时,使用所述本机装置驱动程序来剖析所述所递送的一系列字节。或者,当探测到所述主机装置不包含本机装置驱动程序时,提供装置驱动程序来剖析所述所递送的一系列字节。
实施方案可任选地包含以下特征中的一者或多者。提供所述装置驱动程序的步骤可包括:根据所述所递送的一系列字节,提供定制的人机界面装置驱动程序。而且,为了提供所述与平台无关的双向通信,可提供与Java平台兼容的双向通信。为了递送所述一系列字节,可使用所述一系列字节中的固定数目的字节来产生一个或多个装置专用描述符,所述一个或多个装置专用描述符用于支持本机人机界面装置描述符所不支持的一个或多个传感器。此外,产生用于支持一个或多个传感器的所述一个或多个装置专用描述符的步骤可包括:产生用于支持选自以下群组的至少一者的一个或多个装置专用描述符:游戏操纵杆、线性电位计、跟踪球、编码器、力感应电阻器、应变仪、一系列数字开关、加速度计、陀螺仪、惯性传感器和电磁传感器。而且,提供所述与平台无关的双向通信的步骤可包括:提供至少两个可由Java平台驱动程序访问的通信信道。另外,递送一系列字节的步骤可包括:递送为所述移动控制器装置定制的可变的字节序列。递送可变的字节序列的步骤可还包括:将所述字节序列中的每一字节映射至所述移动控制器装置上的一个或多个输入元件;以及根据所述输入元件的状态,改变赋予每一字节的值。
在另一方面中,本说明书中描述的技术可实施为一种计算机程序产品,实施于计算机可读取记录媒体上,且经设计以使数据处理装置执行各种操作。举例来说,所述计算机程序产品经设计以通过通信协议在移动控制器装置与主机装置之间提供与平台无关的双向通信。提供所述与平台无关的双向通信的步骤包括:从所述移动控制器装置向所述主机装置递送一系列字节,其中所述一系列字节描述所述移动控制器装置的一个或多个数据包。当探测到所述主机装置包含本机装置驱动程序时,所述计算机程序产品经设计以使用所述本机装置驱动程序来剖析所述所递送的一系列字节。或者,当探测到所述主机装置不包含本机装置驱动程序时,所述计算机程序产品经设计以提供装置驱动程序来剖析所述所递送的一系列字节。
实施方案可任选地包含以下特征中的一者或多者。所述计算机程序产品可经设计以使所述数据处理装置执行进一步包括以下的操作:根据所述所递送的一系列字节,提供定制的人机界面装置驱动程序。所述计算机程序产品可经设计以使所述数据处理装置执行包括以下的操作:通过至少提供与Java平台兼容的双向通信来提供与平台无关的双向通信。所述计算机程序产品可经设计以使所述数据处理装置执行包括以下的操作:通过至少使用所述一系列字节中的固定数目的字节产生一个或多个装置专用描述符来递送所述一系列字节,所述一个或多个装置专用描述符用于支持本机人机界面装置描述符所不支持的一个或多个传感器。而且,所述计算机程序产品可经设计以使所述数据处理装置执行包括以下的操作:产生用于支持一个或多个传感器的一个或多个装置专用描述符,此通过至少产生用于支持选自以下群组的至少一者的一个或多个装置专用描述符来进行:游戏操纵杆、线性电位计、跟踪球、编码器、力感应电阻器、应变仪、一系列数字开关、加速度计、陀螺仪、惯性传感器和电磁传感器。所述计算机程序产品可经设计以使所述数据处理装置执行包括以下的操作:提供与平台无关的双向通信,所述与平台无关的双向通信具有至少两个可由Java平台驱动程序访问的通信信道。所述计算机程序产品可经设计以使所述数据处理装置执行包括以下的操作:递送一系列字节,所述一系列字节具有为所述移动控制器装置定制的可变的字节序列。此外,所述计算机程序产品可经设计以使所述数据处理装置执行包括以下的操作:递送可变的字节序列,包括:将所述字节序列中的每一字节映射至所述移动控制器装置上的一个或多个输入元件;以及根据所述输入元件的状态,改变赋予每一字节的值。
在又一方面中,本说明书中描述的技术可实施为一种移动控制器装置,包括:通信机构,用以运行通信协议堆栈,所述通信协议堆栈包括基频协议,其经设计以将所述移动控制器装置连接至主机装置。所述移动控制器装置还包括双向串行通信协议,其经设计以在所述基频协议之上运行,以向所述主机装置发送一个或多个消息。每一所发送消息均包含字节序列。所述控制器装置还包含控制器固件,其经设计以监控由可供所述移动控制器装置使用的各种输入机构提供的输入信号,以及产生所述一个或多个消息。所述双向串行通信协议通过所述基频协议实现所述移动控制器装置与主机装置之间的与平台无关的双向通信。
实施方案可任选地包含以下特征中的一者或多者。所述实现与平台无关的双向通信的双向串行通信协议可包含与Java平台兼容的双向通信。所述控制器固件可经设计以取所述字节序列中固定数目的字节来产生一个或多个装置专用描述符,所述一个或多个装置专用描述符用于支持本机人机界面装置描述符所不支持的一个或多个传感器。所述控制器固件还可经设计以产生用于支持选自以下群组的至少一者的一个或多个装置专用描述符:游戏操纵杆、线性电位计、跟踪球、编码器、力感应电阻器、应变仪、一系列数字开关、加速度计、陀螺仪、惯性传感器和电磁传感器。所述控制器固件可经设计以产生所述一个或多个消息,每一所产生的消息均包含为所述移动控制器装置定制的可变的字节序列。所述控制器固件可经设计以将所述字节序列中的每一字节映射至可供所述移动控制器装置使用的所述各种输入机构的一个或多个输入元件,并根据所述所映射的一个或多个输入元件的状态来改变赋予每一字节的值。
本文描述的用于通过通信协议在移动控制器装置与主机装置之间实现与平台无关的双向通信的技术潜在地可提供以下优点中的一者或多者。本说明书中描述的系统和技术可提供有效的、轻量型机构,以用于移动控制器装置和主机装置交换传感器数据、状态信息以及任何其它类型的可串行化并可以小的占用面积被发送的数据。所述机构可为快速且有效的,占据固件和/或软件中的小的占用面积,且在发送和接收相关数据的过程中所带来的计时开销量最小。所述机构可被专门界定用以支持通常在游戏中使用的各种各样的传感器,包含:来自电位计或多自由度模拟游戏操纵杆的模拟信号;例如光学鼠标中或较高端机器人装置中可能见到的数字编码器;响应于所施加的变化压力而提供比例信号的力感应电阻器;加速度计和陀螺仪信号;来自跟踪球的信号;来自例如基于应变仪的导航杆等力感测装置的信号;来自光学传感器的比例信号或数字信号;来自电磁传感器的信号;以及类似物。所述机构可实施为通信协议,其也可经扩展以使得移动控制器装置和主机装置能够交换其它类型的可串行化的数据,例如游戏状态信息、汽车诊断信息、GPS定位和类似数据。
本说明书中描述的系统和技术可实施为应用程序编程界面(ApplicationProgram Interface;API),其可在例如蓝牙逻辑链路控制与适配协议(Bluetoothlogical link control and adaptation protocol;L2CAP)或蓝牙串行端口协议(serial portprofile;SPP)等多种传送协议上或通过其它有线或无线传送协议而操作。举例来说,相同API可经设计以支持通过USB、Firewire、IrDA或其它有线和无线通信协议的通信。
通信协议可进一步以多种机构实施,包含基于HID的机构、涉及从移动控制器装置发送到主机装置的具有预定义语法的固定数目字节的固定长度串行机构,以及允许从移动控制器装置向主机装置发送查询和数据(或反之)的双向通信协议机构。
基于HID的机构可提供主机装置上的HID简档的子集的轻量型Java实施方案,且任选地包含定制HID描述符以支持适用于移动控制器装置的常见传感器。固定长度串行机构可反映具有固定数目字节的字节结构,此字节结构对适用于移动控制器装置的传感器是大体通用的。双向串行通信协议机构可涉及定制字节序列结构,此定制字节序列结构可被实施成为适用于移动控制器装置的常见传感器提供支持。
无论是实施基于HID的机构还是串行通信协议,本说明书中描述的系统和技术均可进一步并入API中,此API实施于在主机装置上运行的编程平台(例如Java)上。此API可并入到在主机装置上运行的应用程序中。
本说明书中描述的标的物可实施为在例如CD-ROM、DVD-ROM、半导体存储器或硬磁盘等信息载体中有形地实施的方法、系统或计算机程序产品。此类计算机程序产品可使数据处理装置进行本说明书中描述的一个或多个操作。
另外,本说明书中描述的标的物也可实施为包含处理器和耦合到处理器的存储器的系统。存储器可对使处理器执行本说明书中描述的方法动作中的一者或多者的一个或多个程序进行编码。此外,本说明书中描述的标的物可使用各种数据处理机来实施。
下文的附图和描述中陈述一个或多个实施方案的细节。从描述和图示以及从权利要求书将明了其它特征和优点。
附图说明
图1a和1b是说明用于实现控制器装置与主机装置之间的通信的系统的框图。
图2说明针对基于HID的机构为HID游戏操纵杆装置设计的实例性报告描述符200。
图3、4和5说明经设计以针对基于HID的机构实现多种传感器的通信的实例性定制报告描述符。
图6是说明基于HID的机构的实施方案的框图,其描述用于实现HID类装置与具有HID功能的主机装置之间的通信的系统。
图7是说明用于使用固定长度字节序列实现通信的固定长度串行方法的实施方案的蓝牙堆栈的框图。
图8说明具有终止字节的四字节序列的实例性字节序列。
图9说明具有终止字节的五字节序列的实例性字节序列。
图10说明用于实施通过蓝牙串行端口简档(SPP)实施的基于双向串行通信协议的机构的实例性通信协议堆栈。
图11说明用于双向串行通信协议机构的实例性字节序列或报告格式。
图12说明用于SET_IDLE的实例性消息格式。
图13描述实例性数据序列,其显示空闲速率。
图14说明用于版本报告(Version Report)的实例性字节序列。
图15说明用于配置数据输入报告(Configuration Data Input Report)的实例性字节序列。
图16说明用于按钮元数据报告(Button MetadataReport)的实例性字节序列。
图17说明用于启用/停用报告类型(Enable/Disable Report Type)的实例性字节序列。
图18说明用于按钮报告(Button Report)的实例性字节序列。
图19说明用于8位模拟2轴游戏操纵杆报告(8-bit Analog 2-Axis JoystickReport)的实例性字节序列。
图20说明实例性16位模拟2轴游戏操纵杆报告(16-bit Analog 2-Axis JoystickReport)。
图21说明实例性32位模拟2轴游戏操纵杆报告(32-bit Analog 2-Axis JoystickReport)。
图22说明实例性8位模拟3轴加速度计报告(8-bit Analog 3-Axis AccelerometerReport)。
图23说明实例性16位模拟3轴加速度计报告(16-bit Analog 3-AxisAccelerometer Report)。
图24说明实例性32位模拟3轴加速度计报告(32-bit Analog 3-AxisAccelerometer Report)。
图25说明实例性8位模拟桨报告(8-bit Analog Paddle Report)。
图26说明实例性16位模拟桨报告(16-bit Analog Paddle Report)。
图27说明实例性32位模拟桨报告(32-bit Analog Paddle Report)。
图28说明实例性16位电池电平报告(16-bit Battery Level Report)。
图29说明实例性8位跟踪球报告(8-bit Trackball Report)。
图30说明实例性16位跟踪球报告(16-bit Trackball Report)。
图31说明实例性32位跟踪球报告(32-bit Trackball Report)。
图32说明实例性8位滚轮报告(8-bit Scroll Wheel Report)。
图33说明实例性16位滚轮报告(16-bit Scroll Wheel Report)。
图34说明实例性32位滚轮报告(32-bit Scroll Wheel Report)。
图35说明用于原始和经调节8位模拟2轴游戏操纵杆报告(Raw andConditioned 8-bit Analog 2-Axis Joystick Report)的实例性字节序列。
图36说明用于运行循环测试报告(Run Loop Test Report)的实例性字节序列。
图37说明用于32位装置时戳(毫秒)报告(32-bit Device Timestamp(inMilliseconds)Report)的实例性字节序列。
图38是说明用于实现移动控制器装置与主机装置之间的通信的过程的过程流程图。
图39说明用于实施具有Java功能的远程控制器装置的实例性系统,所述远程控制器装置控制导航系统上的测绘应用程序。
图40说明用于在具有GPS功能的装置之间提供数据交换的实例性系统。
图41说明用于实现移动电话、汽车和PC之间的数据通信的实例性系统。
图42说明用于实现多个健康和健身装置之间的数据通信的实例性系统。
图43说明用于实现具有Java功能的游戏操纵杆控制器与移动电话之间的数据通信的实例性系统。
图44说明用于实现多玩家移动游戏情境中的HID通信的实例性系统。
各图中的相同参考符号均指示相同元件。
具体实施方式
概述
图1a和1b是说明用于实现控制器装置110与主机装置120之间的与平台无关(即,与例如蓝牙、USB、Firewire、IrDA等通信协议无关)的通信的系统100的框图。控制器装置110使用通信协议130与主机装置120通信。
主机装置120包含具有一个或多个嵌入式处理器的装置,例如移动电话、个人数字助理(personal digital assistant;PDA)、智能电话、个人导航系统、数字视频记录器(digital video recorder;DVR)装置、具有提供信息(例如,GPS导航、无线通信)和/或娱乐(例如,数字视频磁盘驱动器)的技术更新的汽车、计步器、血糖仪、血压传感器、体重磅秤和类似装置。输入控制器装置110经设计以与主机装置120通信,且提供用于控制主机装置120的直观界面元件。通过提供直观界面元件,控制器装置110可促进例如游戏和测绘应用程序等复杂应用程序的控制和执行。控制器装置110包含提供各种直观控制界面元件的移动附件装置。此些控制器装置110的实例在题目为“Human Interface Input Acceleration System”的共同待决美国专利申请案(第20070080934号美国专利申请公开案)和题目为“HumanInterface Input Acceleration System”的美国专利申请案(第20070080931号美国专利申请公开案)中描述。这些共同待决申请案(第20070080934号和第20070080931号美国专利申请公开案)的内容以引用的方式并入。
通信协议堆栈130实现控制器装置110与主机装置120之间的通信信号的双向交换。通信协议堆栈130包含在传送机构132上操作的与平台无关的传送协议134。传送机构132包含一个或多个有线或无线传送/通信协议,例如蓝牙、通用串行总线(Universal Serial Bus;USB)、Firewire、IrDA等。与平台无关的传送协议134经设计以通过多种传送机构中的一者或多者而操作。与平台无关的传送协议134可使用驻存在传送机构132上的应用程序编程界面(application programminginterface;API)来实施。API是计算机系统或程序库为支持针对服务的请求而提供的源代码界面。
如本说明书中描述的与平台无关的传送协议134可在各种机构下实施以实现一移动控制器装置与一主机装置之间或多个移动控制器装置与主机装置之间的通信。举例来说,与平台无关的传送协议可在基于HID的机构、固定长度串行机构或双向串行通信协议机构下实施。
基于HID的机构
与平台无关的传送协议134可在基于HID的机构下实施以实现移动控制器装置与主机装置之间的通信。基于HID的通信协议是在现存的用于标准HID装置的HID规范上建立。(参见例如,Universal Serial Bus(USB)Device Class Definition forHuman Interface Devices(HID),Version 1.11(用于人机界面装置(HID)的通用串行总线(USB)装置类别定义,版本1.11)(www.usb.org)和Universal Serial Bus(USB)HID Usage Tables,Version 1.12(通用串行总线(USB)HID用途表,版本1.12)(www.usb.org),这些参考文献以完全引用的方式并入本文。)用于HID简档的轻量型Java 2Micro Edition(J2ME)实施方案可实施以在例如移动电话等移动装置和充当主机装置的其它移动装置上运行。一个或多个移动控制器装置上的固件还含有HID简档的轻量型实施方案。可实施定制描述符以支持适于在所述一个或多个移动控制器装置中使用的常见和专业传感器。
图2说明为HID游戏操纵杆装置设计的实例性报告描述符200。实例性报告描述符200包含以下特征:(1)向前/向后和向右/向左倾斜的两轴游戏操纵杆(字节1和2);(2)底座上的模拟油门控制(字节0);(3)杆上的四位置帽型开关(字节3的位0-3);(4)杆上的两个按钮(字节3的位4-5或6-7);以及(5)底座上的两个按钮(字节3的位4-5或6-7)。此描述符报告提供用于每一游戏操纵杆的读数的8位分辨率。
除了报告的字节布局以外,报告描述符还可包含各种字段的一些语义。举例来说,用于游戏操纵杆的X轴可界定为范围在-127到127的8位带符号值,其表示游戏操纵杆沿着X轴的位置。在一些实施方案中,可提供第二描述符,其中X轴和Y轴读数提供16位分辨率,而不是第一描述符中的8位分辨率。
图3、4和5说明经设计以实现用于多种传感器的通信的实例性定制报告描述符。选择固定数目的具有唯一ID的字节,且取决于所使用传感器的类型而以不同方式应用所述选定字节的内容。这带来用以支持多种传感器的轻量型且灵活的协议,所述多种传感器包含例如:(1)具有2个自由度(degrees offreedom;DOF)或3个DOF的低分辨率游戏操纵杆;(2)线性电位计;(3)具有2(DOF)的跟踪球(类似于编码器)(图4);(3)编码器;(4)力感应电阻器;(5)应变仪;(6)光电传感器;(7)一系列数字开关;(8)加速度计(图5);(9)陀螺仪;(10)其它惯性传感器;以及(11)电磁传感器。
图6是说明用于实现HID类装置610与HID主机装置620之间的通信的系统600的框图。HID类装置(例如,控制器装置610)使用控制(预设)管线630或中断管线640与主机装置620上的HID类驱动程序(未图示)通信。控制(管线630用以执行若干操作,包含:(1)接收和响应针对控制和类数据的请求;(2)在由来自主机装置620的HID类驱动程序轮询时将数据从控制器装置610传输到主机装置620;以及(3)使得控制器装置620能够从主机装置620接收数据。中断管线640用以执行若干操作,包含:(1)从控制器装置610接收异步(未请求)数据;以及(2)将低等待时间数据从主机装置620传输到控制器装置610。
这两个管线在HID协议中实施为通道0x11和0x13上的两个L2CAP连接。为了为作为游戏和应用程序开发平台的Java(例如,J2ME)实施方案提供支持,提供HID简档的子集的轻量型Java实施方案。因此,除了用于HIDP顺应性的两个L2CAP通道0x11和0x13以外,实施两个额外的L2CAP通道0x1011和0x1013以提供从Java驱动程序的访问(例如,J2ME实施方案)。
在替代实施方案中,实施定制串行传送协议以通过串行端口简档(Serial PortProfile;SPP)操作。替代于如HID协议中使用L2CAP实施方案,采用其它传送机构来通过蓝牙堆栈提供传送通道。SPP允许各种装置使用射频通信(RadioFrequency Communication;RFCOMM)(参见Serial Port Profile Specification,Version 1.1(串行端口简档规范,版本1.1)(www.bluetooth.org),其以完全引用的方式并入本文)来设立模拟串行电缆连接。RFCOMM是简单的传送协议,其提供通过L2CAP协议(参见RFCOMM Specification,Version 1.1(RFCOMM规范,版本1.1)(www.bluetooth.org),其以完全引用的方式并入本文)对RS-232串行端口的九种电路的模拟。此实施方案不同于HID协议,HID协议直接使用L2CAP且不使用由SPP提供的额外功能性。
基于固定长度串行协议的机构
在替代实施例中,可采用固定长度串行序列来允许移动控制器装置将信息传递到主机装置。此字节序列可使用蓝牙串行端口简档(SPP)作为传送机构从移动控制器装置发送到主机装置。
图7是说明在蓝牙串行端口简档(Serial Port Profile;SPP)714、725上实施的固定长度串行序列通信协议713、724的框图。协议堆栈700实现使用固定长度串行通信协议的通信。协议堆栈700包含各种可实施为协议堆栈中的层的协议模块。在控制器装置侧710,传送协议堆栈的层包含基频层717、逻辑链路控制与适配协议(L2CAP)层716、RFCOMM层715、SPP层714、固定字节串行序列协议层713以及控制器固件层712。在主机装置侧720,协议堆栈的层包含基频层728、L2CAP层727、RFCOMM层726、SPP层725、固定长度串行序列协议层724以及应用程序层722。
控制器固件712监控由可供控制器装置710使用的各种输入机构(例如,按钮、游戏操纵杆、跟踪球)提供的模拟和数字信号。每当信号事件发生时(例如,按下按钮、移动游戏操纵杆),控制器固件便使用固定长度协议713产生消息,且将消息发送到主机装置720。
固定长度字节序列将具有预定数目的字节。此序列内的每一字节将具有特定目的。在一个实施例中,序列中的最后字节可指定为“终止字节”,且可总是表示数据被约束而无法到达的固定值,例如0xFF。在替代实施例中,序列中的第一字节可对字节流中的字节数目进行编码。
在主机装置720上运行且链接到主机应用程序的控制器驱动程序723接收固定长度串行序列协议消息,且将消息解译为一个或多个应用程序层级事件。这些事件随后被发送到主机应用程序。
在一个实施方案中,固定长度串行序列协议713是从控制器装置710到主机装置720为单向的730。虽然控制器装置710可向主机装置720发送消息,但主机装置无法将消息发送回控制器装置730。在替代实施方案中,固定长度协议713可为双向的(未图示),从而使得主机装置能够使用类似预定的固定字节序列向移动控制器装置发送命令。
固定长度串行序列协议713是实例性协议,其可实施定制的固定字节序列来支持通常在游戏中使用的广泛多种传感器,包含(1)来自电位计或多自由度模拟游戏操纵杆的模拟信号;(2)例如光学鼠标中或较高端机器人装置中所发现的数字编码器;(3)响应于所施加的变化压力而提供比例信号的力感应电阻器;(4)加速度计和陀螺仪信号;(5)来自跟踪球的信号;(6)来自例如基于应变仪的导航杆等力感测装置的信号;(7)来自光学传感器的比例信号或数字信号;(8)来自电磁传感器的信号;以及类似物。
图8绘示具有终止字节的四字节序列(0xFF作为第4字节或终止字节)的实例性字节序列。在此实施方案中,第一字节用作表示所按下的按钮的状态的位图。控制器装置710在探测到按钮按下时产生一事件,且在探测到按钮释放时产生一不同事件。固定长度串行序列协议还使得控制器装置710能够在按钮已按下之后且在按钮释放之前的固定时期产生“重复”事件。这些重复事件是周期性(例如,每50ms)发送的。举例来说,用于单个按钮按下的事件序列可表示为:
(1)按下事件(Press Event)
(2)重复事件(Repeat Event)
(3)重复事件(Repeat Event)——继续每50ms发送
(4)释放事件(Release Event)
在一个实施例中,重复事件的频率在控制器的固件中是固定的。频率不可由客户端应用程序配置。在另一实施例中,重复事件的频率可由主机使用从主机装置到移动控制器装置的固定字节串行序列来指定。
第二和第三字节表示游戏操纵杆、跟踪球、加速度计或其它输入元件的X和Y值,其每一者表示为8位无符号数字(截断为范围为从1到254)。最后字节是终止字节,其由0xFF表示。由于数据值被约束为从不到达255(在十六进制记数法中为0xFF),因此确保0xFF的成帧字节值将可靠地表示数据流的结束。
图9绘示具有终止字节的五字节序列(0xFF或255作为第5字节或终止字节)的实例性字节序列。在此实例中,前两个字节描绘按钮和小键盘事件。固定长度串行序列协议的第三和第四字节含有X和Y值。这些值中的每一者均表示为无符号8位值,其经截断以使得数据值总是范围为从1到254。第五字节是成帧字节,其用以辅助固件和驱动程序的继承版本来探测5字节包的结束。成帧字节被赋予在实际数据的可允许范围以外的固定值(例如,0xFF或255)。由于数据值被约束为从不到达255(在十六进制记数法中为0xFF),因此确保0xFF的成帧字节值将可靠地表示数据流的结束。
基于双向串行通信协议的机构
与平台无关的通信协议134可实施为通过例如蓝牙串行端口简档(SPP)等传送机构而操作的双向串行通信协议。字节序列在长度上可变,且在设计上可为灵活且可扩展的。虽然蓝牙技术联盟(Bluetooth Special Interest Group)已指定人机界面装置简档(Human Interface Device Profile;HIDP),但蓝牙的Java 2Micro Edition(J2ME)实施方案(JSR-82)不一定支持HIDP。J2ME还不一定支持HIDP所需的两个同时的L2CAP链接。因此,如本说明书中描述的双向串行通信协议经设计以模仿HIDP且提供类似于HIDP的数据以通过SPP连接(或例如L2CAP等其它连接)流动,同时支持J2ME。
图10说明用于通过蓝牙串行端口简档(或SPP)实施基于双向串行通信协议的机构的实例性通信协议堆栈1000。通信协议堆栈1000使用在HID简档中使用的机构上建模的机构来提供控制器装置1010与主机装置1020之间的双向通信。控制器装置1010侧包含基频层1012(例如,蓝牙)、L2CAP层1014、RFCOMM层1015、SPP层1016、双向串行通信协议层1017以及控制器固件1018。主机装置1020侧包含基频层1022、L2CAP层1024、RFCOMM层1025、SPP层1026、双向串行通信协议层1027以及主机应用程序层1029。
在双向串行通信协议900、1100的一些实施方案中,实施固定数目的预定义字节序列或报告格式以允许主机装置1020与移动控制器装置1010交换多种数据,包含传感器信息、状态信息和其它类型的数据。字节序列的结构经设计为完全可扩展,使得可初始支持一组标准传感器类型,且可随着时间而在开发更多传感器类型时支持所述传感器类型。
图11说明用于双向串行通信协议700、1000的实例性字节序列。用于字节序列的预定结构由控制器装置1010和主机装置1020两者上的驱动程序剖析。字节序列经特定设计以支持可变长度的数据串行化。字节序列长度编码为第一字节(字节0)。字节0中编码的信息指示数据包的序列长度。报告类型识别符(例如,类似于用于HIDP的报告类型识别符)编码于字节1处。与字节1中编码的特定报告类型有关的参数从字节2串行化到字节n,其中n为字节序列长度。因为字节0指示将到来的数据包的字节序列长度,所以从字节1开始的字节(例如,1到n字节)反映字节长度和待处理的有关数据。参数的类型和语义、参数排序的方式以及参数占据的字节的数目可在不同的报告类型之间有所不同。当参数占据一个以上字节(例如,一时戳可能需要4个字节用于完全表示)时,所述字节可在优选的网络惯例中串行化,其中最高有效字节(most significant byte;MSB)首先来到(也称为大端(Big Endian)惯例)。在替代实施方案中,所述字节可在最低有效字节(leastsignificant byte;LSB)首先来到(也称为小端(Little Endian)惯例)的情况下串行化。
在占用面积上合理紧凑且可串行化以使得二进制格式配合于255字节包络内的任何数据均可容易使用如本说明书中描述的双向串行通信协议来传送。较大的数据包可经串行化且离散化为若干较小的连续包,其中每一包设计为配合于255字节包络内。通过将较大的数据包划分为离散数目的较小包,可使用双向串行通信协议来传输任何可串行化的数据流。
配对的一组剖析器/串行化器可提供于移动控制器装置侧710、1010和主机装置侧720、1020两者上,其了解如何解译那些报告。为了最佳的兼容性,用于双向串行通信协议的剖析器和串行化器在两侧上是版本匹配的。然而,在移动控制器装置侧710、1010或主机装置侧720、1020上的任何版本的剖析器均可设计为能够基于第一字节中编码的字节长度来接收新的串行通信,且检查第二字节以确定剖析器是否认识报告类型识别符。取决于是否认识报告类型识别符,剖析器可选择对报告类型识别符进行动作,或基于探测到未知的报告类型识别符而忽略所接收的串行报告。
以下段落详细描述用于移动控制器装置向主机装置和从主机装置传送数据的双向串行通信协议的实例性实施方案。实例是仅为说明性目的而提供,且字节序列的其它特定实施方案是可能的。另外,所支持的传感器类型和所传送数据的类型也仅是实例。实施方案可实现在本说明书中描述的双向通信协议下实施的与平台无关的通信协议134下对其它传感器类型和数据类型的支持。
将主机装置1020上的SPP数据流视为未中断数据流。如本说明书中描述的双向串行通信协议是面向包的,其中每一消息封装在包中。由于主机装置的SPP实施方案隐藏了包的概念,因此提供“包络方案”。特定来说,每一消息之前是字节计数。举例来说,当主机装置1020想要以值12将SET_IDLE消息发送到控制器装置1010时,SET_IDLE消息如图12中所示格式化。(参见下文关于SET_IDLE消息的细节。)主机装置1020将以下字节写入到数据流:0x020 x900 x0C。
第一字节(0x02)表示下一消息中的字节数目(即,字节计数)。接下来两个字节0x90(SET_IDLE消息标头)和0x0C(SET_IDLE值)经解译而成为SET_IDLE消息。
在一些实施方案中,为了维持向前兼容性,忽略无法识别的数据包(即,输入和输出报告)。
发送单字节信号交换消息作为对任何SET_IDLE或DATA_OUTPUT消息的确认。有效信号交换值的列表包含以下内容:
HANDSHAKE_SUCCESSFUL                0x00
HANDSHAKE_NOT_READY                 0x01
HANDSHAKE_ERR_INVALID_REPORT_ID     0x02
HANDSHAKE_ERR_UNSUPPORTED_REQUEST   0x03
HANDSHAKE_ERR_INVALID_PARAMETER     0x04
HANDSHAKE_ERR_UNKNOWN               0x0E
HANDSHAKE_ERR_FATAL                 0x0F
作为预设,控制器装置1010每当按钮状态改变时(即,当按钮按下或释放时)发送输入(例如,按钮)事件。控制器装置1010支持固定时期处的按钮重复事件的发送。此固定时期是通过设定控制器的空闲速率(即,重复速率)而在SET_IDLE消息中识别。
空闲速率零(0)解译为没有发射按钮重复事件。这是每当新的连接建立时控制器装置110、710、1010的预设行为。主机装置120、720、1020可将SET IDLE消息发送到控制器装置110、710、1010以指定新的重复速率。重复速率设定为SET_IDLE消息中发送的值乘以一设定时间量(例如,4ms)。举例来说,发送具有值12的SET_IDLE消息使控制器装置110、710、1010每48ms发射按钮重复事件。
通过使用各种适用的值来响应SET_IDLE消息。举例来说,对有效SET_IDLE消息的响应是0x00的HANDSHAKE_SUCCESSFUL值。或者,当探测到SET_IDLE消息的长度不是2字节长时,则发送0x04的HANDSHAKE_ERR_INVALID_PARAMETER值作为响应。而且,当探测到指定空闲速率小于连接的等待时间(假定为50ms),那么控制器装置110、710、1010将空闲速率设定为等于等待时间。图13描述绘示空闲速率的实例性数据序列。
当在控制器装置110、710、1010之间建立连接时,各种标准报告被发送到主机装置120、720、1020。所发送的标准报告包含(1)版本报告;(2)展示按钮计数(Button Count)的配置数据报告(Configuration Data Report);(3)零或零以上按钮元数据报告;(4)零或零以上配置数据报告;以及(5)具有类型0xFF和值0x00000000的配置数据报告。另外,可发送其它定制报告。
标准报告表示可供在API中使用的输入和输出。举例来说,“输入”认为是从控制器装置110、710、1010流动到主机装置120、720、1020的数据。“输出”认为是从主机装置120、720、1020流动到控制器装置110、710、1010的数据。所有多字节值是以网络字节次序(大端)发送。所有字符串是以UTF-8(8位UCS/Unicode变换格式(8-bit USC/Unicode Transformation Format))发送。虽然这是标准惯例,但也可以其它字节次序和其它字符串格式来发送多字节值和字符串。
图14说明用于版本报告的实例性字节序列。将0x03的输入报告ID赋予版本报告。在连接建立之后,版本报告是所发送的第一包。固件主要版本(FirmwareMajor Version)(字节2-3)识别双向串行通信协议的版本。固件次要版本(FirmwareMinor Version)(字节4-5)每当向固件添加特征时递增。固件修订(FirmwareRevision)(字节6-7)每当执行新的发布(例如,程序错误修正)时递增。平台ID(Platform ID)(字节8-9)识别当前平台(即,硬件或处理器),如表1所示。
  表1:平台ID值
  0x0000:BlueCore4PNG
  0x0001:PIC
  0x0002-0xFFFF:保留
模型ID(Model ID)识别控制器模型的布局。
图15说明用于配置数据报告输入报告(Configuration Data Report Input Report)的实例性字节序列。将输入报告ID(例如,0x05)赋予配置数据报告。在连接和发送版本报告之后,控制器装置110、710、1010将一个或多个配置数据报告发送到主机装置120、720、1020。类型字段(Type field)(字节2)指定配置数据报告中发送的控制器配置数据。有效类型值(valid Type value)的列表在表2中列出。
  表2:用于配置数据报告的类型值列表
  0x01:按钮计数
  0x02:2轴游戏操纵杆计数
  0x03:2轴游戏操纵杆每样本的位数
  0x04:2轴游戏操纵杆原始中心X读数
  0x05:2轴游戏操纵杆原始中心Y读数
  0x06:跟踪球计数
  0x07:跟踪球每样本的位
  0x08:桨计数
  0x09:桨每样本的位
  0x0A:滚轮计数
  0x0B:滚轮每样本的位
  0x0C:3轴加速度计计数
  0x0D:3轴加速度计每样本的位
  0x0E:以mV为单位的电池最大电压(范围:0-65535)
  0x0F:以mV为单位的电池最小电压(范围:0-65535)
  0x10:以mV为单位的电池警报电压(范围:0-65535)
  表2:用于配置数据报告的类型值列表
  0xFF:配置数据完成(值=0)。发送此值以向主机装置120、220、720、920、1120通知将不再发送配置数据。
值字段(Value field)(字节3)含有对应于由类型字段(字节2)指定的类型的值。仅与控制器装置110、710、1010有关的那些数据发送到主机装置120、720、1020。换句话说,如果控制器装置110、710、1010没有加速度计,那么不发送加速度计计数。
每样本的位的数目b大于2且小于或等于32。相关联报告中所允许的值的范围表示为从(-2b-1)到(2b-1-1)的范围。举例来说,在一个实施例中,用于8位游戏操纵杆的值的范围可包含-128到127(表示带符号8位值,其中0为运动范围的中值)。对于12位游戏操纵杆,值的范围包含-2048到2047。在一些实施方案中,用于8位游戏操纵杆的值的范围可为范围从0到255(表示无符号8位值,其中128为运动范围的中值)。对于12位游戏操纵杆,值的范围可包含0-4095,其表示无符号12位数字,其中2048为运动范围的中值。
给定用于各种模拟控制(例如,游戏操纵杆、加速度计、桨)的每样本的位的数目,控制器装置110、710、1010发射具有配合于所述每样本的位的数目的最小大小的输入报告。换句话说,2轴游戏操纵杆的每样本10位是在16位2轴游戏操纵杆报告中发送。
图16说明用于按钮元数据报告的实例性字节序列。将0x04的输入报告ID赋予按钮元数据报告。在发送配置数据报告之后,控制器装置110、710、1010针对控制器上的每一按钮发送多达一个按钮元数据报告。按钮元数据报告包含按钮ID(Button ID)(字节2),其为按钮报告中报告的相同按钮ID。按钮描述字段是按钮的人类可读描述(例如,“开火(Fire)”或“向上(Up)”)。推荐游戏动作字段(字节3)提供每一按钮的推荐语义。用于推荐游戏动作字段的值的列表在表3中提供。在此范围以外的推荐游戏动作值被视为未定义的。
  表3:用于推荐游戏动作的类型值列表
  0x00:未定义
  0x01:向上
  0x02:向下
  0x03:向左
  0x04:向右
  0x05:开火
  表3:用于推荐游戏动作的类型值列表
  0x06:游戏A
  0x07:游戏B
  0x08:游戏C
  0x09:游戏D
图17说明用于启用/停用报告类型的实例性字节序列。将0x06的输出报告ID(Output Report ID)值赋予(字节1)启用/停用报告。启用/停用报告的字节2含有可启用或停用的报告ID。任何输入报告(从控制器装置流动到主机装置)可被启用或停用。字节3的位0设定为经启用或清除以停用指定的报告ID。
启用/停用报告中的字节3的位1指定是否应调节报告。当探测到字节3的位1待设定时,指定类型的报告未经调节。当探测到所述位待清除时,以控制器装置上的信号调节软件算法来任选地调节指定类型的报告。信号调节可涉及以下操作的实施:游戏操纵杆中心周围的“死区”,数据范围的极限处的截断,按比例缩放原始数据以在给定范围内产生所得数据,或其它操作。当探测到指定的报告ID不是模拟报告或者是不使用按比例缩放的模拟报告时,忽略字节3的位1(因为没有按比例缩放可以发生)。当探测到指定的报告ID无法启用或停用或者不认识指定的报告ID时,返回HANDSHAKE_ERR_INVALID_PARAMETER。否则,返回HANDSHAKE_SUCCESSFUL。
图18说明用于按钮报告的实例性字节序列。赋予0x07的输入报告ID(InputReport ID)值(字节1)。按钮报告呈现表示按下的按键的一系列按键码(字节2-7)。六个按键中的任意一者或多者(例如,KeyCode 1-6)可在任意给定时间致动。按键码是从0x00依序地赋予值。这些按键码反映了按钮编号。按钮是以在硬件设计过程中的优先次序来编号。最大按键码值是0xFD。
按键码在报告中以增加的次序列出。如果第n按键未按下,那么将用于未致动按钮的按键码报告为KEYCODE_NO_EVENT(0xFE)。当探测到六个以上按键(按钮)被按下时,将所有六个按键码报告为KEYCODE_ERROR_ROLL_OVER(0xFF)。
当空闲速率未指定时或者当空闲速率设定为“0”时,在每次按钮状态改变时发送按钮报告。或者,当探测到非零空闲速率被指定时,每当一个或多个按钮被以指定的空闲速率按下时重复地发送按钮报告。下文进一步描述SET IDLE。
图19说明用于8位模拟2轴游戏操纵杆报告的实例性字节序列。赋予0x08的输入报告ID值(字节1)。对照由配置数据报告的游戏操纵杆总数目(参见输入报告(Input Report)(0x05))检查游戏操纵杆ID(Joystick ID)(字节2)值,且从0到n-1依序地编号每一新的游戏操纵杆,其中n等于控制器中存在的游戏操纵杆总数目。因此,举例来说,对第一游戏操纵杆赋予0x00的游戏操纵杆ID值。
将中心位置报告为(0,0)。X轴读数随着游戏操纵杆向右移动而增加。Y轴读数随着游戏操纵杆向下移动而增加。当探测到原始位(字节2,位7)经设定时,不调节读数。或者,当原始位经清除时,调节读数。
图20说明实例性16位模拟2轴游戏操纵杆报告。赋予0x09的输入报告ID值(字节1)。游戏操纵杆ID值小于由配置数据返回的游戏操纵杆计数(输入报告(0x05))。因此,对第一游戏操纵杆赋予0x00的ID值。
尽管类似于8位报告进行设计,然而为每一轴读数分配16位。将中心位置报告为(0,0)。X轴读数随着游戏操纵杆向右移动而增加。Y轴读数随着游戏操纵杆向下移动而增加。当探测到原始位(字节2,位7)经设定时,不调节读数。当探测到原始位经清除时,调节读数。
图21说明实例性32位模拟2轴游戏操纵杆报告。赋予0x0A的输入报告ID值(字节1)。游戏操纵杆ID值小于由配置数据返回的游戏操纵杆计数(输入报告(0x05))。因此,对第一游戏操纵杆赋予0x00的ID值。
尽管类似于8位报告进行设计,然而为每一轴读数分配32位。将中心位置报告为(0,0)。X轴读数随着游戏操纵杆向右移动而增加。Y轴读数随着游戏操纵杆向下移动而增加。当探测到原始位(字节2,位7)经设定时,不调节读数。当探测到原始位经清除时,调节读数。
图22说明实例性8位模拟3轴加速度计报告。赋予0x0B的输入报告ID值(字节1)。加速度计ID(Accelerometer ID)值小于由配置数据返回的游戏操纵杆计数(输入报告(0x05))。因此,对第一加速度计赋予0x00的ID值。当探测到原始位(字节2,位7)经设定时,不调节读数。当探测到原始位经清除时,调节读数。
图23说明实例性16位模拟3轴加速度计报告。赋予0x0C的输入报告ID值(字节1)。加速度计ID值小于由配置数据返回的游戏操纵杆计数(输入报告(0x05))。因此,对第一加速度计赋予0x00的ID值。当探测到原始位(字节2,位7)经设定时,不调节读数。当探测到原始位经清除时,调节读数。
图24说明实例性32位模拟3轴加速度计报告。赋予0x0D的输入报告ID值(字节1)。加速度计ID值小于由配置数据返回的游戏操纵杆计数(输入报告(0x05))。因此,对第一加速度计赋予0x00的ID值。当探测到原始位(字节2,位7)经设定时,不调节读数。当探测到原始位经清除时,调节读数。
图25说明实例性8位模拟桨报告。在一个实施例中,桨在硬件上实施为具有固定运动范围的旋转电位计。赋予0x0E的输入报告ID值(字节1)。桨ID(PaddleID)值小于由配置数据返回的桨计数(输入报告(0x05))。因此,对第一桨赋予0x00的ID值。中心位置应报告为“0”。当探测到原始位(字节2,位7)经设定时,不调节读数。当探测到原始位经清除时,调节读数。
图26说明实例性16位模拟桨报告。赋予0x0F的输入报告ID值(字节1)。桨ID值小于由配置数据返回的桨计数(输入报告(0x05))。因此,对第一桨赋予0x00的ID值。中心位置应报告为“0”。当探测到原始位(字节2,位7)经设定时,不调节读数。当探测到原始位经清除时,调节读数。为每一读数赋予十六位。
图27说明实例性32位模拟桨报告。赋予0x10的输入报告ID值(字节1)。桨ID值小于由配置数据返回的桨计数(输入报告(0x05))。因此,对第一桨赋予0x00的ID值。中心位置应报告为“0”。当探测到原始位(字节2,位7)经设定时,不调节读数。当探测到原始位经清除时,调节读数。为每一读数赋予三十二位。
图28说明实例性16位电池电平报告。赋予0x11的输入报告ID值(字节1)。电池电平报告以固定速率(例如,每60秒一次)发送。字节2-3含有当前电池读数。为电池电平读数赋予十六位。
图29说明实例性8位跟踪球报告。赋予0x12的输入报告ID值(字节1)。跟踪球ID(Trackball ID)值小于由配置数据返回的跟踪球计数(输入报告(0x05))。因此,对第一跟踪球赋予0x00的ID值。X读数在跟踪球向右移动时探测为正值。Y读数在跟踪球向下移动时探测为正值。为X读数和Y读数赋予八位。
图30说明实例性16位跟踪球报告。赋予0x13的输入报告ID值(字节1)。跟踪球ID值小于由配置数据返回的跟踪球计数(输入报告(0x05))。因此,对第一跟踪球赋予0x00的ID值。X读数在跟踪球向右移动时探测为正值。Y读数在跟踪球向下移动时探测为正值。为X读数赋予十六位,且为Y读数赋予16位。
图31说明实例性32位跟踪球报告。赋予0x14的输入报告ID值(字节1)。跟踪球ID值小于由配置数据返回的跟踪球计数(输入报告(0x05))。因此,对第一跟踪球赋予0x00的ID值。X读数在跟踪球向右移动时保持为正。Y读数在跟踪球向下移动时保持为正。为X读数赋予三十二位,且为Y读数赋予32位。
图32说明实例性8位滚轮报告。赋予0x15的输入报告ID值(字节1)(输入报告ID 0x15)。滚轮ID小于由配置数据返回的滚轮计数(输入报告(0x05))。因此,对第一滚轮赋予0x00的ID值。当读数为正时,确定滚轮已远离或向左移动。当读数为负时,确定滚轮已靠近或向右移动。
图33说明实例性16位滚轮报告。赋予0x16的输入报告ID(Input Report ID)值(字节1)。滚轮ID(Scroll Wheel ID)值小于由配置数据返回的滚轮计数(输入报告(0x05))。因此,对第一滚轮赋予0x00的ID值。当探测到读数为正时,确定滚轮已远离或向左移动。当探测到读数为负时,确定滚轮已靠近或向右移动。为读数分配十六位。
图34说明实例性32位滚轮报告。赋予0x17的输入报告ID值(字节1)。滚轮ID值小于由配置数据返回的滚轮计数(输入报告(0x05))。因此,对第一滚轮赋予0x00的ID值。当探测到读数为正时,确定滚轮已远离或向左移动。当探测到读数为负时,确定滚轮已靠近或向右移动。
如上所述,模拟报告(Analog report)可原始地递送(未调节)。大体上,经调节报告设计为发送以0为中心且经按比例缩放以填充预定范围(如每样本位配置数据报告中指定)的带符号读数。原始报告是具有尚未处理的值的报告。原始报告表示未经处理的传感器读数。由此,原始报告是无符号的,且中心读数由上文指定的配置数据报告指定。举例来说,当探测到报告是原始的时,读数无符号。或者,当报告经调节时,读数有符号。
还可提供各种输出报告。图35说明用于原始和经调节8位模拟2轴游戏操纵杆报告的实例性字节序列。赋予0xFD的输出报告ID值(字节1)。原始和经调节8位模拟2轴游戏操纵杆报告经包含以用于测试按比例缩放算法的性能。原始和经调节8位模拟2轴游戏操纵杆报告既定不在测试应用程序以外使用。原始和经调节8位模拟2轴游戏操纵杆报告可使用输出报告0x06来启用。
图36说明用于运行循环测试报告的实例性字节序列。赋予0xFE的输出报告ID值。在接收到有效的运行循环测试报告后,控制器装置110、710、1010执行以下操作中的一者或多者:(1)以HANDSHAKE SUCCESSFUL答复主机装置120、720、1020;(2)停用所有当前启用的报告(包含电池报告);(3)发送时戳报告(输入报告ID 0xFF);(4)发送n个报告,其中:(a)n等于指定的迭代数目(字节4-7中);(b)报告具有指定类型(字节2中);(c)报告一定是模拟报告类型;以及(d)当原始位经设定(字节3中的位0)时,对模拟读数没有进行按比例缩放(或者,当原始位经清除时执行通常的按比例缩放);(5)发送时戳报告(输入报告ID 0xFF);以及(6)重新启用原始经启用的报告。
此外,当探测到所需报告ID(字节2)是由装置支持的报告时,运行循环测试报告是有效的。举例来说,当控制器装置110、710、1010不具有加速度计时,所需报告ID无法指定加速度计报告。或者当探测到所需报告ID指定模拟报告类型时,运行循环测试报告是有效的。
被指定零次迭代(例如,字节4-7全部等于0x00)的运行循环测试报告的接收取消任何当前执行的循环测试。即使没有测试当前在运行,控制装置也以HANDSHAKE_SUCCESSFUL进行响应。
图37说明用于32位装置时戳(毫秒)报告的实例性字节序列。赋予0xFF的输入报告ID值(字节1)。32位装置时戳(毫秒)报告反映控制装置110、710、1010上的如其内部时钟所报告的时间。32位装置时戳(毫秒)报告仅结合循环测试而使用。
在移动控制器装置与主机装置之间传送数据
在一方面中,如本说明书中描述的与平台无关的通信协议经设计以从人机界面装置(例如,控制器装置1010)向主机装置1020传送控制数据(启用通信)。与平台无关的通信协议134为具有用以向运行例如游戏等应用程序的主机装置传送数据的各种输入机构(例如,游戏操纵杆和按钮状态)的各种控制器装置提供支持,所述应用程序可由所述各种控制器装置控制。另外,如本说明书中描述的与平台无关的通信协议是可扩展的,因为可添加另外的报告以支持其它类型数据的传送。虽然可关于蓝牙人机界面简档(HID)或蓝牙串行端口简档(SPP)连接来描述与平台无关的通信协议,但其它基频连接是同等适用的。双向串行通信协议1017、1027与连接类型无关。然而,使用另一传送协议(例如,L2CAP)可使得字节序列长度不必要,或在传输中强加其它的“开销”。
图38是说明用于实现移动控制器装置与主机装置之间的通信的过程3800的过程流程图。控制器装置上的固件监控3810由可供移动控制器装置使用的各种输入机构(例如,按钮、游戏操纵杆、跟踪球等)提供的输入信号(例如,模拟和数字信号)。每一输入机构可包含一个或多个输入元件(例如,按钮)。每当信号事件发生3820时(例如,按钮被按下、游戏操纵杆移动),控制器固件使用双向串行通信协议1017产生消息,且将消息发送到主机装置1020。
消息是由控制器固件基于探测到的信号事件而产生3830。所述消息由经设计以支持广泛多种传感器的若干字节组成,所述传感器包含通常在游戏中使用的那些传感器,例如:来自电位计或多自由度模拟游戏操纵杆的模拟信号;例如光学鼠标中或较高端机器人装置中可能发现的数字编码器;响应于所施加的变化压力而提供比例信号的力感应电阻器;加速度计和陀螺仪信号;来自跟踪球的信号;来自例如基于应变仪的导航杆等力感测装置的信号;来自光学传感器的比例信号或数字信号;来自电磁传感器的信号;以及类似物。在基于HID的方法的情况下,字节序列在定制描述符中定义。在固定长度串行方法的情况下,在来自传感器的信号与预设字节语法之间找到最佳匹配。在双向串行通信协议的情况下,字节序列是可变的且完全匹配于传感器的实际输出和/或来自移动控制器装置的任何其它数据输出。
字节序列中的至少一者映射到可供移动控制装置使用的输入机构上的一个或多个输入元件。举例来说,当移动控制器装置包含小键盘时,字节中的至少一者可映射到小键盘上的按钮中的一者或多者。类似地,对于游戏操纵杆,字节中的至少一者可映射到游戏操纵杆的各种移动和/或游戏操纵杆上的按钮。另外,每一传感器类型可由相异的报告类型识别符表示,使得多种传感器可由相同的固件和主机软件支持。
将产生的消息发送3840到主机装置。在主机装置上运行且链接到主机应用程序的控制器驱动程序接收3850消息,且将消息解译3860为一个或多个应用程序层级事件。随后将这些经解译的事件发送3870到主机应用程序。主机应用程序处理3880经解译的事件。举例来说,当主机应用程序是游戏时,处理经解译事件以执行对应于按钮按下、游戏操纵杆移动等的游戏功能。
蓝牙实施方案
为了在控制器装置与主机装置之间建立连接,控制器装置1010等待另一装置以进行起始连接。主机装置1020(例如,手机、PC、移动装置等)进行起始以形成与控制器装置1010的连接。控制器装置1010提供SPP服务器(SPP Server)(或L2CAP服务器等)供主机装置1020连接。所述服务器可使用通用唯一识别符(universally unique identifier;UUID)通过服务发现简档(Service Discovery Profile;SDP)来识别。在一个实施例中,此UUID可选择为与与平台无关的通信协议相关联。与平台无关的通信协议的所有未来实施方案均可使用相同UUID来提供向后兼容性。当使用不同的UUID时,不保证向后兼容性。寻求连接到控制器装置的主机装置1020可识别UUID。在替代实施例中,可改变UUID以反映对与平台无关的通信协议的升级。
实例应用
通过与平台无关的通信协议传送的数据可以或不可以直接与传感器输出相关。举例来说,可检索时戳数据。在另一实例中,移动控制器装置可用作用于其它平台的数据传送和存储装置。
图39-44概述其中可应用与平台无关的通信协议的又几个实例。图39说明用于具有Java功能的远程控制器装置3910的实施实例性系统3900,所述远程控制器装置3910控制导航系统3920上的测绘应用程序。举例来说,远程控制器装置3910可用以控制安装在汽车的仪表板上或集成在中央控制台中的汽车导航系统3920上的测绘应用程序。远程控制器装置3910可被拿在手中、夹持到汽车方向盘等。此实例中的基频连接可为蓝牙(如果导航系统支持),或者例如USB等有线连接。通过使用控制器装置3910,可使用远程控制器上的独特设计来将关注的地址和点输入到导航系统3920中。如本说明书中描述的与平台无关的通信协议使得此信息能够有效编码且传送到导航系统3920,而无需占据控制器侧或导航系统侧的大量存储器占用面积。
图40说明用于在具有GPS功能的装置之间提供数据交换的实例性系统4000。举例来说,具有GPS功能的汽车4020、远程控制器装置4010以及在移动电话装置4030上运行的测绘应用程序4032可通过本说明书中描述的与平台无关的通信协议彼此通信。与平台无关的通信协议可通过蓝牙4040实施以允许具有GPS功能的汽车4020与移动电话4030通信。从汽车4020发送到移动电话的特定信息可包含描述在点火被关闭时汽车4020的GPS位置的数据。举例来说,如本说明书中描述的与平台无关的通信协议可经实施以实现题目为“System and Method for ProvidingLocal Maps Using Wireless Handheld Devices”的共同待决专利申请案(第11/620,604号美国专利申请案)中的通信。此共同待决申请案(第11/620,604号美国专利申请案)的内容以引用的方式并入。
图41说明用于实现移动电话4110、汽车4120和PC 4130之间的数据通信的实例性系统4100。举例来说,配备蓝牙的汽车4120可通过与平台无关的通信协议向移动电话4110传送数据(例如,汽车的机械状态信息)。移动电话4110可随后用以使用本说明书中描述的与平台无关的通信协议将数据上载到具有蓝牙功能的PC 4130。可在PC上跟踪例如里程、汽车的磨损等信息以实现在汽车上发生故障之前的及时预防性的维护和修理。
在类似的实例(未图示)中,控制器可从导航装置(无论是便携式的还是集成在交通工具中)检索GPS信息,且将其存储以用于未来上载到PC供回顾。
图42说明用于实现多个健康和健身装置之间的数据通信的实例性系统4200。举例来说,移动电话4210可使用本说明书中描述的与平台无关的通信协议链接到计步器4220。来自计步器4220的数据可被串行化。在人锻炼时,计步器可将经串行化的计步器数据串流到移动电话4210,移动电话4210可随后跟踪带有计步器的人的锻炼状态。移动电话4210上接收的数据可使用本说明书中描述的相同的与平台无关的通信协议传送到PC。
图43说明用于实现具有Java功能的游戏操纵杆控制器4310与移动电话4320之间的数据通信的实例性系统4300。举例来说,具有模拟游戏操纵杆的远程控制器4310可通过本说明书中描述的与平台无关的通信协议与移动电话4320通信。移动电话4320可在例如J2ME平台上运行游戏。所述游戏支持与平台无关的通信协议,且因此所述游戏可利用对模拟游戏操纵杆信号、其它开关信号或通过蓝牙从控制器装置4310传送到电话4320的任何其它数据进行编码的软件库。举例来说,如本说明书中描述的与平台无关的通信协议可经实施以实现题目为“Human InputAcceleration System”的共同待决专利申请案(第11/519,455号美国专利申请案)中的通信。
图44说明用于实现多玩家移动游戏情境中的通信的实例性系统4400。举例来说,两个玩家可一起在移动电话4430上玩游戏。每一玩家具有其自己的控制器4410、4420。移动电话4430支持J2ME平台上的游戏,且支持对TV或其它显示器装置4440的视频输出。移动电话4430通过如本说明书中描述的与平台无关的通信协议同时与控制器4410、4420两者通信。两个游戏者可在玩运行于移动电话4430上的游戏同时享受类似于游戏控制台的体验。
在另一实例(未图示)中,控制器装置可从主机装置(例如,移动电话)检索游戏状态信息,且将信息传送到PC以用于备份或用于PC上也支持的游戏的与平台无关的玩游戏。反过来,控制器装置可从PC检索游戏状态信息,且将其传送到移动电话。也可支持其它平台。移动控制器装置可因此变为游戏体验可借以从一个平台载运到另一平台的运载工具。举例来说,如本说明书中描述的与平台无关的通信协议可经实施以实现题目为“Universal Controller for Toy and Games”的共同待决专利申请案(第11/519,455号美国专利申请案)中的通信。
本说明书中描述的标的物的实施例和功能操作可以数字电子电路或者以计算机软件、固件或硬件(包含本说明书中揭示的结构及其结构等效物)或者以其一者或多者的组合来实施。本说明书中描述的标的物的实施例可实施为一个或多个计算机程序产品,即,在有形程序载体上编码以用于由数据处理设备执行或控制数据处理设备的操作的一个或多个计算机程序指令模块。有形程序载体可为传播的信号或计算机可读取记录媒体。传播的信号是人工产生的信号,例如机器产生的电、光或电磁信号,其经产生以编码信息以用于传输到合适的接收器设备供计算机执行。计算机可读取记录媒体可为机器可读存储装置、机器可读存储衬底、存储器装置、实现机器可读传播信号的物质的组合物,或其中一者或多者的组合。
术语“数据处理设备”涵盖用于处理数据的所有设备、装置和机器,包含例如可编程处理器、计算机或多个处理器或计算机。除了硬件以外,设备还可包含产生用于所关注计算机程序的执行环境的代码,例如构成处理器固件、协议堆栈、数据库管理系统、操作系统或其中一者或多者的组合的代码。
计算机程序(也称为程序、软件、软件应用程序、脚本或代码)可以任何形式的编程语言来编写,包含经编译或解译的语言,或者声明性语言或过程性语言,且其可以任何形式部署,包含作为独立的程序或作为模块、组件、子例行程序或适于在计算环境中使用的其它单位。计算机程序不一定对应于文件系统中的文件。程序可存储在保持其它程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中、专用于所关注程序的单个文件中,或多个协作文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。计算机程序可经部署以在一个计算机上执行,或在位于一个位点处或分布于多个位点上且由通信网络互连的多个计算机上执行。
本说明书中描述的过程和逻辑流程可由一个或多个可编程处理器执行,所述一个或多个可编程处理器通过对输入数据进行操作且产生输出来执行一个或多个计算机程序以执行功能。过程和逻辑流程还可由专用逻辑电路执行,且设备也可实施为专用逻辑电路,所述专用逻辑电路例如为现场可编程门阵列(field programmablegate array;FPGA)或专用集成电路(application specific integrated circuit;ASIC)。
适用于执行计算机程序的处理器包含(例如)通用和专用微处理器,和任何种类的数字计算机的任何一个或多个处理器。大体上,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的本质元件是一用于执行指令的处理器和一个或多个用于存储指令和数据的存储器装置。大体上,计算机还将包含一个或多个用于存储数据的大容量存储装置(例如,磁盘、磁光盘或光盘),或在操作上经耦合以从所述大容量存储装置接收数据或向所述大容量存储装置传送数据。然而,计算机无需具有此类装置。而且,计算机可嵌入在另一装置中。
适用于存储计算机程序指令和数据的计算机可读取记录媒体包含所有形式的非易失性存储器、媒体和存储器装置,包含(例如):实例半导体存储器装置,例如EPROM、EEPROM和快闪存储器装置;磁盘,例如内部硬磁盘或可装卸式磁盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充,或并入专用逻辑电路中。
为了提供与用户的交互,本说明书中描述的标的物的实施例可实施于具有用于向用户显示信息的显示器装置(例如,阴极射线管(cathode ray tube;CRT)或液晶显示器(liquid crystal display;LCD))以及用户可借以向计算机提供输入的键盘和指向装置(例如,鼠标或跟踪球)的计算机上。其它种类的装置也可用以提供与用户的交互;例如来自用户的输入可以任何形式来接收,包含声音、语音或触觉输入。
本说明书中描述的标的物的实施例可在包含后端组件(例如,作为数据服务器)或包含中间件组件(例如,应用程序服务器)或包含前端组件(例如,具有用户可借以与本说明书中描述的标的物的实施方案交互的图形用户界面或网页浏览器的客户端计算机)或一个或多个此后端、中间件或前端组件的任何组合的计算系统中实施。系统的组件可由任何数字数据通信形式或媒体(例如,通信网络)互连。通信网络的实例包含局域网(local area network;LAN)和广域网(wide area network;WAN),广域网例如为因特网。
计算系统可包含客户端和服务器。客户端和服务器大体上彼此远离,且通常通过通信网络进行交互。客户端和服务器的关系借助于在相应计算上运行且彼此具有客户端-服务器关系的计算机程序而实现。
虽然本说明书含有许多特定内容,但这些不应当解释为对任何发明或可能主张的内容的范围的限制,而是作为对可能对于特定发明的特定实施例是特定的特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可在单个实施例中组合实施。反过来,在单个实施例的上下文中描述的各种特征也可单独地在多个实施例中或以任何合适的子组合来实施。而且,虽然上文可能将特征描述为以某一组合进行动作且甚至初始便如此主张,但来自一所主张组合的一个或多个特征在一些情况下可从所述组合排除,且所主张组合可针对子组合或子组合的变型。
类似地,虽然在图中以特定次序描绘操作,但这不应当理解为要求以所展示的特定次序或以顺序次序执行这些操作或者执行所有说明的操作以实现所要结果。
仅描述几个实施方案和实例,且可基于本申请案中描述和说明的内容来做出其它实施方案、增强和变型。
而且,用以提供数据输入、装置控制或游戏控制的方法可以不同次序执行,且仍实现所要结果。因此,其它实施方案在所附权利要求书的范围内。

Claims (22)

1.一种方法,包括:
通过通信协议在移动控制器装置与主机装置之间提供与平台无关的双向通信,其中提供步骤包括:
从所述移动控制器装置向所述主机装置递送一系列字节,其中所述一系列字节描述所述移动控制器装置的一个或多个数据包;
当探测到所述主机装置包含本机装置驱动程序时,使用所述本机装置驱动程序来剖析所述所递送的一系列字节;以及
当探测到所述主机装置不包含本机装置驱动程序时,提供装置驱动程序来剖析所述所递送的一系列字节。
2.如权利要求1所述的方法,其特征在于,提供所述装置驱动程序的步骤包括:根据所述所递送的一系列字节,提供定制的人机界面装置驱动程序。
3.如权利要求1所述的方法,其特征在于,提供所述与平台无关的双向通信的步骤包括:提供与Java平台兼容的双向通信。
4.如权利要求1所述的方法,其特征在于,递送所述一系列字节的步骤包括:使用所述一系列字节中的固定数目的字节来产生一个或多个装置专用描述符,所述一个或多个装置专用描述符用于支持本机人机界面装置描述符所不支持的一个或多个传感器。
5.如权利要求4所述的方法,其特征在于,产生用于支持一个或多个传感器的所述一个或多个装置专用描述符的步骤包括:产生用于支持选自以下群组的至少一者的一个或多个装置专用描述符:游戏操纵杆、线性电位计、跟踪球、编码器、力感应电阻器、应变仪、一系列数字开关、加速度计、陀螺仪、惯性传感器和电磁传感器。
6.如权利要求1所述的方法,其特征在于,提供所述与平台无关的双向通信的步骤包括:提供至少两个可由Java平台驱动程序访问的通信信道。
7.如权利要求1所述的方法,其特征在于,递送一系列字节的步骤包括:递送为所述移动控制器装置定制的可变的字节序列。
8.如权利要求7所述的方法,其特征在于,递送可变的字节序列的步骤包括:
将所述字节序列中的每一字节映射至所述移动控制器装置上的一个或多个输入元件;以及
根据所述输入元件的状态,改变赋予每一字节的值。
9.一种计算机程序产品,实施于计算机可读取记录媒体上,可运行以使数据处理装置执行包括以下的操作:
通过通信协议在移动控制器装置与主机装置之间提供与平台无关的双向通信,其中提供步骤包括:
从所述移动控制器装置向所述主机装置递送一系列字节,其中所述一系列字节描述所述移动控制器装置的一个或多个数据包;
当探测到所述主机装置包含本机装置驱动程序时,使用所述本机装置驱动程序来剖析所述所递送的一系列字节;以及
当探测到所述主机装置不包含本机装置驱动程序时,提供装置驱动程序来剖析所述所递送的一系列字节。
10.如权利要求9所述的计算机程序产品,其特征在于,可运行以使所述数据处理装置执行进一步包括以下的操作:根据所述所递送的一系列字节,提供定制的人机界面装置驱动程序。
11.如权利要求9所述的计算机程序产品,其特征在于,可运行以使所述数据处理装置执行进一步包括以下的操作:通过至少提供与Java平台兼容的双向通信来提供与平台无关的双向通信。
12.如权利要求9所述的计算机程序产品,其特征在于,可运行以使所述数据处理装置执行进一步包括以下的操作:通过至少使用所述一系列字节中的固定数目的字节产生一个或多个装置专用描述符来递送一系列字节,所述一个或多个装置专用描述符用于支持本机人机界面装置描述符所不支持的一个或多个传感器。
13.如权利要求12所述的计算机程序产品,其特征在于,可运行以使所述数据处理装置执行进一步包括以下的操作:产生用于支持一个或多个传感器的一个或多个装置专用描述符,此通过至少产生用于支持选自以下群组的至少一者的一个或多个装置专用描述符来进行:游戏操纵杆、线性电位计、跟踪球、编码器、力感应电阻器、应变仪、一系列数字开关、加速度计、陀螺仪、惯性传感器和电磁传感器。
14.如权利要求9所述的计算机程序产品,其特征在于,可运行以使所述数据处理装置执行进一步包括以下的操作:提供与平台无关的双向通信,所述与平台无关的双向通信具有至少两个可由Java平台驱动程序访问的通信信道。
15.如权利要求9所述的计算机程序产品,其特征在于,还可运行以使所述数据处理装置执行进一步包括以下的操作:递送一系列字节,所述一系列字节具有为所述移动控制器装置定制的可变的字节序列。
16.如权利要求15所述的计算机程序产品,其特征在于,还可运行以使所述数据处理装置执行进一步包括以下的操作:递送可变的字节序列,包括:
将所述字节序列中的每一字节映射至所述移动控制器装置上的一个或多个输入元件;以及
根据所述输入元件的状态,改变赋予每一字节的值。
17.一种移动控制器装置,包括:
通信机构,用以运行通信协议堆栈,所述通信协议堆栈包括:
基频协议,用以将所述移动控制器装置连接至主机装置;
双向串行通信协议,用以在所述基频协议之上运行,以向所述主机装置发送一个或多个消息,其中每一消息均包含字节序列;以及
控制器固件,用以:
监控由可供所述移动控制器装置使用的各种输入机构提供的输入信号,以及
产生所述一个或多个消息;
其中所述双向串行通信协议通过所述基频协议实现所述移动控制器装置与主机装置之间的与平台无关的双向通信。
18.如权利要求17所述的系统,其特征在于,所述双向串行通信协议实现与平台无关的双向通信,所述与平台无关的双向通信包含与Java平台兼容的双向通信。
19.如权利要求17所述的系统,其特征在于,所述控制器固件进一步用以取所述字节序列中固定数目的字节来产生一个或多个装置专用描述符,所述一个或多个装置专用描述符用于支持本机人机界面装置描述符所不支持的一个或多个传感器。
20.如权利要求19所述的系统,其特征在于,所述控制器固件进一步用以产生用于支持选自以下群组的至少一者的一个或多个装置专用描述符:游戏操纵杆、线性电位计、跟踪球、编码器、力感应电阻器、应变仪、一系列数字开关、加速度计、陀螺仪、惯性传感器和电磁传感器。
21.如权利要求17所述的系统,其特征在于,所述控制器固件进一步用以产生所述一个或多个消息,每一所产生的消息均包含为所述移动控制器装置定制的可变的字节序列。
22.如权利要求17所述的系统,其特征在于,所述控制器固件进一步用以将所述字节序列中的每一字节映射至可供所述移动控制器装置使用的所述各种输入机构的一个或多个输入元件,并根据所述所映射的一个或多个输入元件的状态来改变赋予每一字节的值。
CN200880106142A 2007-08-24 2008-08-25 与平台无关的通信协议 Pending CN101828160A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/844,999 2007-08-24
US11/844,999 US20090054069A1 (en) 2007-08-24 2007-08-24 Platform Independent Communication Protocol
PCT/US2008/074243 WO2009029588A2 (en) 2007-08-24 2008-08-25 Platform independent communication protocol

Publications (1)

Publication Number Publication Date
CN101828160A true CN101828160A (zh) 2010-09-08

Family

ID=40382665

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880106142A Pending CN101828160A (zh) 2007-08-24 2008-08-25 与平台无关的通信协议

Country Status (7)

Country Link
US (1) US20090054069A1 (zh)
EP (1) EP2193427A2 (zh)
JP (1) JP2010537588A (zh)
KR (1) KR20100058586A (zh)
CN (1) CN101828160A (zh)
CA (1) CA2698314A1 (zh)
WO (1) WO2009029588A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102651753A (zh) * 2011-02-25 2012-08-29 国际商业机器公司 与平台无关的信息处理系统及其通信方法
CN104796249A (zh) * 2015-03-19 2015-07-22 谭旗 用于微电脑的串行通讯数据的加密方法
CN106851531A (zh) * 2016-12-15 2017-06-13 北京塞宾科技有限公司 一种蓝牙音频传输方法

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2210242A4 (en) * 2007-11-13 2012-04-18 Spielo Mfg Ulc WIRELESS BETTING SYSTEM
US8706297B2 (en) * 2009-06-18 2014-04-22 Michael Todd Letsky Method for establishing a desired area of confinement for an autonomous robot and autonomous robot implementing a control system for executing the same
US10601457B2 (en) * 2010-07-27 2020-03-24 Comcast Cable Communications, Llc Configuring remote control behavior to limit a maximum amount of transmissions for continuous press of a button
CN102012886B (zh) * 2010-10-14 2012-12-05 深圳市文鼎创数据科技有限公司 基于hid协议的通讯方法、装置及系统
CN102111446B (zh) * 2011-01-12 2013-04-24 华为终端有限公司 设备连接处理方法、组合设备和主机设备
US9413803B2 (en) * 2011-01-21 2016-08-09 Qualcomm Incorporated User input back channel for wireless displays
US9787725B2 (en) 2011-01-21 2017-10-10 Qualcomm Incorporated User input back channel for wireless displays
US10135900B2 (en) 2011-01-21 2018-11-20 Qualcomm Incorporated User input back channel for wireless displays
US8521942B2 (en) 2011-03-21 2013-08-27 Microsoft Corporation HID over simple peripheral buses
US9247004B2 (en) * 2011-10-25 2016-01-26 Vital Connect, Inc. System and method for reliable and scalable health monitoring
US8725916B2 (en) 2012-01-07 2014-05-13 Microsoft Corporation Host side implementation for HID I2C data bus
DE102012002618B4 (de) * 2012-02-13 2014-11-06 Bury Sp.Z.O.O Verfahren zum Betreiben eines Mobiltelefons
US9411761B2 (en) 2012-06-22 2016-08-09 Microsoft Technology Licensing, Llc Platform neutral device protocols
JP2014085857A (ja) * 2012-10-24 2014-05-12 Alpine Electronics Inc 電子装置、電子装置の通信制御方法、電子装置の通信制御プログラム、情報端末装置および電子システム
US9144094B2 (en) * 2012-10-29 2015-09-22 Qualcomm Incorporated Establishing a wireless display session between a computing device and a vehicle head unit
KR20140089864A (ko) * 2013-01-07 2014-07-16 (주)초이스테크놀로지 인터페이스 장치 및 이를 이용한 단말기와 컴퓨터의 연동 시스템
US9773353B2 (en) * 2013-10-10 2017-09-26 Fusepoint Ltd. Wireless automotive interface device
US10074269B2 (en) 2017-01-09 2018-09-11 Nintendo Co., Ltd. Communication system, apparatus and method
US11928898B2 (en) * 2019-12-13 2024-03-12 Autolab Inc. Systems and methods for facilitating vehicle related problems
KR102634983B1 (ko) * 2021-02-15 2024-02-07 (주)자이네스 이동형 조작 장치 및 이동형 조작 장치의 조작 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100280783B1 (ko) * 1996-08-20 2001-02-01 윤종용 컴퓨터 시스템의 원격 제어 장치 및 원격 제어 방법
US6415439B1 (en) * 1997-02-04 2002-07-02 Microsoft Corporation Protocol for a wireless control system
US6539437B1 (en) * 1998-11-30 2003-03-25 Intel Corporation Remote control inputs to java applications
JP4378576B2 (ja) * 1999-05-18 2009-12-09 ソニー株式会社 受信装置および方法、供給装置および方法、双方向通信システムおよび方法、並びに記録媒体
US7161926B2 (en) * 2001-07-03 2007-01-09 Sensoria Corporation Low-latency multi-hop ad hoc wireless network
JP2003084984A (ja) * 2001-09-12 2003-03-20 Canon Inc 情報処理装置、及び、情報処理方法、及び、制御プログラム、及び、制御プログラムを記憶した記憶媒体
JP3715954B2 (ja) * 2002-07-12 2005-11-16 キヤノン株式会社 情報処理装置、情報処理方法、制御プログラム、ネットワークシステム
US20060253617A1 (en) * 2005-04-22 2006-11-09 Microsoft Corporation Driver upgrade tools
US7649522B2 (en) * 2005-10-11 2010-01-19 Fish & Richardson P.C. Human interface input acceleration system
US7280097B2 (en) * 2005-10-11 2007-10-09 Zeetoo, Inc. Human interface input acceleration system
JP4805116B2 (ja) * 2006-12-11 2011-11-02 株式会社日立製作所 情報処理システム、情報処理システムの制御方法、サービス利用装置及びサービス提供装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102651753A (zh) * 2011-02-25 2012-08-29 国际商业机器公司 与平台无关的信息处理系统及其通信方法
CN102651753B (zh) * 2011-02-25 2016-04-27 国际商业机器公司 与平台无关的信息处理系统及其通信方法
CN104796249A (zh) * 2015-03-19 2015-07-22 谭旗 用于微电脑的串行通讯数据的加密方法
CN104796249B (zh) * 2015-03-19 2018-10-30 柳州市新科电脑衡器制造有限责任公司 用于微电脑的串行通讯数据的加密方法
CN106851531A (zh) * 2016-12-15 2017-06-13 北京塞宾科技有限公司 一种蓝牙音频传输方法

Also Published As

Publication number Publication date
CA2698314A1 (en) 2009-03-05
WO2009029588A3 (en) 2009-04-30
JP2010537588A (ja) 2010-12-02
WO2009029588A9 (en) 2009-10-29
KR20100058586A (ko) 2010-06-03
US20090054069A1 (en) 2009-02-26
WO2009029588A2 (en) 2009-03-05
EP2193427A2 (en) 2010-06-09

Similar Documents

Publication Publication Date Title
CN101828160A (zh) 与平台无关的通信协议
CN103809960B (zh) 编码动态触觉效应
CN106201553B (zh) 在桌面推送应用程序的控制方法、装置及终端设备
CN108874866A (zh) 数据导入管理方法、装置、移动终端和存储介质
CN1486456A (zh) 一对一直接通信
CN101246687A (zh) 一种智能语音交互系统及交互方法
CN102109913B (zh) 基于复合mems传感器的控制器指针定位方法及控制器
CN107632826A (zh) 一种源代码的编译方法和客户端
CN102792248A (zh) 输入输出装置、信息输入输出系统
CN1530801A (zh) 基于运动的电子设备控制装置和方法
CN102770832A (zh) 用于提供用户输入选项的合作启用的方法和装置
US20020093490A1 (en) Remote control device with display and ball switch
US20090249202A1 (en) Method and System for Processing Signals that Control a Device Using Human Breath
CN202282066U (zh) 用于家庭多媒体娱乐设备的无线控制装置及家庭娱乐系统
CN201638149U (zh) 可实现人机交互的移动终端
CN108108338A (zh) 一种歌词处理方法、歌词显示方法、服务器及移动终端
CN1205517C (zh) 智能手表的自更新约会显示的方法和系统
CN1968329B (zh) 报警手机、报警系统及手机报警方法
CN106851021A (zh) 用于智能手机操作的无线旋钮
CN101064068A (zh) 基于网络的学习方法与可携式学习系统
CN101885181B (zh) 一种演奏葫芦丝的机器人及控制方法
CN102135811A (zh) 电子装置和按键装置及按键提示方法
CN102033605A (zh) 人机互动信息系统及其方法
CN201111014Y (zh) 一种电子文档智能演示装置
CN203117905U (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
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20100908