蓝牙通过过程中异常断开后,能发现蓝牙信号,但是无法再继续连接了。

5个职位/ 0个新职位
最后发表
intretech_XM
离线
最后看到:6天1小时前
加入:2016-02-26 23:11
蓝牙通过过程中异常断开后,能发现蓝牙信号,但是无法再继续连接了。

嗨对话框:

我使用DA的祝福电子狗与DA14580通信的时候,在数据通信过程中发现蓝牙会断开,这时候能发现蓝牙信号,但是无法再与DA14580连接了,现象是一连马上就断开了。请问下 这是什么问题?

我使用第三方工具去连接也不行,如使用蓝色主宰去连接,提示”““超时质问外围”错误。

必须重启设备才能连接,我使用SDK版本是3.0.6。

下面是我用柏树电子狗抓的连接日志,也是异常情况下,无法连接的日志。

[16:53:36:525]: 'Resolve and Set Peer Device BD Address'请求发送
[16:53:36:525]: BD地址类型:PUBLIC_ADDRESS
[16:53:36:525]: BD地址:02:0F:00:03:04:17:00:00
[16:53:36:552]: 'Command Status'事件收到
[16:53:36:552]:状态:BLE_STATUS_OK
[16:53:36:552]: 'Resolve and Set Peer Device BD Address Response'事件
[16:53:36:552]:状态:0x01
[16:53:36:552]: 'Command Complete'事件收到
[16:53:36:552]:状态:BLE_STATUS_OK
[16:53:36:552]: '建立连接'请求已发送
[16:53:36:552]: BD地址类型:PUBLIC_ADDRESS
[16:53:36:552]: BD地址:02:0F:00:03:04:17:00:00
[16:53:36:557]: 'Command Status'事件收到
[16:53:36:557]:状态:BLE_STATUS_OK
[16:53:36:844]:已收到“建立连接响应”事件
[16:53:37:148]: '当前连接参数'事件收到
[16:53:37:148]: HCI状态:0x00
[16:53:37:148]:连接间隔:8.75 ms
[16:53:37:148]: Slave时延:0
[16:53:37:148]:监督超时:100毫秒
[16:53:37:149]: 'Command Complete'事件收到
[16:53:37:149]:状态:BLE_STATUS_OK
[16:53:37:149]: '连接终止通知'事件
[16:53:37:149]:原因:CONNECTION_FAILED_TO_BE_ESTABLISHED
[16:53:37:149]: 'Get local device security keys'请求发送
[16:53:37:202]: 'Command Status'事件收到
[16:53:37:202]:状态:BLE_STATUS_OK
[16:53:37:202]:收到'Get local device security keys response'事件
[16:53:37:202]:密钥标志:INITIATOR_ENCRYPTION_INFORMATION、INITIATOR_IDENTITY_INFORMATION、INITIATOR_SIGNATURE_KEY、RESPONDER_ENCRYPTION_INFORMATION、RESPONDER_IDENTITY_INFORMATION、RESPONDER_SIGNATURE_KEY
[16:53:37:202]: Long Term Key (LTK): [D6:93:E8:A4:23:55:48:99:1D:77:61:E6:63:2B:10:8E]
[16:53:37:202]: Encrypted diverfier (EDIV) and Random Number: [99:1F:26:1E:F6:09:97:2E:AD:7E]
[16:53:37:202]:身份解析密钥(IRK): [0A:2D:F4:65:E3:BD:7B:49:1E:B4:C0:95:95:13:46:73]
[16:53:37:202]:识别地址:[0x00A0500A0D27, PUBLIC_ADDRESS]
[16:53:37:202]: Connection Signature resolve Key (CSRK): [90:D5:06:95:92:ED:91:D7:A8:9E:2C:DC:4A:93:5B:F9]
[16:53:37:203]: 'Command Complete'事件收到
[16:53:37:203]:状态:BLE_STATUS_OK

设备:
Qinjiny_Dialog
离线
最后看到:4个月5天前
工作人员
加入:2016-11-01 05:47
SDK3.0.6版本过旧了,祝福

SDK3.0.6版本过旧了,祝福堆栈存在一些已知的问题会导致你所见的情况发生,我们这边建议您把工程建立在比较新的SDK上(5.0.2或以上)

这边提供一个基于3.0.6的小补丁,你可以尝试一下是否能改善情况。

请按以下内容修改至dk_apps / src / ip /祝福/会/ src / rwble / rwble.c

@@ void $Sub$$BLE_EVENT_Handler(void)

lld_evt_end_isr ();

+ //做一个SW重置
+ //重置BLE状态机
+ ble_master_soft_rst_setf (1);
+同时(ble_master_soft_rst_getf ());
+ //如果正在进行加密,则重新启动它
+如果(ble_aes_start_getf ())
+ {
+ ble_aescntl_set (BLE_AES_START_BIT);
+}
+
rwble_last_event = BLE_EVT_END;



@@ void $Sub$ BLE_EVENT_Handler(void)

# endif / /指标
lld_evt_end_isr ();

+ //做一个SW重置
+ //重置BLE状态机
+ ble_master_soft_rst_setf (1);
+同时(ble_master_soft_rst_getf ());
+ //如果正在进行加密,则重新启动它
+如果(ble_aes_start_getf ())
+ {
+ ble_aescntl_set (BLE_AES_START_BIT);
+}
+
rwble_last_event = BLE_EVT_END;

intretech_XM
离线
最后看到:6天1小时前
加入:2016-02-26 23:11
嗨Qinjiny_Dialog:

嗨Qinjiny_Dialog:

谢谢你的回答,我将尽快添加你给的补丁,测试下,并将结果返回给你。

还有在SDK 5.0.2里面有两个空白子BLE_EVENT_Handler美元美元(void)函数,和你的这个补丁一样,但是3.0.6里面只有一个,是否只需要改这个吗?

Qinjiny_Dialog
离线
最后看到:4个月5天前
工作人员
加入:2016-11-01 05:47
这个只是针对已知常见问题的修复

这个只是针对已知常见问题的解决,更新的SDK里还有其他改动,可以的话还是开关过去比较好

intretech_XM
离线
最后看到:6天1小时前
加入:2016-02-26 23:11
嗨Qinjiny_Dialog:

嗨Qinjiny_Dialog:

好的,非常感谢!目前添加了这个补丁,经过测试,应该是有解决了目前的问题。我将在后面移植到最新的SDK上面。