文章目录

  • Introduction
  • Application
  • Sniff Sub-rating
  • Reference

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

经典蓝牙Sniff Mode相关推荐

  1. 经典蓝牙和低功耗蓝牙(BLE)有什么区别?

    蓝牙模块Bluetooth module)是指集成蓝牙功能的芯片基本电路集合,用于短距离2.4G的无线通讯模块.对于最终用户来说,蓝牙模块是半成品,通过在模块的基础上功能再开发.封装外壳等工序,实现能 ...

  2. android ble 经典蓝牙,Android 经典蓝牙(Classic Bluetooth)和低功耗蓝牙(BLE)

    [实例简介] 从蓝牙4.0开始包含两个蓝牙芯片模块:传统/经典蓝牙模块(Classic Bluetooth,简称BT)和低功耗蓝牙(Bluetooth Low Energy,简称BLE) 经典蓝牙是在 ...

  3. Android经典蓝牙开发简介(Google官网译文)

    公司的项目最近需要用到蓝牙开发的相关内容,因此特地查阅了Google官方文档的内容并进行二次整理,希望能对需要学习该部分的朋友有所帮助. 原文地址:http://developer.android.c ...

  4. Android 使用经典蓝牙

    Android 使用经典蓝牙 本文内容基本是按照安卓官方文档来进行经典蓝牙的学习,大体都从官方文档粘贴而来,英文部分做了写粗略的翻译,作为自己学习安卓经典蓝牙的一个记录.官方文档可参考https:// ...

  5. 【Android】蓝牙开发——经典蓝牙:配对与解除配对 实现配对或连接时不弹出配对框

    目录 一.配对方法 二.解除配对方法 三.配对/解除配对结果 四.justwork配对模式下,不弹出配对框 五.pincode配对模式下,不弹出配对框 六.小结 在之前的文章[Android]蓝牙开发 ...

  6. Android蓝牙开发前序知识-经典蓝牙低功耗蓝牙区别

    最近从网上搜了(抄了)一些经典蓝牙和低功耗蓝牙的区别.关于蓝牙的大概了解,前文已经描述过了. Android中的蓝牙 说到Android中的蓝牙,大家听到的可能有蓝牙1.0.蓝牙2.0.蓝牙3.0.蓝 ...

  7. 杰理-BLE连接后打开经典蓝牙

    杰理-BLE连接后打开经典蓝牙 BLE断开

  8. 关于经典蓝牙和低功耗蓝牙的区别

    刚开发蓝牙的小伙伴在开发的时候,或许会看到经典蓝牙和低功耗蓝牙这两种,不知道它们之间的区别与联系,今天给大家介绍一下经典蓝牙和低功耗蓝牙(BLE)的区别. 文章转载自: http://www.love ...

  9. 蓝牙4.0、经典蓝牙、BT、BLE的关系与区别

    蓝牙3.0 比较老的标准了. 蓝牙4.0   蓝牙4.0标准是2012年推出的蓝牙标准,是蓝牙3.0的升级版本,相比3.0版本它更省电.成本更低,3毫秒低延迟.具有超长有效连接距离和AES-128加密 ...

最新文章

  1. 爱奇艺火爆的背后,个性化推荐排序是如何配合的?
  2. 五个方面入手 教你如何成为领导型CIO
  3. (转载) 数组a[]={3,5,2,4,1,8},要求从a中找出所有“和”等于10的子集
  4. Android 跳转到ViewPager指定页面
  5. linux学习杂记_socket编程(含select)
  6. OpenStack 的诞生
  7. go - reflect
  8. 【物体检测】基于matlab GUI形态学物体检测【含Matlab源码 945期】
  9. 层次分析法原理和matlab代码
  10. 勒索病毒数据库恢复 勒索病毒解密恢复 中勒索病毒解密恢复数据
  11. win7 下点击鼠标右键无法新建文件夹
  12. pt和px区别 pt是逻辑像素,px是物理像素
  13. 英语esl语言课程等级105c,说一下英语ESL的等级
  14. 04、Hadoop框架HDFS NN、SNN、DN工作原理
  15. 谈下论坛和商城的开发项目
  16. GraphPad Prism使用
  17. “香港一卡通” 內地見證開戶
  18. (差分)洛谷P4231 三步必杀
  19. 解决 Spring Cloud 整合 zipkin 报错:org.springframework.boot.actuate.health.CompositeHealthIndicator......
  20. 一、多线程是什么?为什么要用多线程?

热门文章

  1. GX Works2、MX OPC 6
  2. (转)活出自己的生命
  3. 网页设计后PSD时代(Post-PSD Era)
  4. HTMLTestRunnerCN
  5. vs 2008 下载 VS2008简体中文正式版迅雷高速下载 Visual Studio 2008 Team
  6. 谷歌卫星地图与矢量电子地图的叠加方法
  7. Keynote for Mac 5.3 下载
  8. docker可以把应用及其相关的_Docker及其相关技术
  9. linux操作系统上网本下载,veket linux系统下载
  10. 基于S2SH的医院门诊管理系统【数据库设计、源码、开题报告】