• BLE控制器之链路层二


    本部分主要描述设备的发现过程

    广播实例:


    广播分类

    设备的发现过程是和广播分不开的,所以先来看看广播。

    首先来看看广播,广播包括几种广播。

    • 通用广播
    • 定向广播
    • 不可连接广播
    • 可发现广播

    来看看这几种广播的定义和区别:

    通用广播
    它是用途最广的广播方式,这种广播可以被扫描设备扫描到,也可以在接收连接请求时作为
    从设备进入一个连接。

    定向广播
    什么情况下用定向广播呢?
    有时候,设备间需要快速建立连接,如果从设备想这么做,就需要进行定向广播,这种广播
    包含两个地址,广播者的地址和发起者的地址。那么发起设备怎么做呢?-
    发起设备收到发给自己的定向广播报文后,可以立即发送链接请求作为回应。
    定向广播事件的时序特殊,完整的广播事件必须3.75ms重复一次,使得扫描设备只需要扫描
    3.75ms便可以收到定向广播设备的消息。
    这样又会带来新的问题,如此快的发送会让报文充斥着广播信道,导致该区域内的其他设备
    无法进行广播,解决方法是,定向广播不可以持续1.28s以上的时间。只要时间到,即使主机
    没有要求主动停止,或者链接没有建立,都会自动停止广播。之后,主机只能使用间隔更长
    的通用广播,让其他设备来链接。

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

    不可连接广播
    不想被连接的设备会用不可连接事件广播。这种广播的典型应用包括设备只想广播数据,而
    不想被扫描或者链接。
    所以此类设备永远不会进入连接状态,一旦停止广播,则转入就绪状态。

    可发现广播
    特点是也不能用于发起链接,但是允许其他设备扫描该广播设备,这意味着该设备可以被发现
    即可以广播数据,又可以相应扫描,但是也不能建立连接。
    它用于那种即要通过广播广播动态数据出去,同时也可以通过扫描响应将静态数据广播给扫描
    设备。


    广播内容
    既然上面一直提到广播,那么广播些什么内容给对方呢?
    首先来看看广播内容的格式:
    长度:类型:数据
    广播数据就由这种格式类型的数据一段段组成,长度定义的后面的数据长度,而类型则定义
    了数据的类型,这样定义的好处是什么呢。因为广播的内容,接收设备不一定都能识别,此时
    接收设备就可以通过长度来进行忽略这部分内容,跳过,而不影响去解析下一段内容。

    注意两点:
    1,定向广播中是没有广播内容的。
    2,广播内容是不可靠的,因为无法确定广播是否被其他设备给扫描到。或者监听到。


    广播间隔

     既然提到了广播,则肯定会涉及到多长时间广播一次的问题。

    除了定向广播以外,其他三类型的广播的间隔范围: 20ms-10.28s,通常情况下,广播中的设备会1秒中广播一次,

    主机层可以通过广播间隔参数来进行调整和设置广播的间隔时间。

    由于设备间的时钟会不同程度的飘逸,两个设备可能在很长一段时间同时广播而造成干扰,为防止这一情况的发生,

    除定向广播外,其他广播在除了设定的广播间隔的时间外会加上一个0-10ms的随机值,以便和其他广播错开,这样

    即使当前广播冲突,在下一次继续冲突的可能性就大大降低。


    广播及设备发现过程

    有了上述的概念后,再来看看广播和设备的发现过程。

    广播过程

    设备依次在3个广播信道上发送相同的广播报文。这些广播报文就是所谓的广播事件。广播之后,间隔一定的广播间隔时间,

    继续下一次广播。

    怎么停止广播呢?

    1,是用户设置主动停止广播。

    2,是广播后接收到连接请求后,设备进入连接状态,此时也会停止广播。

    -----------------------------------------------------------------------------------------

    发现过程

    主机设备通过扫描来发现广播的设备,扫描用于接收广播事件,扫描的时间取决于有多少时间用于扫描以及

    需要多快来发现其他设备。

  • 相关阅读:
    做过的笔试题
    (转)32位机器中int的字长
    JS_void()
    JS_增加事件,移除事件,动态元素的增删事件研究
    JS_animate 站在别人的肩膀上
    JS_对象的方法
    JS_Class.extend
    JS_返回值
    JS_eventBind
    JS_应用对象的复制
  • 原文地址:https://www.cnblogs.com/yunxiangworld/p/8001600.html
Copyright © 2020-2023  润新知