Rav*_*rma 2 android bluetooth-lowenergy obd-ii gatt bluetooth-gatt
我的应用程序能够成功连接到 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.
Run Code Online (Sandbox Code Playgroud)
应用程序开始与设备通信,但一段时间后它onConnectionStateChange在BluetoothGattCallback. 以下是来自应用程序的日志:
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.
Run Code Online (Sandbox Code Playgroud)
无法找到BLE_HCI_INSTANT_PASSED状态代码背后的任何原因。
对此的任何帮助都会有所帮助。
小智 6
当数据通过 BLE 传输时,数据传输只能在称为“连接事件”的同步时间点开始。在 BLE 链路层,可以提出一些与这些同步点相关的特殊请求。他们是:
通过空中发送时,这些链路层请求中的每一个都包含要更改的“即时”。“即时”是将来应用更改的“连接事件”。
在链路层,BLE 是可靠的。这意味着每个链路层数据包都必须被另一方确认。在嘈杂的 RF 环境中,链路层数据包可能需要多次重试才能实际发送。这意味着数据包可能会在最初预期之后到达许多“连接事件”。
如果在应该应用更改的“即时”之后收到上述数据包之一,则根据定义,BLE 芯片必须以 0x28(即时通过)为由断开连接
有关该主题的更多详细信息,Bluetooth SIG 网站上提供的Bluetooth Core Specification是一个很好的参考: