既然要说5.1的那些事儿,那么必须的聊聊蓝牙4.0.本文就不在此长篇大论班门弄斧了,要了解4.0的同学请出门左拐直接去参考蜗窝科技大佬的文章.本人觉得对于想入门全面了解4.0的同学,此文章是不二选择的经典.在此只有膜拜的份了(不是广告哈哈).
这里主要对差异做一点对比和分析.个人水平有限,如有不当,恳请指正.
本文主要从physical layer来分析,host层和4.0变化不大请自行参阅之前说明.
在5.1中主要是物理特性增强了.传输距离,传输数据包大小,传输速率都大大增加.这些都是纯硬件特性.
在软件层面,5.1多了一种状态Synchronization State变成5中状态.
我习惯把5.1人为分为3中状态,非连接状态,连接状态,同步状态.
此篇就从非链接状态讲述.
非链接状态最主要的就是广播状态.广播的PDU增加了ADV_EXT_IND• AUX_ADV_IND• AUX_SYNC_IND
• AUX_CHAIN_IND四种.这里PDU前面如果有AUX表示辅助PDU,辅助的PDU不在37.38,39信道传输数据.
为什么要如此增加辅助PDU了?主要是为了传输更多的数据,比如同步信息数据,寻向信息等等.
至于广播事件如下• a connectable and scannable undirected event• a connectable undirected event
• a connectable directed event• a non-connectable and non-scannable undirected event• a non-connectable and non-scannable directed event• a scannable undirected event• a scannable directed event.这里广播事件和PDU一定不要混淆起来,它俩像是兄弟,但是没有血缘关系.那到底有啥关系了,看这里.
一个event可能包含很多的PDU,一个PDU也可能被很多事件引用.他们之间并没有必然联系.只是SIG在这里定义了这样一种俗语,而且名字都很相似,搞得它俩很亲一样.
其中除了connectable and scannable undirected event不能包含新加入PDU,其他都可以包含.
connectable undirected event事件可以包含ADC_EXT_IND和AUX_ADV_IND.
这里所有的过程就叫做connectable and scannable undirected event,主信道包含ADC_EXT_IND的PDU,然后辅助信道包含ADC_EXT_IND的PDU.这里ADC_EXT_IND不能携带数据,只能指向辅助信道,然后辅助信道PDU携带数据或者ADC_EXT_IND指向空.
这两个PDU如何知道自己是一伙的了,原来在他们的PDU结构中有ADI这个字段.如果一致表示我们认识.
ADC_EXT_IND和带AUX的PDU(除了AUX_SCAN_REQ和AUX_CONNECT_REQ)都有统一的格式如下:
其中Adc_Mode表示
然后ExTended Header如下
其中Adc_Mode,ExTended Header和当前的event对应,这样就知道那些字段需要填写.如果要使用ExTended Header就在ExTended Header Flag相应的位域标记即可.
这里CTEINFO的结构如下
CTEINFO主要应用寻向功能,如果此字段存在那么CONSTAND TONE EXTENSION也存在,后者的位置在所有数据最后最后追加.
ctetime表示CONSTAND TONE EXTENSION的长度.
ctetype表示寻向的类型.目前有aoa,aod和1us的slot,aod和2us的slot三种.
CONSTAND TONE EXTENSION的结构如下
CONSTAND TONE EXTENSION主要用于寻向数据IQ的采样.采样发生在reference period和后面的sample lots.每一微妙采样一次。CONSTAND TONE EXTENSION位16us到160us.
接着AdcDataInfo就是ADI用来同步主信道和辅助信道的标志.
然后AuxPtr如图
此字段主要用来表示指引辅助信道的信息,如果有,告诉peer你应该什么时间在什么地点和我约会.
channel index表示信道索引,告诉peer你应该在哪个辅助信道索引来找我.
CA表示时钟精度.
offset units和Aux Offset表示在主信道发送数据后,第一次,多久后在辅助信道发送信息
AUX PHY表示使用哪一个物理介质传输有1M/S,2M/S, LL CODE.
最后是SyncInfo字段如下:
此字段的存在主要用来表示只是同步状态的信息.
其中sync packet offset ,offset units,offset adjust告诉第一次同步的时间
chm表示同步的地点信道
interval表示两次event的辅助同步数据包之间的时间
sca,aa,crcinit和校验纠错有关
到这里我们基本上对一个新的广播包有了一个大致的认识.广播完成以后,peer如何回应了,回应什么了,接下来我们再看.
上图告诉我们回应什么,至于怎么回应请看下面.我们还是以connectable undirected event事件为例子:
这里有几个概念.在很多情况下AUX是可以被覆盖的,广播了37,38,39信道后,才广播AUX数据包在辅助信道.
peer也必须使用aux的数据包在相应的信道进行回应.其他的概念和4.0如出一辙.
其他的广播EVENT和这里如出一辙,没有什么特殊的地方.至于scanner状态和initiator状态和广播状态是一一对应的,两两共存,男女搭配干活不累,孤独的活着没有任何意义.
下一盘文章我们再来讲讲连接建立后的那些事儿.