我创建了一个连接超时计时器,如下所示
app_timer_set(app_ble_dev[device_number].timer,TASK_app,700);//7秒
其中为每个可以同时连接的设备定义了连接计时器id。在这种情况下,只有一个设备正在尝试连接。所以循环是:
扫描
停止扫描
呼叫应用程序\计时器\设置
尝试连接
超时呼叫取消
在evt完成回调案例直接连接取消重复循环(开始扫描)
这个序列可能永远重复。但在N个循环(其中N的范围为2到15+)之后,硬故障发出信号。没有指示故障发生在哪种方法的信号。
如果我不尝试连接超时,循环就可以永远重复(只要我愿意等待)。
我是不是漏了一步?即使我没有连接,我是否也需要调用disconnect方法?我是否仍需要取消计时器(就像我在成功连接时所做的那样)?
当连接因超时以外的原因成功或失败时,是否清除计时器?
"在evt完成回调案例直接连接取消重复循环(开始扫描)“-我不太明白。。。
是的,我清除计时器。到目前为止,连接失败只是由于超时。我看计时器是否激活,如果是我清除它。
当direct connection事件被报告为completed时(在本例中,它已完成,因为我取消了连接,因为它超时),我在最后一行中所述的是重复循环。我重新开始扫描,10秒后扫描停止。尝试连接到已发现且已断开连接的设备。如果设备不在,则连接超时。我取消连接事件,我在直接连接完成事件中得到取消指示,然后我重新启动扫描,等等。循环无限期地重复。。。或者至少应该这样。最终我得到了一个硬错误,但是没有迹象表明是什么方法导致了硬错误。所以听起来像是资源积累最终导致系统崩溃。
我仍然得到这个错误。有什么方法可以让我们更好地了解硬故障的原因吗?执行的最后一行代码,所使用的方法,等等。?