Thread 中讨论的其他器件:BLE-STACK、 SysConfig
大家好、
在一个行业项目中、我们目前面临着 BLE 通信方面的一个非常严重的错误。 我们使用 TI SDK 4.10.0.78
在发生错误之前、器件正在执行一些测量、但未处于连接状态。 然后建立连接、器件根据命令将测量数据发送到主器件。
在大多数情况下、它没有问题。 但在极少数情况下、器件会突然停止通信。 在 Wireshark 中、根据连接间隔、我可以看到大量"空 PDU"。 当通信中断时、我可以清楚地看到、我们的器件只是停止对主器件连接事件的应答-没有任何干净的终止程序。 在配置的监控超时后、主器件会将连接视为丢失。
然后、当我在正在运行的器件上启动调试会话时、我可以看到堆栈仍然认为连接处于活动状态- BLE 堆栈无法识别死连接。
我们实现了一个监视功能、通过观察连接事件来跟踪丢失的连接。 一旦我们在特定时间段内未发现任何连接事件、我们就会认为连接丢失。
发生这种情况时、我们调用 GAP_TerminateLinkReq、返回0x0 =成功。 然后、我们调用 GapAdv_enable、返回0x18 (bleInvalidRange)。
因此、我们无法激活广播、并且我们的器件不再可连接。
奇怪的是、我们始终使用相同的参数调用 GapAdv_enable。 在错误发生之前、返回状态始终为0x0成功。 只有在这种罕见的情况下、它才不会成功。 之前可能有数百次调用 GapAdv_enable、全部成功。
除了似乎混淆的 BLE-STACK、器件工作正常。 我们的 RTOS 任务在运行时没有遇到任何问题。
从 SDK 发行说明中、我们没有发现已知的错误、这可能会导致此行为。 有没有人知道这里可能会有什么问题?

