Other Parts Discussed in Thread: BLE-STACK, SYSCONFIG
Hi all,
in an industry project we currently face a very critical bug on BLE communication. We use TI SDK 4.10.0.78
Prior to the bug occurance, the device is performing some measurements, while not being in a connection. Then a connection is established and the device sends the measured data upon command to the master device.
Most of the time, there is just no problem with it. But in very rare situations, the device suddenly stops communicating. In Wireshark I can see lots of "empty PDUs", according to connection interval. When the communication breaks up, I can clearly see, that our device simply stops answering to the masters connection events - without any clean termination procedures. After the configured supervision timeout, the master considers the connection to be lost.
When I then start a debugging session on the running device, I can see, that the stack still considers the connection to be active - BLE stack does not recognize the dead connection.
We implemented a monitor function, to track for lost connections, by observing the connection events. Once we have not seen any connection events within a certain time period, we consider the connection to be lost.
When this case happens, we call GAP_TerminateLinkReq, which returns 0x0 = SUCCESS. Then afterwards, we call GapAdv_enable, which returns 0x18 (bleInvalidRange).
Accordingly, we cannot activate advertising, and our device is no longer connectable.
What is strange about it, is that we always call GapAdv_enable with the same parameters. Before the bug happens, the returen status always is 0x0 SUCCESS. Only in this single rare case, it does not succeed. There may be hundreds of calls to GapAdv_enable before, which all succeeded.
Except from the BLE-stack, which seems to be confused, the device is working just fine. Our RTOS-tasks are running with no troubles.
From the SDK Release Notes, we have not found a known bug, that may lead to this behaviour. Does anybody have an idea, of what may be the issue here?

