【发布时间】:2018-01-25 16:27:19
【问题描述】:
我的应用程序能够成功连接到 BLE 外围设备(OBDII/J1939 设备)设备。
2018-01-24 14:58:38,413 INFO LogUtil - GATT Server Status = (0) : BLE_HCI_STATUS_CODE_SUCCESS(0x00)
2018-01-24 14:58:38,414 INFO LogUtil - GATT Server New State = (2) : STATE_CONNECTED
2018-01-24 14:58:38,414 INFO LogUtil - Connected to GATT server.
应用程序开始与设备通信,但一段时间后,它在BluetoothGattCallback 的回调实现中收到了onConnectionStateChange 中的GATT 服务器断开消息。以下是应用程序的日志:
2018-01-24 15:07:46,396 INFO LogUtil - GATT Server Status = (40) : BLE_HCI_INSTANT_PASSED(0x28)
2018-01-24 15:07:46,397 INFO LogUtil - GATT Server New State = (0) : STATE_DISCONNECTED
2018-01-24 15:07:46,398 INFO LogUtil - Disconnected from GATT server.
无法找到BLE_HCI_INSTANT_PASSED 状态码背后的任何原因。
对此的任何帮助都会有所帮助。
【问题讨论】:
-
这种情况是一直发生还是只发生过一次?如果您阅读蓝牙核心规范中的链路层规范,您可以看到如果连接不稳定,它们可能会在连接参数更新和通道映射更新期间发生。
-
@Emil 不,这不会一直发生。有时连接不稳定。连接中断并出现 HCI 错误代码,例如 BLE_HCI_STATUS_CODE_LMP_RESPONSE_TIMEOUT。建立连接后,我们不会更改连接参数。
-
我认为最好的调试方法是使用空气嗅探器。然后您会看到每个数据包以及失败的原因。
标签: android bluetooth-lowenergy gatt obd-ii bluetooth-gatt