• BLE的广播类型


    广播的类型一般分为四种,见如下表格:


    1. 可连接的非定向广播(Connectable Undirected Event Type):

    这是一种用途最广的广播类型,包括广播数据和扫描响应数据,它表示当前设备可以接受其他任何设备的连接请求。进行通用广播的设备能够被扫描设备扫描到,或者在接收到连接请求时作为从设备进入一个连接。通用广播可以在没有连接的情况下发出,换句话说,没有主从设备之分。

    鉴于此种广播类型用的最多,下面我们来讨论一下此类型下广播事件中广播包的发送情况,另外要注意在一个广播事件中,前一个“ADV_IND PDUs”的开始到相邻的下一个“ADV_IND PDUs”的开始处的时间要小于等于10ms 

    第一种情况:仅仅有广播 PDUs 。截图显示如下:

    第二种情况:在广播事件的中间有“SCAN_REQ”和“SCAN_RSP PDUs”。截图显示如下:

    第三种情况:在广播事件的结尾有“SCAN_REQ”和“SCAN_RSP PDUs”。截图显示如下:

    第四种情况:在广播事件的中间接收到“CONNECT_REQ PDU”的情况。截图显示如下

    2. 可连接的定向广播(Connectable Directed Event Type):

    定向广播类型是为了尽可能快的建立连接。这种报文包含两个地址:广播者的地址和发起者的地址。发起者收到发给自己的定向广播报文之后,可以立即发送连接请求作为回应。 

    定向广播类型有特殊的时序要求。完整的广播事件必须每3.75ms重复一次。这一要求使得扫描设备只需扫描3.75ms便可以收到定向广播设备的消息。 

    当然,如此快的发送会让报文充斥着广播信道,进而导致该区域内的其他设备无法进行广播。因此,定向广播不可以持续1.28s以上的时间。如果主机没有主动要求停止,或者连接没有建立,控制器都会自动停止广播。一旦到了1.28s,主机便只能使用间隔长得多的可连接非定向广播让其他设备来连接。

    当使用定向广播时,设备不能被主动扫描。此外,定向广播报文的净荷中也不能带有其他附加数据。该净荷只能包含两个必须的地址。

    3. 不可连接的非定向广播(Non-connectable Undirected Event Type):

    仅仅发送广播数据,而不想被扫描或者连接。这也是唯一可用于只有发射机而没有接收机设备的广播类型。不可连接广播设备不会进入连接态,因此,它只能根据主机的要求在广播态和就绪态之间切换。

    4. 可扫描的非定向广播(Scannable Undirected Event Type):

    又称可发现广播,这种广播不能用于发起连接,但允许其他设备扫描该广播设备。这意味着该设备可以被发现,既可以发送广播数据,也可以响应扫描发送扫描回应数据,但不能建立连接。这是一种适用于广播数据的广播形式,动态数据可以包含于广播数据之中,而静态数据可以包含于扫描响应数据之中。

    注意:所谓的定向和非定向针对的是广播的对象,如果是针对特定的对象进行广播(在广播包PDU中会包含目标对象的MAC)就是定向广播,反之就是非定向。可连接和不可连接是指是否接受连接请求,如果是不可连接的广播类型,它将不回应连接请求。可扫描广播类型是指回应扫描请求。

    不同的广播类型对扫描请求和连接请求的不同结果如下图:

     


     作者:zhenhuaqin
    链接:http://blog.chinaunix.net/uid-21411227-id-5748996.html
     


    广播数据包格式


    7f223bf9-4d85-4e25-917d-222fb063b540.png

    每个包都是 31 字节,数据包中分为有效数据(significant)和无效数据(non-significant)两部分。

    • 有效数据部分
      包含若干个广播数据单元,称为 AD Structure 。如图所示,AD Structure 的组成是:

      • 长度 Len ,表示这个 AD Structure 的长度(除去 len本身 1)
      • 类型 AD Type
        标记这段广播数据代表什么, 比如设备名, uuid 等。
      • 数据 AD data
    • 无效数据部分
      广播包的长度必须是 31 个 byte,如果有效数据部分不到 31 自己,剩下的就用 0 补全。这部分的数据是无效的。



    作者:orientlu
    链接:http://www.jianshu.com/p/fbb36c73f148
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

     
  • 相关阅读:
    QT 信号与槽 中传递自定义数据类型
    keil5 仿真时发现函数不能进入到main函数
    QT 报错分析 一
    QT 简易时间处理
    QT 编译出现 Custom Executable 对话框 问题
    win10 下装ubuntu双系统
    Vmware linux下不能联网
    Vmware Workstation
    免费在线作图,实时协作
    SVN常用问题汇总
  • 原文地址:https://www.cnblogs.com/asam/p/7611257.html
Copyright © 2020-2023  润新知