GAPBOND_AUTO_SYNC_RL开启后,无法配对绑定

我想实现白名单功能,只有配对绑定后的手机才能连接,但是我经过测试发现,当设备配对绑定后,如果不开启GAPBOND_AUTO_SYNC_RL,修改广播策略为只允许白名单扫描和连接,则刚才绑定过的设备无法扫描和连接,只有开启GAPBOND_AUTO_SYNC_RL后才能搜索并连接,但是一旦开启过这个参数,后面的设备就无法配对了,具体调试信息为,在配对状态回调函数中,

image.png

state为0,status为0,state为GAPBOND_PAIRING_STATE_COMPLETE,state为4,即使我再关掉GAPBOND_AUTO_SYNC_RL,依然没法配对,只有重启后才行。另外我想问一下,是不是跟蓝牙相关的修改必须靠tmos机制完成,因为我的程序中很多对蓝牙参数的修改不是靠tmos完成的。

另外我还遇到一个问题,当我将存储绑定信息的dataflash擦除后,查询到的绑定设备数量为0,当有手机尝试配对,可能会绑定成功,调试信息会显示绑定已保存,查询绑定数量也是1,但是手机如果重连,又会提示让配对,而此时回连用的是1类地址,用ble调试助手在已绑定设备中显示该设备已绑定,在扫描到的设备里显示没绑定,更离谱的是断电重连后查询绑定数量为0,手机再次配对会真正成功。之前断电后读flash的话是空的,我不知道这些功能的具体实现,但是现象确实很离谱。有可能的解决办法吗

问题解决了,虽然不知道上面那些异常情况是如何导致的,但是由于只要断电重启一切就能正常工作,所以我擦除所有绑定后直接调用这几个初始化函数

image.png

就可以正常工作了,类似于断上电了。虽然不知道原因,但我的问题已经解决了。


只有登录才能回复,可以选择微信账号登录