Должен ли я получать BluetoothGatt.GATT_SUCCESS также при отключении от устройства?

#android #bluetooth #bluetooth-lowenergy #android-bluetooth

#Android #bluetooth #bluetooth-низкое энергопотребление #android-bluetooth

Вопрос:

Я работаю с пользовательскими устройствами и пытаюсь правильно управлять файлом Bluetooth.

Моя единственная проблема — не получать 0 ( BluetoothGatt.GATT_SUCCESS ), когда я считываю status значение вместе со значением 2 для newState переменной (что означает BluetoothProfile.STATE_DISCONNECTED ) в методе onConnectionStateChange . Вместо этого я получаю 8, что невозможно отследить в BluetoothGatt BluetoothProfile классах nor.

Все соединения работают нормально, я отлично считываю и записываю значения.

(1) Это должно быть так? Почему я читаю восьмерку?

Я видел много status значений в моем onConnectionStateChange методе: 8, 19, 133 и т.д.

(2) Где я могу проверить эти значения?

Заранее спасибо


РЕДАКТИРОВАТЬ: в файле api.h много значений, мы искали не в том месте.

8: 0x08 = GATT CONN TIMEOUT
19: 0x13 = GATT CONN TERMINATE PEER USER
133: 0x85 = GATT_ERROR

Ответ №1:

Коды ошибок int необходимо преобразовать в HEX и сопоставить со значениями в следующем файле:

https://android.googlesource.com/platform/external/bluetooth/bluedroid/ /android-5.1.1_r13/stack/include/gatt_api.h

В упомянутых вами случаях:

 8 = GATT_INSUF_AUTHORIZATION
19 = GATT_RSP_WRITE 
133 = GATT_ERROR
  

Комментарии:

1. К сожалению, названия не имеют смысла, однако источник выглядит красиво. Есть какие-нибудь идеи по вопросу (1) : должно ли это быть так? Почему я читаю восьмерку?

2. Похоже, какая-то проблема с аутентификацией. Возможно, перед подключением к устройству BLE вам необходимо выполнить сопряжение с ним … это зависит от требований устройства.

3. Когда я вынимаю аккумулятор из устройства при подключении, он по-прежнему считывается status как 8, так что я предполагаю, что это не связано с какой-либо аутентификацией. Есть еще идеи?

Ответ №2:

Ответ — нет.

Я не получал BluetoothGatt.GATT_SUCCESS , потому что соединение было закрыто другим концом. Если gatt.disconnect() выполняется, я читаю status = BluetoothGatt.GATT_SUCCESS .