请教为啥蓝牙在执行任务后会提示超时断开。

当我用BLE蓝牙调试助手往simple profile发送数据时,程序会调用tmos_start_task在1秒后执行一个任务事件,任务事件大概有5秒钟,我将TIMEOUT设置成1000,当任务结束后,它继续执行例程打印RSSI值的任务事件。按我的理解的话,RSSI能打印了,证明还有富余的时间,不然应该是任务结束了直接就提示断开了吧。但是为啥打印了几次后提示断开,原因是0x08。

#define BLE_HCI_CONNECTION_TIMEOUT   0x08

超时断开了,可以尝试将连接间隔给到1600,同时将SlaveLatency也给大到6。1.png或者可以将任务拆分一下,确保任务的执行时间小于连接间隔的一半。


但是我试过将TIMEOUT设置成3000,也试过同时设置SlaveLatency,它仍旧是打印一段时间RSSI值然后断开,最后打印断开的时间正是我设置的TIMEOUT时间,把我整不会了。。。而且连接间隔我看说明好像是一个范围,是不可控的吧,最大只有4s,最小1.25ms。


提供一个范围进行协商,最终建立连接肯定会协商出实际的连接间隔。

如果上述方法的参数已经给到最大了,那就拆分你的任务去进行管理。


那最大的连接间隔是4s,确保少于一半,那就是我得让我的每个任务最大不超过2s咯。这样整个流程有点难搞哦,行吧,谢谢你的回答。

10.jpg


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