• BLE控制器之链路层


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

    链路层状态

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

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

    状态转换图如下图:

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

    就绪态

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

    其他状态转向就绪态:

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

    就绪态转向其他状态

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

     广播态

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

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

    进入广播态

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

    转向其他态

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

    扫描态

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

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

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

     发起态

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

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

    进入发起态

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

    退出发起态

    设备不再发起连接请求

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

    连接态

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

    进入连接态

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

    退出连接态

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

     多状态的情况

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

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

    注意:

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

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

  • 相关阅读:
    vue之下拉菜单Dropdown的使用
    elinput输入框的readonly属性
    通过CollectionUtils工具类判断集合是否为空,通过StringUtils工具类判断字符串是否为空
    前端与后端之间参数的传递与接收和@RequestBody,@Requestparam,@Param三个注解的使用
    为什么数据库能查出两条id相同的数据
    js中函数调用时,对参数个数和类型没有要求
    避免创建不需要的对象,消除过期对象的引用
    避免使用终结方法
    避免使用终结方法
    快速排序
  • 原文地址:https://www.cnblogs.com/yunxiangworld/p/8004617.html
Copyright © 2020-2023  润新知