BLE设备之间的交互过程

 本文的目标 :

  • 了解BLE之间设备是如何工作的,有哪些主要流程,为后续深入BLE协议分析做准备。

现在以HRS(Heart Rate Sensor)为例来说明。硬件:Heart Rate Sensor,手机

  •  Heart Rate Sensor:负责检测心率等信息; 

  •  手机:同HRS通过BLE通信,搜集并展现出心率等信息

二者对应关系如下:

从协议的角度讲,Heart Rate Sensor必须提供两种服务(蓝牙规范所定义):

  • Heart Rate Service:提供心率等服务,

  • Device Information Service提供设备信息服务。


连接图:

手机就是充当Collector的角色;为了了解手机与HRS之间的交互流程,先来看手机端的操作:

    

     

      

  

手机操作经过三步:

  1.  搜索发现设备 My BLE,其蓝牙地址是01:88:BE:51:41:44,此时手机只知道周围有一个BLE设备;

  2. 连接该设备,并搜索发现设备提供的服务,发现其提供两个服务:Heart Rate Service和Device Information Service

  3. 查看Heart Rate Service提供的服务和操作方法,可以看到,提供SensorLocation,HeartRate测量以及EnergyExpended功能,并且有一个STAR TNOTIFY开关。打开开关就能收到HeartRate Sensor通知的心率值,图中的70bpm


这个过程如下:

Heart Rate Sensor对外广播,手机扫描搜索周围设备,并在收到Heart Rate Sensor的广播数据后发起连接,连接成功后搜索其提供的服务,并发现HeartRate Sensor服务的特性和操作方法,进而获取心率监测。

大致过程如下:


以下是整个过程对应的数据包,从中也可以印证:


  1. 广播与连接:


2. 链路控制,例如更新链路参数

3.  发现服务(service),发现服务是一个过程,可能通过多次交互才能完成

4. 发现服务的特性(characteristics),发现特性也是一个过程,可能通过多次交互才能完成


5. 操作服务,这里包括手机读或者写Heartrate sesnsor提供的服务特性,Heart rate sesnsor的主动通知(Notify)方法:


6. 断开连接

以上这个过程是一个典型的BLE设备之间的交互过程。几个阶段说明如下:(a)广播与扫描:

一个设备要让其他设备能发现,则必须向外广播,而一个设备如果对广播者感兴趣,想进一步了解,则可以通过扫描该设备来进一步获取该设备提供的信息,通过这个阶段,扫描的设备已经基本清楚了广播设备信息,以及提供的能力,从而可以判断是否连接该设备。

(b)建立连接:当扫描者想与广播者可以建立连接,那么设备之间就会有一个建立连接请求。

1) 在建立连接后,如果设备之间要设置一些连接信息或者获取版本信息等等,这可以提供链路层定义的数据格式来发送数据实现,例如master更改连接参数,slave发起更新连接参数请求等等

2) 为了无线安全,例如数据加密,对数据完整性验证,以及数据在传送过程中有没有被修改等,设备之间可以发起配对流程,该过程是可选实现的。

3) 建立连接请求后,为了能获取设备提供的服务,让客户端能操作设备,那么就需要经历一个设备服务发现过程,只有在这一步后,才能知道设备提供服务的具体操作方法以及操作handle。

4) 知道了设备的具体操作方法,就可以操作设备

5) 最后,设备任意一方可以发起断开连接请求。

整个流程包括了广播通道上的PDU(广播和连接请求),以及数据通道上的PDU (L2CAP,ATT/GATT),后面具体章节将根据PDU类型来分析具体流程。

更多更新在微信公众号:

猜你喜欢

转载自www.cnblogs.com/someone-device/p/12213057.html
今日推荐