找回密码
 立即注册

微信扫码登录

查看: 159|回复: 4

[BLE SDK] 设备做从机时,连接事件、断开事件和实际连接、断开先后顺序不一致。丢失信息

[复制链接]

2

主题

3

回帖

40

积分

英勇黄铜

积分
40
发表于 2024-12-20 18:19:18 | 显示全部楼层 |阅读模式
Information
说明:   建议参照本版块置顶帖内容输入必要信息
芯片型号: TLSR825x
SDK及版本: Bluetooth LE Multi Connection V4.0.1.3
SLAVE_MAX_NUM设置为1.

当连接对象迅速断开,再被另一个主机扫描并建立连接后。从app_controller_event_callback的回调事件中,最先获取的evt为HCI_SUB_EVT_LE_CONNECTION_COMPLETE,再紧跟着获取HCI_EVT_DISCONNECTION_COMPLETE事件。此时由于断连,会执行dev_char_info_delete_by_connhandle从而将刚刚连接的对象连接handle删除掉。此时呈现出的结果是连接着,但是由于conn_dev_list内的信息被删除了,导致后续一些参数无法正常获取。有办法解决吗?

0

主题

24

回帖

122

积分

版主

积分
122
发表于 2024-12-23 17:16:53 | 显示全部楼层
上述场景事件的上报的顺序:HCI_SUB_EVT_LE_CONNECTION_COMPLETE(第1次连接建立) ---> HCI_EVT_DISCONNECTION_COMPLETE(第1次连接断开) ---> HCI_SUB_EVT_LE_CONNECTION_COMPLETE(第2次连接建立),在第2次连接建立时会调用dev_char_info_insert_by_conn_event(pConnEvt),这个时候conn_dev_list内的信息已经更新到新的连接。

2

主题

3

回帖

40

积分

英勇黄铜

积分
40
 楼主| 发表于 7 天前 | 显示全部楼层
一般情况下是这样的没错。
我用的是一台安卓,一台ios测试,多次实验测试下来,当第一次断开(由主机端发起断连请求)和第二次连接(主机端扫描并建立连接)的速度发生的足够快时,通过打印日志,实际的场景事件上报顺序为:
HCI_SUB_EVT_LE_CONNECTION_COMPLETE(第1次连接建立)-->HCI_SUB_EVT_LE_CONNECTION_COMPLETE(第2次连接建立)--->HCI_EVT_DISCONNECTION_COMPLETE(第1次连接断开)
从而导致第二次通过dev_char_info_insert_by_conn_event(pConnEvt)保存的信息被第一次断开连接的事件给清除掉了

2

主题

3

回帖

40

积分

英勇黄铜

积分
40
 楼主| 发表于 7 天前 | 显示全部楼层
并非必现,但是概率存在,测试下来复现率不算低

0

主题

24

回帖

122

积分

版主

积分
122
发表于 5 天前 | 显示全部楼层
请问能提供更详细的复现测试场景、设备和步骤吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Telink forum ( 沪ICP备17008231号-1 )

GMT+8, 2024-12-31 01:42 , Processed in 0.092854 second(s), 20 queries .

Powered by Telink 隐私政策

泰凌微电子版权所有 © 。保留所有权利。 2024

快速回复 返回顶部 返回列表