BLE控制器之链路层

该部分主要描述链路层的状态以及状态的转换 

 

链路层状态

链路层状态机定义了5中状态:

  • 就绪态
  • 广播态
  • 扫描态
  • 发起态
  • 连接态

状态转换图如下图:

下面会结合这个转换图来介绍各个状态之间相互转换的过程

 

就绪态

就绪态是链路层的中心态,虽然是非活动状态,但是相对比较重要。能够和其他状态进行相互转化。

其他状态转向就绪态:

  1. 上电后,链路层进入就绪态
  2. 广播状态完毕,没有建立连接的话会回到就绪态
  3. 发起态没有建立连接,也会回到就绪态
  4. 扫描态完毕后也只能回到就绪态
  5. 连接态在断开的情况下会回到就绪态。

就绪态转向其他状态

  1. 设备需要发起扫描时,进入扫描态
  2. 设备需要发起广播时,进入广播态
  3. 设备需要发起连接时,进入发起态

 

 广播态

用于设备发起广播,通过广播报文提供自己的信息给其他设备。

在广播态的设备可以发送广播、还可以发送扫描响应回应发起扫描请求的设备。

进入广播态

  • 设备发起广播则进入广播态

转向其他态

  1. 停止广播并且没有建立连接则回到就绪态。
  2. 有设备发起连接请求则进入连接态

 

扫描态

扫描态用于设备发起扫描,发现周围的其他设备。在这个状态的设备能够接收广播报文。分为被动扫描

和主动扫描: 被动扫描仅仅监听广播报文,主动扫描则发送扫描请求给广播态设备,获取附加的扫描响应数据

扫描态的设备只能回到就绪态,转换条件爱你是停止扫描。

 

 发起态

用于设备发起连接,链路层需要处于发起态。在这个状态设备可以想广播设备发起连接请求。此时会假设

 广播者也进入连接状态,自己也会进入连接状态。

进入发起态

设备需要向广播设备发起连接请求。则进入该状态

退出发起态

设备不再发起连接请求

设备已经建立连接则进入连接态。

 

连接态

 设备从广播态或者发起态建立连接后均会进入连接态。

进入连接态

  • 广播者接收连接请求进入连接态
  • 发起者发起连接请求进入连接态

退出连接态

  • 设备断开连接后则回到就绪态

 

 多状态的情况

 指的是一个设备同时被配置为从设备、主设备,即常说的主从一体,可以作为从设备发送广播,也可以作为主设备

扫描接收广播和发起连接。

注意:

1. 同一时刻,要么是主设备、要么是从设备,而不能既是主设备又是从设备。

2. 一个设备不能同时成为两个主设备的从设备。(经典蓝牙另论)

 

posted @ 2017-12-08 11:33  云翔世界  阅读(285)  评论(0编辑  收藏  举报