到这里,对于非连接状态应该有一些新的认识了.接下来,顺其自然当然就是连接了.你谈对象,忙活半天,当然是想干点什么事情了.当然也有老司机翻车...
连接上后,一端要主动向另一端发起问候,否则长时间不联系,那么就断开好了.主动问候的一端我们称之为master.这些概念和4.0没有本质上的区别.
输出的数据无非就是两类,一类是应用层数据,一类是控制信息.他们都有如下结构.
header是一些控制信息,payload是载荷(主要用于传输应用层信息),MIC是可选的,这个和加密有关.
我们来看看头部的信息:
llid正如我们上面所说,用来标记是应用层数据还是控制信息.
NESN和SN和MD流控管理,用来同步数据包不出错.
CP位指示CTEInfo字段是否存在.这里就是5.1不同的地方.而CTEInfo就是用来寻向新加的功能.那么这里和广播的CTEInfo有什么区别了.从定位功能来看没有任何区别.区别主要是针对与应用,这里就会存在广播寻向和连接寻向.具体需要参考各个芯片厂家的实现细节.
length是用来只是payload的长度.
从这里看,唯一的差别就是在连接时增加了寻向的功能.
基本的交互过程如下:
和4.0一样,没有任何变化.在约定好的时间和地点传输数据即可。
在传输控制信息的时候,增加了LL_CTE_REQ,LL_CTE_RSP,LL_PERIOD_SYNC_IND命令.
LL_CTE_REQ的格式如下:
和之前一样,用来请求寻向信息.
LL_CTE_RSP没有具体的载荷,但是在数据包尾会增加Constant Tone Extension字段.
基本流程如下:
当获取到rsp就可以采集iq数据,从而实现定位.
LL_PERIOD_SYNC_IND的格式如下:
id是需要被HOST上层设置的表示符
Syncinf的字段和上一篇文章的一样.主要用于控制同步信息.
conneventcount,lastpaeventcounter,syncconneventcounter大致是同步控制的index有关的.
sid是和广播一样的广播集合的表示符.
atype用来指示adva字段是否存在.
sca是时钟精度
phy是使用的信道索引
adva是广播地址.
说道同步信息,顺带也把5.1的同步状态说一下.当接收到带有AUX_sync_indx信息数据帧以后,在双方都接受的情况下,此时蓝牙进入了同步状态.
在广播状态下使用同步流程如下:
但是在连接状态下的同步流程本人并没有找到.
而且这里我一直在想这个状态实际的应用场景是什么,蓝牙规则一直提示说使用此种状态一般是3个设备.A和B和C,B在广播,A和C连接,A同步B的数据给C等等.这里是不是还有更好的替代方案值得商榷.这个看看各个芯片厂商的实现细节再来研究.
这些是5.1在连接状态下改动,以及新增加的同步状态.
其实主要的改变还是寻向功能.但是此功能如何使用?还需要配合具体芯片厂商的实现做具体的分析.这里就不做具体的分析了。
好了,5.1的改动基本就是这样,你get到了吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)