有几个问题请教TI工程师:
一、
在CC2640作为主设备连接上多个从设备以后,比如3个,数据收发一切正常。然后3个从设备同时断电,正常来说,主设备应该收到3次的GAP_LINK_TERMINATED_EVENT事件,我需要根据这个事件,去判断是哪个设备断开连接,然后删除对应的设备信息。但是实际上,大多数情况下,主设备收到的GAP_LINK_TERMINATED_EVENT都没有3次,这样的话,程序运行状态就会出现混乱。请问这个问题该如何处理呢?
二、如果问题一没法处理,那么SDK里,有没有函数接口,去获取主设备当前连接的设备数量还有connectionHandle呢?
谢谢!
Viki Shi:
怀疑是处理不过来,是否测试过分次断开,GAP_LINK_TERMINATED_EVENT事件是否正常?
user4184198:
回复 Viki Shi:
你好Viki:
这似乎是SDK的bug?
因为现在我的测试过程与结果如下:
1、把3个设备减为2个,重复上面提到的过程,也尝试过分次断开。发现只要两个设备断电的间隔时间,要在主设备收到第一个设备断开以后再断开第二个,那样的成功机会就大很多,否则很大概率上还是存在问题。
2、我调用 HCI_EXT_GetConnInfoCmd( uint8 *numAllocConns,uint8 *numActiveConns,hciConnInfo_t *activeConnInfo )函数去跟踪连接状态,发现只要没正常收到所有的GAP_LINK_TERMINATED_EVENT,那么这个函数numActiveConns的返回结果,一直显示存在设备连接的情况(比如存在1台设备连接)。
3、更诡异的是,在出现2的情况下,两台设备都重新上电,主机重新连接上两台设备,但是numActiveConns返回的结果却是3,事实上明明只有两台设备。
请问,你们可以把这个问题进一步确认一下吗,谢谢!
user4184198:
回复 Viki Shi:
你好Viki,
这个问题在E2E找到了答案,确实是SDK的bug,在最新的ble_sdk_2_02_01_18中已经修复了这个问题。
https://e2e.ti.com/support/wireless_connectivity/bluetooth_low_energy/f/538/t/568564?tisearch=e2e-quicksearch&keymatch=HCI_EXT_GetConnInfoCmd
但是在ble_sdk_2_02_01_18中又遇到了问题,HEAPMGR_SIZE的值设置为0.在不改变这个值的情况下,修改MAX_NUM_BLE_CONNS,在3的时候,程序还是正常的,但是再大一点,程序就不正常了。这时,我参照ble_cc26xx_2_01_00_44423,把HEAPMGR_SIZE值改为6144(6K),发现程序还是一样不正常。
请问一下,新的sdk要连接超过3个设备,需要改哪些相关的参数呢,谢谢!
Viki Shi:
回复 user4184198:
不正常是指类似于section placement failed ,unable to allocate space for sections/blocks 。。。。之类的报错吗?
如果是,那还是HEAPMGR_SIZE的问题,建议多试几个其他值
user4184198:
回复 Viki Shi:
在改HEAPMGR_SIZE的时候,我还是非常小心的,1024、2048、3072、4096一点点往上加,MAX_NUM_BLE_CONNS的值都为4,还是运行不正常。
这个版本的SDK跟之前的差别还是挺大的,不知道该改哪里了,这个项目的时间也快到了,请问你们能否加大支持力度呢,谢谢!!
user4184198:
回复 Viki Shi:
Viki,
这个问题能处理吗,谢谢!