【原创】BLE的链路层3:非连接状态

欢迎关注本人公众号:


目录

1    什么是非连接状态

2    Advertising state(广播状态)

2.1    广播事件

2.2    广播事件的种类

2.3    广播信道的选择

2.4    扩展广播事件的行为

2.5    周期广播事件的行为

3    Scanning state(扫描状态)

4    Synchronization state(同步状态)

5    Isochronous Broadcasting state(同步广播状态)


注:未经注明,本文讲述的均是蓝牙协议5.2。

1    什么是非连接状态


        非连接状态就是指 Standby, Advertising, Scanning, Initiating和Synchronization几种状态。这些状态在前面几篇文章说链路层状态机时已经初步解释过,如有需要可以回顾前面的文章。
本文将配合空口协议将其中某些状态更进一步展开。

2    Advertising state(广播状态)


         广播状态算是非连接状态中最复杂的一个状态。


2.1    广播事件


        同一个数据,需要在多个Channel上依次广播。因此,这样依次在多个Channel上广播的过程,就叫做一个Advertising Event(广播事件)。在每个使用的主要广播频道上(37、38、39)发送一个广播PDU 后,广播事件应关闭。如下图:


 注:上图摘自《Bluetooth Core Specification》

 

2.2    广播事件的种类

种类

简要说明

Connectable events(可连接事件)

connectable and scannable undirected event

可连接可扫描无定向事件

connectable undirected event

可连接无定向事件

connectable directed event

可连接定向事件

non-connectable events(不可连接事件)

non-connectable and non-scannable undirected event

不可连接不可扫描无定向事件

non-connectable and non-scannable directed event

不可连接不可扫描定向广播事件

scannable undirected event

可扫描无定向事件

scannable directed event

可扫描定向事件

        不同的连接事件中,发送的广播包类型不太相同,可以响应的包类型也不一样。

 注:上图摘自《Bluetooth Core Specification》


        简单说,上述事件种类中,“可连接的”的意思就是可以响应连接请求。而“可扫描”的意思就是可以响应扫描请求。


2.3    广播信道的选择


        广播信道有两种,一种是Primary advertising channel,一种是Secondary advertising channel。Primary advertising channel就是传统的广播信道,也就是37、38、39三个信道。而Secondary advertising channel则是复用了剩余的37个data channel,用于传输Extended Advertising Event(扩展广播事件)

2.4    扩展广播事件的行为

        Extended Advertising 扩展广播事件可以通过多个辅助PDU来传输广播数据,极大扩展了广播数据的容量。它的发包行为是,首先在 Primary Channel 上发送一个 EXT_ADV_IND包,需要时,在 Secondary Channel 上发送 AUX_ADV_IND包。如果有更多的数据,则接着发送 AUX_CHAIN_IND包。另外,多个扩展广播事件在时间上可以相互重叠,也就是一个事件没有完成,另一个事件可以开始。下图展示了发包行为。
       需要注意的是,两个EXT_ADV_IND包之间需要遵守本文2.4节所示的时间间隔。

 

 注:上图摘自《Bluetooth Core Specification》

 
注:上图摘自《Bluetooth Core Specification》

 

2.5    周期广播事件的行为


       周期广播以一个恒定的连接间隔发送AUX_SYNC_IND广播包。周期广播一旦开始就不能更改广播间隔。两个相邻的AUX_SYNC_IND之间的事件间隔称为周期广播事件的广播间隔。

 
注:上图摘自《Bluetooth Core Specification》


3    Scanning state(扫描状态)


        扫描状态有两种类型:被动扫描(PASSIVE SCANNING)和主动扫描(ACTIVE SCANNING)。两种类型的区别是被动扫描模式只监听信息,并不发送任何东西。而主动扫描除了监听广播包以外,还可以根据收到的广播包的类型发送请求包,要求广播者提供更多的数据信息。

       下图是被动扫描的示例。

 
注:上图摘自《Bluetooth Core Specification》

 

        接下来的图是主动扫描的示例。


 
注:上图摘自《Bluetooth Core Specification》

 

4    Synchronization state(同步状态)


         Synchronization状态用于监听来自其它设备周期性广播。这些周期性广播有以下两种类型:Periodic advertising trains,Broadcast isochronous streams。

         其中Periodic advertising trains就是secondary广播信道上的周期性的AUX_SYNC_IND包(参见2.6周期性广播事件的行为)


         Broadcast isochronous streams 是由处于Isochronous Broadcasting state(同步广播状态)的设备发出来的。将在下一小节细说。

         同步状态有两个子状态,分别是synchronizing(同步中)和synchronized(已同步)。

5    Isochronous Broadcasting state(同步广播状态)


        同步广播状态下,设备不停向外发出BIS (Broadcast Isochronous Stream)。每个BIS含有独立的同步广播数据,这些同步广播数据可以是帧结构的,也可以是流结构。
多个BIS组成一个BIG(Broadcast Isochronous Group)。一个BIG最多含有31个BIS。一个同步广播状态实例就对应一个BIG。同步广播状态的设备只能在BIG Event中传BIS。


 
注:上图摘自《Bluetooth Core Specification》

 

         BIG中的BIS也组织成BIS Event。不同的BIS event可以依次按顺序发送,也可以交替发送。如下图:
 


注:上图摘自《Bluetooth Core Specification》

 


版权声明
        所有原创文章(未进行特殊标识的均属于原创) 的著作权属于本人
        所有转载文章(标题注明[转]的所有文章) 的著作权属于原作者。
        所有译文文章(标题注明[译]的所有文章) 的原文著作权属于原作者,译文著作权属于本人。

转载注意事项
        除注明外,所有文章均采用 Creative Commons BY-NC-ND 4.0(自由转载-保持署名-非商用-禁止演绎)协议发布。
        你可以在非商业的前提下免费转载,但同时你必须:
                保持文章原文,不作修改。
                明确署名,即至少注明 作者:BoatOnMCU 字样以及文章的原始链接,且不得使用 rel="nofollow" 标记。
                商业用途请电话联系本人。
                微信公众号转载一律不授权,除非联系本人并获得授权。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值