1、常规连接过程
在看BLE Connection 0x3E error code之前,我们先来看一下基本的BLE connection initiating过程。
如下图所示:
设备A为BLE连接发起方,B为Advertiser。从上图,大概可以分解出BLE连接的几个步骤:
- A携带连接设备B的信息,发起连接,开始侦听待B的广播包;
- 待连接设备B,负责发起广播包;
- 如果A能在设定设置内,顺利侦听到B的广播包,则会发送一个连接请求包,并且立刻转入连接状态,并且上报给Host连接成功;
- 随后就是框起来的部分了,A随后会发送一个同步包,需要B回复一个同步包,然后连接才会真正建立,如果这个过程有不发送或不回复现象,都会导致连接失败,这就是0x3E。
2、异常断线0x3E
所以,简言之,0x3E就是连接无法建立或者同步超时,表示LL启动了连接或启动了定期广告的同步,但连接未能建立或链路层无法在6个周期性广告事件中同步包。
表现:在蓝牙主机发起连接过程中,发现会出现“秒断”的现象,即主机连接上从机,然后立马又断开了,断开原因是0x3e。
如下图所示,这就是一个连接失败的例子,原因是B没有回复A的 Data Physical Channel PDUs
3、怎样避免0X3E?
同步包丢失,一般发生在环境比较复杂时,比如周围存在很多蓝牙设备,导致信道十分拥挤的情况下。
所以,当周围蓝牙设备不可避免地过多时,应用层可以通过多次重连来规避这个问题。