工具/软件:
只是想知道是否有人可以确认或帮助这个。
我们有一个设计、while 作为中央器件运行、可连接多达3个外设。
最近、我再次使用此构建、尝试改进连接/断开连接。
一个奇怪的事情是、通过断开所有三个外设的连接来工作。 这一直很奇怪、
第三个断开连接的表现不同、需要很长时间。
通常连接三个设备、并分配 connHandle 0、1、2。 它们用于参考每个器件并在连接时存储在数组中。
如果我按顺序断开每一个连接。
0 -> 1 -> 2、前两个将以终止 REQ 状态0x16终止
一切正常:- #define LL_STATUS_ERROR_HOST_TERM 0x16 //连接由本地主机终止
第三个命令也需要很长时间、并通过 Terminate REQ 0x22终止
#define LL_STATUS_ERROR_LL_TIMEOUT 0x22 //链路层响应超时
#define LL_STATUS_ERROR_LL_TIMEOUT_HOST 0x22 //链路层响应超时
#define LL_STATUS_ERROR_LL_TIMEOUT_PEER 0x22 //链路层响应超时
我尝试了序列之间的较大延迟(认为堆栈拥塞或其他情况)-但甚至5秒的断开间隙也没有任何区别。
然后,今天我尝试了这:
按相反顺序断开连接
2->1->0
这种工作正常、将快速运行、始终具有 Terminate REQ 0x16 (Happy Days!)
但我认为、一旦第一个链路断开、BLE 堆栈是否有可能重新配置 connHandle。
这将解释为什么在序列中使用 connHandle 2作为第三方总是做一些不同的事情?
因此、如果我使用序列0..1..2
0时断开。 其余的有效 connhandles 实际上是0..1
1断开时。 剩余的有效 connhandle 为0
因此、我的断开2现在不引用有效的 connHandle。
但因此,在另一个方向上做是可以的。
我有点需要了解这里的工作原理、以便在其中一个外设断开连接时可以正确管理、我是否需要更正我使用的所有 connHandles
外设进行通信。
感谢任何支持/答案。 在其他地方找不到关于这个的任何信息:-(
Rob