欢迎关注本人公众号:
目录
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" 标记。
商业用途请电话联系本人。
微信公众号转载一律不授权,除非联系本人并获得授权。