蓝牙的三种节能状态 sniff/hold/park Mode

1:Sniff Mode( 呼吸模式)

呼吸模式通过减少主设备 发送数据 的时隙数并相应减少从设备监听的时隙数,从而达到节省电源的目的。进入呼吸模式后,当主设备开始传送数据时,主从设备会对时隙之间的时间间隔Tsniff进行协商。从设备侦听信道时,经过Nsniff attempt个时隙后,就可以断电直到当前呼吸时间间隔结束。接收发往从设备 的最后一个数据包的时间是非常重要的,因为从设备必须在接收最后一个数据包后,再侦听至少Nsniff timeout个时隙。 
例A:从设备只侦听Nsniff attempt个时隙。当呼吸尝试剩余的时隙多于Nsniff timeout时,如果收到了最后一个数据包,那么从设备只侦听呼吸尝试时间间隔的其余时间,然后断电。 
例B:从设备侦听Nsniff attempt个时隙后,接收数据包,然后再侦听Nsniff timeout个时隙。当呼吸 尝试时间中剩余的时隙小于Ntimeout时,如果收到最后一个数据包,从设备 就必须再侦听Nsniff timeout个时隙。 
从设备 可以在Nsniff attempt时隙和(Nsniff attempt + Nsniff timeout)时隙之间改变自已的活动,甚至 一直保持活动状态,而不需要再对任何参数进行协商。因此,用户会发现,通过选择合适的呼吸时间间隔和合适的从设备侦听时隙数,就可以在不影响应用程序性能的前提下达到节能的目的。 

  在这个模式下,该从设备仍然保持AM_ADDR和主从网络相同的调频序列。
_____________|___________|______________|_________
   可交换数据       休息时间      可交换数据       休息时间

2:Hold Mode(保持模式)

保持模式是蓝牙节能模式中最简单的一种。主从设备将对从设备处于保持模式的时间进行协商 ,一旦连接处于保持模式,此连接就不再支持数据包,从而可以节省电源或参与到其它微微网(piconet)中。有一点非常重要,即当每次进入保持模式时都需要对保持周期进行协商。关于保持模式还有一个更加重要的方面,即一旦设备 进入保持模式 就不能取消,并且保持周期必须在通信恢复前结束。 

  在此模式下,该设备仍然保持AM_ADDR和主从网络相同的调频序列。它将暂时停止对ACL链路的支持,但仍然支持SCO. 当超过hold持续时间后,设备将恢复到原来的模式。
----------------|___________________________________|---------------
  可交换数据            hold 时间

3:Park Mode(停等模式)

暂停模式可以最大限度的节省电源。但是,当设备处于暂停模式时,就不再发送和接收用户数据,也不能维护已经建立的SCO链路。在这种模式下,从设备 不参与微微网通信,但是仍然与信道保持同步。暂停模式还有另一个优点,即通过暂停一些从设备而激活其它的设备,这样可以使用主设备支持的从设备数多于7个。处于暂停状态的从设备周期地被唤醒,以重新与信道同步并侦听广播信息。为了实现这个目标,主设备支持一种复杂的信标结构,该结构能够实现在从设备 处于暂停状态时与从设备进行通信。但是,信标结构可能会发生变化,如果变化,主设备会使用广播信息把变化 通知给暂停的从设备。

  从设备进入park mode后,将会丢失掉AM_ADDR,但会从主设备那里得到一个PM_ADDR, AR_ADDR. Park中的设备仍然与主从网络有相同的调频序列。主设备为了能同park mode的从设备联系,会在一个Beacon Channel上周期性的发送一些广播信号,从设备会隔一段时间,去接收Beacon Channel上的信号。当主机需要唤醒某个处于park mode下的从设备的时候,就在Beacon Channel上发送PM_ADDR,同时指定该从设备成为active 时的AM_ADDR。从设备在Beacon Channel上读到自己的PM_ADDR的时候,发送AR_ADDR请求给主设备,主设备收到后,发送信号,以唤醒从设备的park mode.
Master Device:  ____||__________||________||_______
                             BC                BC             BC   
Slave Device:    ____||__________||________||_______
                           侦听              侦听           侦听

你可能感兴趣的:(Android,蓝牙)