经典蓝牙Sniff Mode

Introduction

Sniff mode为两个已连接的经典蓝牙设备提供了有效的降低功耗的方法。我们知道,当没有数据需要传输的时候,两个已连接的蓝牙设备之间也需要每两个slots完成一次POLL packet - NULL packet exchange,以维持ACL连接。Sniff mode通过增加POLL packet - NULL packet exchange的间隔时间(即Sniff Interval)来减少两个设备之间的通信次数,让两个设备可以在间隔时间内进入低功耗状态。
在这里插入图片描述

Sniff mode的具体实现方法是:
两个设备利用LMP Sniff Request PDU协商一个T-sniff参数作为POLL packet - NULL packet exchange的间隔时间,然后进入Sniff mode。

  • 间隔时间到了,Master发出POLL packet。这个时刻称为Anchor Point。
  • Slave在Anchor Point之前从低功耗状态唤醒,准备接收POLL packet。
  • Slave收到POLL packet后,在紧接着的slave-to-master slot发送NULL packet。
  • 如果没有数据需要传输,Slave可以再次进入低功耗状态。
  • 等T-sniff之后,两个设备再次重复上述过程。
    在这里插入图片描述

在实际应用场景种以上方法不能满足可靠性和及时性的需求。为此LMP Sniff Request PDU还会协商以下两个参数:

  • N-sniff attempt —— 由于无线干扰,Master在Anchor Point发出的这一个POLL packet可能不会被Slave收到。为了提高可靠性,Slave可以从Anchor Point开始,监听连续的N-sniff attempt个master-to-slave slots;Master从Anchor Point开始、在每个master-to-slave slot内发送POLL packet,直到Slave回复了NULL packet或者发送POLL packet的次数等于N-sniff attempt才停止发送POLL packet。由于N-sniff attempt包含了在Anchor Point那一次POLL packet发送,所以N-sniff attempt最小值就是1。由于POLL packet只能在master-to-slave slot发送,所以N-sniff attempt最大值为(T-sniff / 2)。
    在这里插入图片描述
  • N-sniff timeout —— 如果Slave在一次POLL packet - NULL packet exchange之后立刻就进入低功耗状态,那么Slave就会错过Master紧接着发送的ACL data,Slave将只能在下一个Anchor Point的时刻才有机会接收Master发送的ACL data了。这就导致了Slave不能及时响应。Slave可以在收到Master发送的ACL packet之后,再持续监听N-sniff timeout个master-to-slave slots,以保证两个设备在进入低功耗状态之前完成任何需要的数据传输。
    在这里插入图片描述
    LMP Sniff Request PDU还有一个参数D-sniff,该参数作为Anchor Point offset,用于Master与多个处于Sniff Mode的Slaves连接的场景。在一个master-to-slave slot内,Master只能向一个特定Slave发送POLL packet。如果还有第二个Slave,Master就必须在另外一个master-to-slave slot内向第二个Slave发送POLL packet。D-sniff就定义了第二个master-to-slave slot的offset。
    在这里插入图片描述

Application

不同的应用对于低功耗和响应时间的要求是不同的。应用可以用HCI_Sniff_Mode command来修改Sniff mode的参数。
在这里插入图片描述
该HCI command并没有直接指定Sniff Interval,即T-sniff,而是设定了Sniff Interval的范围Sniff_Min_Interval ~ Sniff_Max_Interval。Link Manager与对端的Link Manager负责协商出来一个位于该范围内的T-sniff。需要注意Sniff_Max_Interval必须小于Link Supervision Timeout参数。

随着Sniff Interval的增大,功耗并非线性降低。Sniff Interval越大,Slave与Master之间的Clock Drift就越大。Slave在Anchor Point前后需要保持的Rx接收窗口就越大,这就减少了Slave的休眠时间。因此Sniff Interval增大到一定程度之后,再继续增大,功耗降低就很不明显了。一些Bluetooth Profile对Sniff Mode的参数做出了规定并给出了在Latency与Power consumption之间折中的示例,比如HID Profile中的规定:
在这里插入图片描述

Sniff Sub-rating

Sniff Sub-rating (SSR)提供了一种进一步降低功耗的方法。当Link Manager使能了Sniff Sub-rating功能后,蓝牙设备可以在Sniff Mode和Sniff Sub-rating Mode之间转换。SSR允许蓝牙设备使用减少的Sniff Anchor point的数量,进一步降低两个蓝牙设备之间的通信频次。更多详情可以参见Bluetooth SIG官方文档。
在这里插入图片描述

Reference

  1. 4.2.1.5 Sniff Mode, Part A Architecure, Vol 1 Architecture, Mixing and Conventions, Core Spec V5.3
  2. 8.7 SNIFF MODE, Part B Baseband Spec, Vol 2 BR/EDR Controller, Core Spec V5.3
  3. 4.5.3 Sniff mode, Part C Link Manager Protocol Spec, Vol 2 BR/EDR Controller, Core Spec V5.3
  4. 6.1 SNIFF MODE, Part F Message Sequence Charts, Vol 2 BR/EDR Controller, Core Spec V5.3
  5. 7.2.2 Sniff Mode command, Part E Host Controller Interface Functional Spec, Vol 4 Host Controller Interface, Core Spec V5.3
  6. 7.2.14 Sniff Subrating command, Part E Host Controller Interface Functional Spec, Vol 4 Host Controller Interface, Core Spec V5.3
  7. 7.7.37 Sniff Subrating event, Part E Host Controller Interface Functional Spec, Vol 4 Host Controller Interface, Core Spec V5.3
  8. 4.2 Quality of Service, Human Interface Devce(HID) Profile
  9. 4.3 Power Management, Human Interface Devce(HID) Profile
  10. 5.1.8 Support of Low Power Link Modes, Human Interface Devce(HID) Profile
  11. Appendix G Bluetooth HID Power Management Examples, Human Interface Devce(HID) Profile
  12. Appendix J Sniff Subrating Example,Human Interface Device(HID) Profile
  13. White Paper: Bluetooth Master/Slave Communications and Sniff/Sniff Sub-rating Modes
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值