TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2640多连接的异常处理问题

有几个问题请教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,

这个问题能处理吗,谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » CC2640多连接的异常处理问题
分享到: 更多 (0)