一,子设备如何被主机连接?
1,子设备被连接前提条件?
仅可连接设备可被主机连接,我们拿可连接扫描广播举例,如下所示:
当子设备处于被发现后,主机可根据扫描后的结果或发起直连的方式对设备进行连接。
2,子设备何时接收连接请求?
**主机:**当主机对某一地址设备进行连接请求时,首先校验收到的广播的设备地址是否与当前发起连接的地址相符,继而发起CONNECT_IND(连接请求)
Ellisys抓包分析如下:
在收到Primary Advertising Channel的广播间隙,有发起方主动发起连接请求。
3,子设备如何处理连接请求?
3.1 子设备定义
通过广播发起且为连接请求事件CONNECT_IND PDU(5),定义为Peripheral Connection。
非加密设备我们通过连接请求可获取到如下信息:
- 连接基础参数(连接间隔,超时时间,从属延迟)
- 发送窗口长度,发送窗口偏移
- 信道表,跳频参数,CRC种子,频偏率等等
- 主机端地址,从机端地址
这里除了我们关心的连接参数外,我们还需要注意对于单Peripheral连接设备(部分芯片支持多peripheral),当收到连接请求且校验完上述数据后,将在链路层主动关闭可连接广播,同时设定下一个数据信道频率。
3.2 关于如何选择下一个信道?
我们按照上述方式选择了CSA#1默认算法,基于信道表+算法#1,我们算出第一个信道为22
举例:这里按照Channel Map: 0x1E00600600, 以及跳频算法 #1 + 跳频增量算得,可以采用matlab仿真或者用工具直接算出22。
3.3 如何确定锚点?
计算出首次信道选取后,我们选定一个锚点,由于示例中仅存在一个连接,我们在一个window offset之后变找到该设备对应的锚点。
二,主机如何连接子设备?
1,主机连接子设备的前提条件?
发起直连方可不依赖广播对空中设备进行发起直连,简单讲:底层收到建立连接的请求方式后,会一直扫描并判定广播标志且匹配地址。当未收到取消连接前会一直处于连接状态,且连接过程占用扫描关闭Host端扫描数据上报。(是否需要关闭Host端扫描以及是否上报数据由不同协议栈决定)
2,主机何时发起连接请求?
参考上述子设备何时接收连接请求。
3,主机如何处理请求后的事件?
3.1 主机定义
通过指定发送连接请求的数据包且成功完成PHY发送处理的包头,定义为Central Connection。(这里有点混淆概念,解释如下:当发起连接请求时我们会指定地址与数据包,当处于扫描状态且通过校验该数据包,我们可判定已完成发起连接请求)
3.2 主机连接子设备需要设定哪些数据?
- 扫描广播并发起连接请求的扫描间隔与扫描窗口
- 基础连接参数设定
- 跳频增量与跳频表由原厂设定默认值(也可以自定义规则,通过host设定)
3.3 主机连接子设备整体时序?
这里从主机逻辑看子设备与主机的交互逻辑,需要说明的是,当空中一直没有匹配地址时,我们将一直等待直到下发取消连接逻辑。
三,连接效率受什么因素影响?
1,如何理解连接效率?
从发起连接到连接完成事件上报,同时可以进行ATT数据交互。
2,连接效率与扫描参数的关系?
为了保障子设备发出一个广播后与主机建立连接,我们需要保证连接时扫描为全窗口接收,当检验并匹配成功后发出连接请求。全窗口在设备第一次为被连接后,可补偿下次连接的成功率。
广播参数 | 直连扫描参数:扫描间隔/扫描窗口 | 0~T内连接成功率 | 0~3T内连接成功率 | 0~T内峰值占比 | T~3T内补偿成功率 |
---|---|---|---|---|---|
1000ms/37/38/39 | 180/160 | 63.57% | 96.36% | 24.09% | 32.79% |
1000ms/37/38/39 | 160/160 | 62.43% | 95.79% | 22.66% | 33.36% |
1000ms/37/38/39 | 1200/1000 | 65.32% | 91.19% | 23.10% | 25.87% |
1000ms/37/38/39 | 1200/1200 | 63.24% | 96.3% | 21.58% | 33.06% |
3,是否可通过牺牲信道提高子设备广播间隔来提高连接效率?(否)
- 通过牺牲信道缩短广播间隔,无法提升连接时效。
- 蓝牙连接时效受广播信道影响,信道越全,连接成功率越高,时效越短。
技术参数 | 功耗 | 0~1T内连接成功率 | 0~3T内连接成功率 | 0~T内峰值占比 | T~3T内补偿成功率 |
---|---|---|---|---|---|
1秒广播,37/38/39 | 22.98ua | 63.57% | 96.36% | 24.09% | 32.79% |
700ms广播,38/39 | 22.38ua | 55.47% | 86.55% | 22.05% | 31.08% |
如下为个人搭建离散数据参考:
1秒数据:
全信道3T+连接时效占比约3.6%,故连接时效控制在0-3T(0-3000ms内)内成功率:96.4%。
全信道1T内连接时效占比约63.57%
700ms数据:
两信道3T+连接时效占比约13.5%,故连接时效控制在0-3T(0-2100ms内)内成功率:86.5%。
两信道1T内连接时效占比约55.5%