详细描述
由于无限制的移动性的好处对移动计算设备是非常有用的,因此无线通信经常由移动计算设备使用。遗憾的是,移动计算设备常常最不能提供由无线通信硬件使用的必要功率。此外,由于经常使用的移动计算设备的性质,减少的无线通信硬件功耗使得移动计算设备能够即使在联网模式下也能工作较长的一段时间,使得这样的设备对用户更加有用。
虽然以前作出过降低无线通信硬件功耗的尝试,这样的尝试通常仅仅集中无线通信的一方面,例如硬件、或在个体基础上的设备驱动程序。然而,本发明的实施例寻求通过集中在整个通信系统来降低无线通信硬件的功耗。因此,由较高级的特有协议软件确定的往返时间和相似值可以传递到较低级设备驱动程序,以调度无线通信硬件可以被唤醒并以全功率状态工作的时间。除了这样的信息之外,规则地调度收听间隔和递送话务指示消息(DTIM)间隔也可以用于调度无线通信硬件可以被唤醒并以全功率状态工作的时间。当无线通信硬件不处于全功率状态时,其可以被置于瞌睡模式,或相似的低功率状态,在该模式或状态期间,仅仅消耗最小的功率,因为硬件通常不能发送或接收信息。这样,在保持响应连接的同时能够降低无线通信硬件总的功率消耗,这允许移动设备用户更长时间的使用该设备,而不牺牲通信速度。
虽然不需要,将在由计算设备正在执行的计算机可执行指令,例如程序模块,的普通环境下描述本发明。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例行程序、程序、目标、元件、数据结构等等。在分布式计算环境下,任务可以由通过通信网络连接的远端处理设备来执行。在分布式计算环境下,程序模块可以位于本地的和远端的计算机存储设备和/或介质上。本领域技术人员将会理解可以用许多不同的单独的或者作为分布式计算环境一部分的计算设备来实施本发明,其中,这样的设备可以包括手持设备、多处理器系统、基于微处理器或可编程的用户电子设备、网络PC、小型计算机、主计算机等等。
转到图1,图1示出了可以在其上实施本发明的典型计算设备100。该计算设备100仅仅是合适的计算设备的一个例子,并不旨在建议对本发明用途或功能范围的任何限定。此外,计算设备100不应解释为具有对图1中图示的外围设备的任何一个或组合的任何依赖或需要。
计算设备100的部件可以包括,但不局限于,处理单元120、系统存储器130、把包括系统存储器的各种系统部件连接到处理单元120的系统总线121。系统总线121可以是若干总线结构类型之一,包括使用多种总线体系结构的存储器总线或存储器控制器、外围总线、和本地总线。为了举例,而不是限定,这种体系结构包括工业标准体系结构(ISA)总线、微信道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线、和还被称为中层总线的外围部件互联(PCI)总线。此外,处理单元120可以包含一个或多个物理处理器。
计算设备100典型地包括多种计算机可读介质。计算机可读介质可以是可由计算设备100访问的任何可用的介质,并包括易失性和非易失性、可以动和不可移动的介质。为了举例,而不是限定,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何一种用于存储例如计算机可读指令、数据指令、程序模块或其它数据一样的信息的方法或技术实现的易失性和非易失性、可移动和不可移动的介质。计算机存储介质包括,但不局限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字通用光盘(DVD)或其它光盘存储器、盒式磁带、磁带、磁盘存储器或其它磁存储设备、或任何其它可用于存储期望信息并能由计算设备100访问的介质。通信介质典型地包括诸如载波、或其他传输机制的调制的数据信号内的计算机可读指令、数据指令、程序模块,并包括任何信息递送介质。术语“调制的数据信号”指的是具有一个或多个自己的特征集或以将信息编码到信号内的方式改变的信号。为了举例,而不是限定,通信介质包括例如有线网络或直线连接一样的有线介质、和例如声学、RF、红外线和其它无线介质一样的无线介质。上述的任意组合也应包含在计算机可读介质的范围内。
系统存储器130包括例如只读存储器(ROM)131和随机存取存储器(RAM)132一样的易失性和/或非易失性存储器形式的计算机存储介质。包括例如在启动过程中帮助在计算机110内部的元件之间传送信息的基本例行程序的基本输入/输出系统133(BIOS)通常存储于ROM131中。RAM132典型地包含可立即存取的和/或目前由处理单元120操作的数据和/或程序模块。为了举例,而不是限定,图1图示了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算设备100还可以包括其它的可移动/不可移动、易失性/非易失性的计算机存储介质。仅仅是为了举例,而不是限定,图1图示了一种从不可移动的非易失性磁介质读取数据或把数据写到该磁介质的硬盘驱动器141、从可移动的非易失性磁盘152读取数据或把数据写到该磁盘152的磁盘驱动器151、和从例如CD-ROM或其它光学介质一样的可移动的非易失性光盘156读取数据或把数据写到该光盘156的光盘驱动器155。可用于该典型操作环境中的其它可移动/不可移动、易失性/非易失性的计算机存储介质包括,但不局限于,盒式磁带、闪存卡、数字通用盘、数字视频带、固态RAM、固态ROM等等。硬盘驱动器141典型地通过例如接口140一样的不可移动存储器接口连接到系统总线121,磁盘驱动器151和光盘驱动器155典型地通过例如接口150一样的可移动存储器接口连接到系统总线121。
上述讨论的及图1中图示的驱动器与它们相关联的计算机存储介质为计算设备100提供计算机可读指令、数据指令、程序模块和其它数据的存储。在图1中,例如,硬盘驱动器141被图示为存储操作系统144、应用程序145、其它程序模块146、和程序数据147。要指出的是这些部件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同或不同。在这里,给出不同的标号来图示操作系统144、应用程序145、其它程序模块146、和程序数据147,这样,它们至少是不同的样本。
用户可以通过例如键盘162和通常称为鼠标、跟踪球或触垫的定点设备161一样的输入设备把命令或信息输入进计算设备100。其它的输入设备(未示出)可以包括麦克风、游戏杆、游戏板、卫星反射器、扫描仪或类似输入设备。这些及其它的输入设备可以通过耦合到系统总线的用户输入接口160连接到处理单元120,或者可以通过例如并行端口、游戏端口或通用串行总线(USB)一样的其它接口和总线结构连接。监视器191或其它类型的显示设备经由例如视频接口190一样的接口也连接到系统总线121。除了该监视器之外,计算机还可以包括其它外围输出设备,例如,可以通过输出外围接口195连接的扬声器197和打印机196。
计算设备100可以使用到一个或多个远端计算机的逻辑连接在联网环境下运行。图1图示了到远端计算设备180的无线网络连接175。无线网络连接175可以是各种不同类型的无线网络和无线网络连接中的任意一种,各种不同类型的无线网络和无线网络连接包括无线局域网(WLAN)、广域网(WAN)、符合以太网协议的网络、或包括互联网或万维网的单元的其它逻辑的或物理的无线网络。相似地,远端计算设备180可以是与计算设备100相似的另一计算设备,或者它可以是无线基站或其它无线接入点,其可以包括上面描述的计算设备100的部分或所有单元。
当在联网环境下使用时。计算设备100通过例如无线网络接口170和无线硬件171一样的网络接口或适配器连接到无线连接175。无线网络接口170可以是包括设备驱动程序、协议堆栈等等的软件部分与应用程序的任何集合。无线网络接口还可以实现分层的软件体系结构,例如下面详细描述的一个。无线硬件171可以是孤立的单元或者可以集成进计算设备100,例如符合许多协议中任意一个的扩充插件卡。在联网环境下,描述的关于计算设备100的程序模块、或它的一部分可以存储在远端的存储器存储设备中。将会理解示出的网络连接是典型的,可以使用其它在计算机之间建立通信链路的其它方式。
在随后的描述中,除非另外指出,将参考由一个或多个计算设备执行的动作和操作的符号表示来描述本发明。这样,应当理解的是,有时被称为正在由计算机执行的这样的动作与操作包括由计算设备的处理单元对以结构形式表示数据的电子信号的处理。这个处理转换该数据或者在计算设备的存储器系统中的位置上保存该数据,其重配置或者另外以本领域普通技术人员容易理解的方式改变计算设备操作。数据保存在哪里的数据结构是具有由数据格式定义的特性的存储器的物理位置。然而,虽然在上面的环境下描述本发明,但这不意味着限制如本领域普通技术人员将会理解的下文中描述的各种动作与操作也可以以硬件实施。
转到图2,图2中示出了图示本发明实施例考虑的一个通信结构的分层示意图。在通信结构200的顶层是通信应用程序205,其可以是正在无线网络175上传送的数据的最终用户和产生者。这样,大多数的数据发送将由通信应用程序205发起,且大多数的数据接收将在通信应用程序205终止。因此,在通信体系结构200的顶部图示。通信应用程序205可以包括web浏览器、电子邮件客户程序、网络公用程序、或类似的依靠或可以利用网络通信的应用程序。
在通信结构200中,在通信应用程序205下面的层可以是传送驱动程序210。在一些通信结构中,传送驱动程序在与协议驱动程序一样的层中被概念化,而在其它的结构中可能分离为这两个。通常,传送和/或协议驱动程序210可以实现协议堆栈,例如,举例来说,无所不在的传输控制协议/网际协议(TCP/IP)堆栈、或网间分组交换/序列分组交换(IPX/SPX)堆栈。传送驱动程序和协议驱动程序能够分配分组、使用合适的分组报头信息、把数据从发送应用拷贝到分组、并把数据发送到较低层。传送驱动程序和协议驱动程序还可以提供接口,以从下一次较低层的驱动程序接收输入分组,并把接收的数据传送到合适的客户应用程序。
在通信结构200中,在传送驱动程序和协议驱动程序210下面可以是中间驱动程序215。中间驱动程序可以提供高层设备驱动程序功能,其可以包括在不同网络媒介之间的转换、过滤分组、并平衡跨越不止一个网络接口的分组发送。例如,中间驱动程序可以允许通信应用程序205在层210中使用兼容的协议,然后能够把由层210产生的分组转换为适于在计算设备100实际连接到的特定网络上发送的分组,即使那个网络使用不同的协议。同样,中间驱动程序例如通过执行分组调度功能可以过滤分组。分组调度程序可以读取分组中的优先权信息,然后能够基于分组的优先权调度用于发送或接收的每个分组。
如图2所示,中间驱动程序215可以与迷你端口驱动程序220交换数据。迷你端口驱动程序220可以,或者通过他们自身或与微端口驱动程序221相结合,担当通信结构200的最低软件层。在一些结构中,迷你端口驱动程序实现例如无线通信硬件171一样的物理联网硬件所需要的所有特定的硬件功能。在一些结构中,迷你端口驱动程序可以提取一些设备特有的功能,而不是集中在例如所有无线通信设备一样的特定类型的通信设备所共有的功能。在这种情况下,微端口221可以提供设备特有的功能,以控制特定设备。为了简单的目的,图2的通信结构200把迷你端口驱动程序220和微端口驱动程序221图示为能提供特有的设备控制的单一层。由迷你端口220或者由迷你端口220与微端口221结合所提供的功能可以包括把分组转递到无线通信硬件171以用于发送、恢复从无线通信硬件接收的分组、处理中断、和相似的硬件控制操作。
与上面的通信结构200相似的一个标准化通信结构被称为网络驱动程序接口规范(NDIS)。本领域普通技术人员将会知道,NDIS定义了在图2中图示的各个层之间的路径。这样,例如,NDIS定义中间驱动程序可以提供支持以标准化呼叫以致使用那些呼叫的传送驱动驱动程序将能够利用中间驱动程序的功能性的功能。
本发明实施例考虑的一个迷你端口驱动程序220为无线通信硬件171提供功率节省调度。这样的调度可以使得无线通信硬件能够仅仅在预定的间隔期间保持唤醒模式,并另外允许无线通信硬件以瞌睡模式操作以节省功率。虽然单独的无线硬件设备可以实现不同的功率模式,如本发明实施例所考虑的唤醒模式可以指的是在其中无线硬件设备可以发送和/或接收信息的该设备的任何功率模式。这样,例如,一些无线硬件设备只可以实现几个功率模式,且唤醒模式可以仅仅是全功率模式。然而,其它无线硬件设备可以实现不同功率模式的连续区,且唤醒模式可以不必处于全功率模式,而也可以是任何低功率模式-如果这样的低功率模式对可靠地发送和接收信息是足够的。同样,如本发明实施例所考虑的瞌睡模式可以指的是在其中无线硬件设备通过关闭或者另外中止它发送和/或接收信息的能力但仍保留以有效方式恢复发送或接收的能力来节省功率的该设备的任何功率模式。这样,例如,一些无线硬件设备仅仅可以实现几个功率模式,且瞌睡模式可以仅仅是无功率模式。然而,其它无线硬件设备可以实现不同功率模式的连续区,且瞌睡模式可以不必处于无功率模式,而可以是设计的通过中止该设备发送与接收信息的能力来节省功率的任何功率模式。对于实现不同功率模式的连续区的设备来说,在各种低功率模式之间的一个区别可能是设备能够恢复到全功率模式的速率。在这种情况下,本发明实施例打算使用允许设备尽可能快地恢复到全功率模式的功率节省模式。然而,如上面所指出的,如这里使用的瞌睡模式可以指的是任何在其中无线硬件设备通过中止它发送和/或接收信息的能力来节省功率的该设备的模式。
为了给迷你端口驱动程序220提供能够用于为无线通信硬件171实现有效调度的信息,本发明的一个实施例打算例如往返时间一样的信息可以由协议和/或传送驱动程序210或相似的较高级的通信软件来确定,并可以传递到迷你端口驱动程序220。如果往返时间和相似的信息是不可用的,则可以使用默认值。默认值可以进一步被配置,使由迷你端口驱动程序220实现的调度能够适合该调度对通信性能的观测影响。
信息可以借助于任何已知的消息传递算法从协议和/或传送驱动程序210传递到迷你端口驱动程序220。例如,标准化NDIS结构可以扩充到提供用于把例如往返时间一样的调度信息从协议和/或传动驱动程序210传递到迷你端口驱动程序220的特有接口。在无线通信硬件171和迷你端口驱动程序220在其中使用已知的IEEE802.11无线通信标准工作的系统中,调度信息可以作为带有每个发送的MAC业务数据单元(MSDU)的带外数据(OOB)被传递到迷你端口驱动程序。
如上述所指出的,调度信息可以由迷你端口驱动程序220使用来实现用于无线通信硬件171的功率节省调度。本发明实施例考虑的一个功率节省调度要求在预定间隔唤醒无线通信硬件以接收DTIM消息。如本领域普通技术人员将会知道的,DTIM消息能够为无线通信硬件171提供广播或组播消息正在例如无线基站一样的接入点等待它的指示。DTIM消息之间的间隔例如可以通过在无线通信硬件171与和该硬件171通信的无线接入点之间的接续过程来确定。作为选择,DTIM间隔可以由用户手工来确定,或者可以是预定的默认值。DTIM间隔也可以改变以适应无线网络中的变化。为了准备功率节省调度,迷你端口驱动程序220可以使用例如下面详细描述的一样的功能,以指定唤醒无线通信硬件171的未来时间并提供唤醒硬件171的原因是接收DTIM消息的指示。
以与上面描述的相似方式,本发明实施例考虑的另外的功率节省调度要求在预定间隔唤醒无线通信硬件以使用无线通信硬件171来接收可能是特别呈送到计算设备100的消息。本领域普通技术人员将会知道,这样的预定间隔可以称为“收听间隔”。与DTIM间隔一样,收听间隔例如可以通过在无线通信硬件171与和该硬件171通信的无线接入点之间的接续过程来确定。同样,收听间隔可以由用户手工确定,或者它可以是预定的默认值,或者它可以改变以适应无线网络中的变化。为了准备功率节省调度,迷你端口驱动程序220可以使用例如下面详细描述的一样的功能,以指定唤醒无线通信硬件171的未来时间并提供唤醒硬件171的原因是由于收听间隔的指示。
虽然在例如上面描述的DTIM和收听间隔一样的重新出现的间隔唤醒无线通信硬件能够提供功率节省的措施,本发明实施例考虑的另外的功率节省调度要求及时唤醒无线通信硬件以接收对以前发送数据的期望响应。如上面所指出的,例如往返时间一样的信息可以由协议和/或传送驱动程序210或相似的较高级的通信软件来确定,并能够传递到迷你端口驱动程序220。然后例如,举例来说,通过在往返时间的部分持续时间内把无线通信硬件置于瞌睡模式,这样的信息可以用于设置功率节省调度。
转到图3,图3示出通常图示本发明实施例考虑的用于设定功率节省调度的算法300。虽然随后的描述将参考迷你端口驱动程序220对算法300的实施,但其它软件驱动程序,包括不符合通信结构200的驱动程序,同样可以实施算法300。
如所指出的,当具有将由无线通信硬件171发送的接收数据的迷你端口驱动程序220能够调度MSDU的发送时,算法300可以在步骤305开始。本领域普通技术人员将会知道,MSDU可以是一系列的一个或多个MAC协议数据单元(MPDU)。然后,无线通信硬件171能够在该调度时间尝试发送该MSDU。如在步骤310中所示的,迷你端口驱动程序220可以等待来自无线通信硬件171的能够指示MSDU发送状态的响应。如果在步骤315无线通信硬件171指示发送没有成功,则执行可以跳到步骤325,其能够指示至少一个MSDU保持将要被发送,且执行可以返回到步骤305,以尝试再次发送MSDU。然而,如果在步骤315,无线通信硬件171指示发送成功,则迷你端口驱动程序220可以例如基于与MSDU相关联的往返时间来为硬件171调度下一次唤醒时间。
如上述所解释的,例如往返时间一样的信息可以作为连同MSDU的OOB从传送/协议驱动程序210传递到迷你端口驱动程序220。这样的信息可以由迷你端口驱动程序220使用来调度下一次唤醒时间。例如,如果指示往返时间是100毫秒,则迷你端口驱动程序220可以在100毫秒内调度下一次唤醒时间,以便当对当前发送的MSDU的响应到达时可以唤醒无线通信硬件171。作为选择,除了简单的往返信息以外的信息可以传递到迷你端口驱动程序220,以在建立功率节省调度中使用。例如,网络阻塞、硬件状态及类似信息的指示也能够用于设置下一次唤醒时间或用于基于往返时间调整下一次唤醒时间。
迷你端口驱动程序220可以通过例如下面描述的把调度信息输入进定时器阵列或相似的结构的功能来调度下一次唤醒时间。一旦迷你端口驱动程序220完成了下一次唤醒时间的调度,如在步骤320所指出的,迷你端口驱动程序能够在步骤325检查是否存在任何需要发送的另外的MSDU。如果存在另外的要发送的MSDU,执行可以返回到步骤305,并且迷你端口驱动程序220可以尝试以描述的方式发送随后的MSDU。然而,如果不存在另外的用于发送的MSDU,如在步骤330所指出的,迷你端口驱动程序220可以把无线通信硬件171设置为瞌睡模式。
转到图4,图4示出本发明实施例考虑的用于调度下一次唤醒时间的算法400。算法400可以运行以确定在定时器阵列中的合适输入,并把信息存储进那个输入,例如通过使用下面进一步详述的机制,该输入可用于唤醒无线通信硬件171。本领域普通技术人员将会知道,定时器阵列可以是阵列数据结构,在那里,以预定的时间间隔从该阵列读取每一条随后的输入。因此,打算在定义的时间间隔之后被访问的信息可以存储在该阵列内离当前输入足够远的特定阵列输入中。本领域普通技术人员还将知道,定时器阵列不是无限的。一旦达到阵列的末端,读取的下一条输入通常是第一条输入,这能够允许在延长的一段时间周期使用该阵列。然而,由于访问输入的顺序最终返回到它自身,因此定时器阵列只能调度在某个时间帧内的事件,且直到较迟的时间才能调度更远的事件。
算法400提供迷你端口驱动程序220或其它软件能够把功率节省调度信息输入进定时器阵列的机制。初始步骤405能够确定“定时器值”,其可以是考虑到安全界限通过上面描述的方法之一确定的下一次唤醒时间。因为在无线通信硬件已经接收了信息之后唤醒该硬件通常是没有用的,可以在预期的事件之前功率节省调度信息尝试唤醒硬件。此外,由于确定在执行调度过程中过去的精确时间量是不实际的,安全界限可用于解决任何此种的时间差异。例如,如果指示往返时间是100毫秒,则使用上面描述的方法可确定下一次唤醒时间离无线通信硬件发送分组时的时间是100毫秒。然而,用于设置下一次唤醒时间的算法,例如,算法400,可能需要10到15毫秒来执行。因此,如果在完成调度算法之后100毫秒唤醒无线通信硬件,则唤醒很可能会延迟10-15毫秒,且很可能会错过期望的响应。
为了避免监控在执行调度过程中过去的精确时间量,在步骤405确定的定时器值可以包括合适的安全界限。例如,同上,如果指示下一次唤醒时间是100毫秒,且调度算法可能需要10-15毫秒来执行,则可以使用20毫秒的安全界限。因此,假定下一次唤醒时间是100毫秒,则定时器值可以确定为离当前80毫秒。包括用于执行各种算法的时间,无线通信硬件很可能会在发送分组之后90到95毫秒被唤醒,允许它接收将预期在最初发送之后100毫秒到达的响应。
一旦在步骤405例如通过使用上面描述的方法确定了定时器值,则可以证实确定的定时器值在定时器阵列的范围之内。这样,在步骤410,定时器值可以在时间上与定时器阵列的长度相比较。如果定时器值在时间上超过定时器阵列的长度,则该定时器阵列不能在该定时器值调度事件,且该算法在步骤450结束。然而,如果定时器值在时间上小于定时器阵列的长度,则在步骤415可以量化该定时器值,以适于定时器阵列。
本领域技术人员将会理解,由于定时器阵列不是无限的,因此它只能提供离散-与连续相反-的时间测量。因此,使用定时器轮的间隔来量化将要调度的任何事件可能是必要的。因为如上所指出的,在无线通信硬件已经接收信息之后唤醒该硬件通常是没有用的,在步骤415,定时器索引的量化可以确保在调度时间随后的时间期间不被调度。例如,如果用25毫秒的间隔来实施定时器阵列,且同上,定时器值是80毫秒,则量化的定时器值可以是75毫秒,因为那将是在定时器值80毫秒之前由最后一个阵列输入所表示的时间。
一旦在步骤415获得量化的定时器值,则可以在步骤420确定定时器索引。如上所指出的,定时器值表示从当前时间起事件被调度的持续时间。这样,在上述的例子中,80毫秒的定时器值表示从当前时间起的80毫秒中将调度事件。因此,为了确定定时器索引,量化的定时器值可以转换为适当的索引值,并能增加到当前时间索引。例如,如果用25毫秒的间隔实施定时器阵列,且同上,量化的定时器值是75毫秒,则量化的定时器值可以表示为从当前时间起的3条输入(或75毫秒)。如果当前时间索引,或正在处理的当前阵列输入是阵列输入64,那么如在步骤420所计算的,该定时器索引可以是64+3或67。
本领域技术人员将会理解,可以通过使用DIV函数以有效方式一起执行步骤415和420。特别地是,定时器值可以使用DIV函数由定时器阵列的间隔来划分,并且然后能增加到当前时间索引,以计算时间索引。使用上述的例子,使用DIV函数由25毫秒把80毫秒的定时器值划分,得到值3,然后,值3可以增加到当前时间索引64,来计算定时器索引67。
一旦在步骤420确定了定时器索引,步骤425可以保证确定的定时器值不大于定时器阵列的上界。如果定时器索引小于定时器阵列的上界,则在步骤435可以在那个定时器索引存储合适的信息,这将在下面详细描述。然而,如果定时器索引大于定时器阵列的上界,则步骤430能够适当地调整该定时器索引。特别地是,如上面描述的,以循环方式处理定时器阵列,这样在处理了定时器阵列的最后一条输入之后,返回处理第一条输入。因此,定时器阵列代表一个连续移动的时间窗口,与静态的延迟时间相反。为了解决这样的循环处理,可以调整具有比定时器阵列中最大索引值更大的绝对值的定时器索引,以便在正确的时间处理该定时器索引。例如,如果定时器阵列包含100个元素,由索引编号为0到99,且索引99当前正在被处理,则下一个要处理的索引是0。
可以在步骤430用于调整定时器索引的一个简单机制是熟知的MOD函数,其可以返回除法运算的余数。特别地是,可以使用MOD函数由定时器阵列的长度来除在步骤420确定的定时器索引结果可以是调整的定时器索引。例如,同上,如果定时器阵列具有100个元素,且定时器索引是102,那么使用MOD函数执行除法,得到的结果是2,其可以作为调整的定时器索引。如果索引输入99当前正在被处理,调整的定时器索引2表示调度的事件将在3个定时器阵列输入内被处理,即,在完成索引输入99的处理之后,将在处理调整的索引输入3之前处理索引输入0和1。这样,在当前时间索引99和定时器索引102之间的距离与在当前时间索引99与调整的定时器索引2之间的距离相等。
一旦在步骤430调整了定时器索引,如果有必要,在步骤435调度信息可以输入进合适的定时器索引。如上所述,可以存在许多类型的调度的唤醒事件。例如,DTIM唤醒事件、收听间隔唤醒事件、和期望响应唤醒时间都可以使用上面描述的算法来调度。除了事件类型的指示之外,适当的定时器索引也可以指示在由该索引代表的时间期间将唤醒无线通信硬件。这样的指示仅仅需要单一的比特,其中0可以指示无线通信硬件可以保持瞌睡模式,且1可以指示该硬件可以处于唤醒状态。
本领域普通技术人员将会认识到,定时器阵列可以由迷你端口驱动程序220或其它较低级的通信软件来维持,并可以以该阵列的长度在时间上大于例如DTIM间隔或收听间隔一样的再发生间隔的方式来实现。到了这种间隔可能改变的程度,能够同样动态地修改定时器阵列以适应该改变的间隔。
转到图5,图5示出图示本发明实施例所考虑的在定时器阵列中每一个输入的处理的算法500。最初,在步骤505,当前阵列输入值可以加1,以移动到下一个阵列输入处理。因为如上所解释的,当达到阵列的末端时,定时器阵列可以返回,步骤510可以检查以确定是否增加的阵列输入值超出了阵列长度并应该被复位到该阵列的开头。如果确实是这样,则步骤510可以以上面描述的方式使用MOD函数执行除法,以把增加的阵列输入复位到该定时器阵列的开头。
在确定了合适的阵列输入之后,算法500在步骤515能够例如通过检查唤醒比特或标记来确定是否认为要唤醒无线通信硬件。如果不需要唤醒无线通信硬件,则执行可以跳到步骤550,步骤550将在以下更详细地描述。然而,如果在当前阵列输入的唤醒比特或标记指示不需要唤醒无线通信硬件,那么算法500可以在步骤520检查该硬件是否已经是唤醒的。如果无线通信硬件处于瞌睡模式,并需要被置于唤醒模式,则能够在步骤525唤醒该硬件。否则,执行可以继续到步骤530。
一旦无线通信硬件是唤醒的,算法500能够确定是否需要任何进一步的调度。如上所解释的,无线通信硬件可以被唤醒有至少三个不同的原因。如果由于指示应该接收期望响应的例如往返时间一样的信息而唤醒无线通信硬件,那么可能没有任何进一步的调度,且该硬件可以简单地保持唤醒,直到期望响应被接收,或直到它被置于瞌睡模式。然而,如果由于需要检查DTIM消息或由于收听间隔而唤醒无线通信硬件,由于两者都可以是以预定间隔再发生的事件,那么算法500也可以调度下一个DTIM消息检查或下一个收听间隔。
因此,在步骤530可以执行检查以确定把无线通信硬件置于唤醒模式的指示是否是由于DTIM间隔的终止。可以通过检查唤醒字段或与当前定时器阵列输入结合保存的相似的信息存储来作出这样的检查,该字段或类似信息可以指示唤醒是否是由于DTIM间隔、收听间隔、期望响应、或一些其它原因而被调度。如果确定是由于DTIM间隔的终止而调度唤醒,则步骤535能够使用例如图4中图示的并在上面详细描述的调度算法基于DTIM间隔来调度随后的DTIM唤醒。如果步骤530确定唤醒不是由于DTIM间隔的终止,则执行可以前进到步骤540,其可以检查是否唤醒是由于收听间隔的终止。如果确定唤醒被调度是由于收听间隔的终止,则步骤545可以使用例如图4中图示的并在上面详细描述的调度算法基于收听间隔来调度随后的收听间隔唤醒。
如果在步骤540确定唤醒不是由于收听间隔的终止,则执行可以前进到步骤550,其可以检查可能需要发送的任何剩余的MSDU,包括由图3中图示的算法描述的并在上面详细描述的发送。如果任何剩余的MSDU确实需要被发送,则算法500可以在步骤555等待它们的发送。然而,如果没有要发送的剩余MSDU,则在步骤560无线通信硬件可以被置于瞌睡模式,并且执行可以返回到步骤505,以处理随后的定时器阵列输入。
转到图6a,参照时间线610图示了上面描述算法的典型操作。像上面详细描述的那样的定时器阵列可以指示从当前时间起的75毫秒期间设置唤醒标记。因此,无线通信硬件在周期611期间可以处于瞌睡模式。如所图示的,在离当前时间的75毫秒,无线通信硬件可以进入唤醒状态,并能在周期612期间维持唤醒状态。可以包括DTIM消息、与收听间隔有关的消息、或期望响应消息的数据发送可以在时间613接收。在这种情况下,无线通信硬件可以简单地保持唤醒状态,直到在例如离目前100毫秒的下一个定时器阵列输入。然而,为了更有效地节省功率,无线通信硬件立即处理在时间613发生的数据发送的接收,可以在周期614期间返回瞌睡模式。从图6a中示出的时间线图解可以看到,无线通信硬件可以通过维持在瞌睡模式并仅仅在需要接收数据发送的短的时间段内处于唤醒模式来节省功率。
然而在一些情况下,像数据发送613一样的数据发送可能在未预料到的时间发生,且无线通信硬件可能不处于唤醒状态以接收该数据发送。在这种情况下,数据发送可以暂时地存储在基站或相似的发送源,且可以把该发送通知给无线通信硬件,并且该硬件能够接收该发送作为例行程序检查的一部分,这种检查发生在每一个收听间隔。转到图6b,在时间线620上图示这样的情况。如图6b所示,无线通信硬件可以在周期621期间处于瞌睡模式,并可以在周期622期间由于像期望响应一样的预期事件被唤醒。然而,还没有接收到任何信息,无线通信硬件可以在周期623期间返回到瞌睡模式以节省功率。令人遗憾的是,期望响应可能在时间624到达,而无线通信硬件处于瞌睡状态。在这种情况下,期望响应在时间624不可能被接收,但可以在随后的时间接收,例如当在收听间隔作出检查以检测任何可能等待递送到无线通信硬件的数据时的时间626。如所指出的,无线通信硬件可以在周期625期间处于唤醒模式,例如,因为定时器阵列指示需要唤醒该硬件以执行收听间隔检查。
如果无线通信硬件正处于发送信息的过程中,且发送继续到在其期间应该唤醒该硬件以接收期望发送的周期,则该硬件可以保持唤醒状态。转到图6c,如在时间线630上所示出的,在周期631期间无线通信硬件可以被唤醒并发送信息,周期631可以延长超过一个时间,例如75毫秒标记,在该时间该硬件应该被唤醒以接收期望的发送。因此,即使无线通信硬件已经完成了它的发送,它也能在周期632期间保持唤醒,以接收在时间633的发送。因此,虽然图3的步骤330指示无线通信硬件可以被置于瞌睡模式,但是图3的算法可以与图5的算法互相配合,以便步骤525的唤醒指令使得硬件能够保持在唤醒状态。
考虑到本发明的原理可以应用到的许多可能的实施例,应该意识到这里参考附图描述的实施例旨在仅仅是例证性的,并不应当作对本发明范围的限定。例如,本领域普通技术人员将会意识到以软件示出的一些图示实施例的单元可以实现为硬件,并且反之亦然,或者在不偏离本发明精神的情况下可以修改图示的实施例的配置和细节。同样,由描述的算法得到的许多结果可以由具有一个或多个不同步骤的算法获得。因此,如这里描述的发明打算包含可以落在随后权利要求及其等同物的范围内的所有实施例。