我使用Gatt Server 这个例程, 实现了 与一个 NUKI FOB的连接,也正常工作了,但是在Terminal 里老是有如下的报错和警告:
W (154441) BT_HCI: hcif disc complete: hdl 0x1, rsn 0x13
E (154171) BT_GATT: unexpected handle value confirmation
虽然不影响程序运行,但是有点影响程序里面Event的相应速度。
这是什么错误? 我找不到 这个 BT_GATT 和 BT_HCI 从哪里冒出来的? 怎么解决他们? 我毫无思路,请求帮助,谢谢大家!
关于 BT_GATT 错误 和 BT_HCI 警告 提示
-
- Posts: 18
- Joined: Tue Sep 17, 2019 11:38 am
Re: 关于 BT_GATT 错误 和 BT_HCI 警告 提示
没有人知道么?或者一点提示也好呀。
-
- Posts: 41
- Joined: Thu May 04, 2023 3:49 am
Re: 关于 BT_GATT 错误 和 BT_HCI 警告 提示
“unexpected handle value confirmation” 的 打印位置在 “components/bt/host/bluedroid/stack/gatt/gatt_sr.c”的“gatts_process_value_conf” 函数中,该函数用于处理 GATT client 发送来的 "Handle Value Confirmation" 消息。
从该函数中可以看出只有 “GATT_HANDLE_IS_VALID”的时候才会出现该问题,即 handle 为 0。
结合 “ BT_HCI: hcif disc complete: hdl 0x1, rsn 0x13” 可以看出 client 主动断开了连接,因此,可以推测:在 client 断开后 handle 被复位成了 0,但是还有 "Handle Value Confirmation" 消息没有完成,所以出现了这种错误。
这个错误只是打印,不会报任何事件到上层,因此应该不会影响程序里面Event的相应速度。可以通过下面的2中方式之一解决:
1-client 不要在收到 server 信息后立即断开。
2-直接注释掉该打印。
从该函数中可以看出只有 “GATT_HANDLE_IS_VALID”的时候才会出现该问题,即 handle 为 0。
结合 “ BT_HCI: hcif disc complete: hdl 0x1, rsn 0x13” 可以看出 client 主动断开了连接,因此,可以推测:在 client 断开后 handle 被复位成了 0,但是还有 "Handle Value Confirmation" 消息没有完成,所以出现了这种错误。
这个错误只是打印,不会报任何事件到上层,因此应该不会影响程序里面Event的相应速度。可以通过下面的2中方式之一解决:
1-client 不要在收到 server 信息后立即断开。
2-直接注释掉该打印。
Who is online
Users browsing this forum: Google [Bot] and 48 guests