BLE外设设计

外设的定义
外设是什么,一般来说主机通常是电脑,手机等设备,相对而言,他们对功耗的要求要小得多
而低功耗主要考虑的是外设部分,所以外设一般是和手机、电脑等相连接的为低功耗高度
定制化的产品。
外设的工作离不开与主机的交互,所以一般的交互方式为:广播数据,被主机发现并与主机
进行建立连接。断开连接。然后在需要的时候建立连接。
---------------------
仅广播模式
此模式下的外设不需要和主机建立连接,只需要工作在广播模式下不断的广播有效的数据即可
主机只需要监听器广播,就可获得有效数据。

其好处是:由于不建立连接,此种模式功耗最低。

这种模式的应用场景:
如,广播者广播中包含一个时间信息,一个挂钟每天需要接收这个广播来进行同步自己的时间
而且它不需要时刻监听,只是偶尔监听一次广播。广播者的广播的间隔和频率甚至不需要周期性广播出去,只需要在特定的时间根据用户的等待意愿设置一个间隔发送广播。这样能够达到
最小的功耗特性。

-----------------------
可发现
除了仅广播的外设的,所有其他的设备都是可发现的,可发现意味着外围设备的广播目标是
此区域的正在扫描的所有中央设备

可发现主要是两种类型:
有限可发现性:
一般在进行交互后,外围设备能在一定时间内处于有限可发现状态。如外设刚装上电池
以后,或者在按下设备上的连接按钮后,此时外设处于有限可发现状态,主机扫描时
外设会显示在主机界面的顶端。

一般可发现状态:
外设不是都总是处于可发现状态,如外设与主机配对完成。此时用户就处于一般可发现
状态,此时主机就不会再发现了。
----------------------------------
可连接性
和可发现设备的区别,可发现设备不与其他任何其他设备配对,而可链接设备通常可与
其他设备绑定和接收发起设备的连接请求。

但是这引起一个问题。任何主机可以与外设连接,会使得外设将花费大量时间进行协商,
导致能量的浪费,功耗的增大,还会带来负面影响是,阻止外设绑定过的主机与其连接
所以又的引入解决方案:
外设的控制器可以配置为只接受有限的主机设备的连接请求。这些主机设备列表存储在
白名单中。如果发起链接的设备不在这个列表里面,其请求将被忽略。
这个方案得以实施的前提是设备自身执行过绑定。而在此之前,该设备将处于混杂模式
接收任何设备的链接,这通常在设备首次设为可连接但是还未与任何设备绑定的时候
才会发生。
-----------------
公开服务
进入连接之后,外设通常会公开一个或多个服务,每个服务都封装了外设中的某个组成
部分的原子行为,服务通过服务器的属性协议公开,服务器上的属性的集合统称为
属性数据库。
属性部分参考GATT 部分的分析
-----------------
特征
同样的,特征也参考GATT 部分章节分析。
----------------------
以上就是一个外设所需要实现的部分。

低功耗的优化

一般来说,对于使用电池供电的外设来说,为了延长器使用时间,必须考虑为了达到低功耗
的目的而进行其优化,包括确定最佳的广播间隔和连接间隔,优化属性的的访问,选择是否
保持连接还是断开重连等。


先看看外围设备的典型状态图

1,设备首次启动外设将进入可发现广播状态,此时其可以被主机发现。
2,某个时刻一个主机会连接到外设并与之绑定。
3,在绑定成功情况下,外设进入可连接广播,如果绑定没有发生,外设回到可发现广播状态
4,已绑定的外围设备将执行可连接广播,只有与之配对的主机才能连接该外设。
  它们之间一旦重新连接进入了连接状态,主机会根据自身的意图俩管理连接的间隔
5,设备连接后,如果一旦断开了连接,外设可能会进入下列两种状态,
  一是回到可连接广播。即周期性地发送广播报文以便主机根据其需要发起重连。
  二是关闭广播,直到外设有数据要发送时再使用定向广播与主机重新建立连接。

 对于外设优化功耗的方法有下面几种

可发现广播
在外设中,一个优化功耗的根本办法在于为广播和连接进行选择时间的间隔,
一个适合的间隔可能让电池工作好几年,而一个糟糕的间隔只能让它工作几个星期。
怎样选择一个好的间隔呢?
位于可发现模式的时候,外设希望尽快被发现。此时设备会广播发射功率,设备名等
供主机扫描后用来排序或显示等。
当前,为了外设更倾向于使用较快的频率发送广播,将广播间隔设定为250ms有助于在
发现速度和节能之间取得较好的折中

绑定
在外设建立了连接之后,连接的时间间隔由主机决定。
此时快速的连接间隔(7.5-25ms)将会耗掉大量的能量。但是好处是主机可以很快发现
外设提供的服务集和特性集。
如果连接间隔很慢(1s-4s之间),主机将耗费一段相当长的时间来确定如何使用外设。

但是绑定完成之后,此时应该可以尽量减少连接间隔以减少能量。后面再讨论如何优化

可连接广播
断开连接后的外设可以周期性地进行广播,以便让主机重新发起链接。此时,广播需要
综合考虑多种因素,既要保证主机的重连速度,又要考虑外设自身的功耗。

以一个心率带来说,一般它不在链接中的时间要比处在链接的时间多得多。比如,
在用户慢跑的一个小时内会保持连接,如果一个星期锻炼三次,一周内心率带只连接
了三个小时,而在其他的165个小时内则处于可连接广播态,如此类的设备来说,使用
较长的广播间隔带来的好处十分明显。

此时,在用户戴上心率带的时候,可以针对广播分陪更多的功率,如将广播间隔设为
100ms,会给用户一种印象,一戴上心率带连接就能在瞬间完成。
如果此时主机此时暂不能发起链接,可以降低心率带的广播速率,换一个更大的广播间隔
来节能。

原文地址:https://www.cnblogs.com/yunxiangworld/p/8018851.html