Коды состояния 132 и 133 от BLE112

Я пишу приложение для Android для связи с моим устройством BLE112, используя собственные библиотеки Bluetooth в Android 4.4.2 kit kat.

В большинстве случаев моя характеристика Read никогда не возвращается. Когда устройство выключается, я получаю десятичный статус 133, что, вероятно, означает, что устройство выключено.

Однако иногда я получаю десятичное число 132 для всех своих чтений. Мне интересно, где я могу найти эти коды. Я вытащил документы из bluegiga, но у них нет кодов ошибок в этом диапазоне.


person Thom    schedule 20.05.2014    source источник
comment
Удалось ли вам получить на это ответ? 132 не является одной из констант состояния android.bluetooth.BluetoothGatt. Это происходит со мной, когда HTC One подключается к TI CC2540, в то время как другие мои телефоны подключаются правильно.   -  person sorianiv    schedule 27.05.2014
comment
@sorianiv Мы считаем, что это проблема с сопряжением. Мы собираемся попробовать таймер, который ждет 2 секунды, а затем отключается и снова подключается. Ранние тесты показывают, что это устранило проблему.   -  person Thom    schedule 27.05.2014
comment
Отключить и снова подключить в какой момент? Я попытался подождать несколько секунд после обнаружения службы, но перед чтением, но это не сработало. Это может быть связано с пейрингом; мое устройство BLE защищено паролем (я уверен, что ввел его правильно). Я только что обнаружил, что 132 должен быть GATT_BUSY android.googlesource.com/platform/external/bluetooth/bluedroid/   -  person sorianiv    schedule 28.05.2014
comment
@sorianiv После выдачи чтения, но до получения кода результата. Я все еще тестирую свой живой код.   -  person Thom    schedule 28.05.2014
comment
Я только что попробовал, но это не сработало для меня. Пожалуйста, скажите мне, есть ли у вас какие-либо успехи. Спасибо   -  person sorianiv    schedule 28.05.2014
comment
@sorianiv Я понял свою проблему. Пожалуйста, просмотрите мой ответ и проголосуйте за него, если он полезен.   -  person Thom    schedule 29.05.2014


Ответы (2)


Надеюсь это поможет

https://stackoverflow.com/a/41718665/911389

GATT_INTERNAL_ERROR 0x0081 (129)

GATT_WRONG_STATE 0x0082 (130)

GATT_DB_FULL 0x0083 (131)

GATT_BUSY 0x0084 (132)

ГАТТ_ОШИБКА 0x0085 (133)

Проголосовать Поднимите настроение :)

person Ashraf    schedule 18.01.2017

Моя проблема была вызвана проблемой синхронизации. На самом деле я читал характеристики до того, как устройство полностью соединилось. Чтобы решить эту проблему, я добавил IntentFilter, когда начал подключение к устройству:

    IntentFilter filterScan = new IntentFilter();
    filterScan.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
    bluetoothReceiver = new BluetoothReceiver();
    context.registerReceiver(bluetoothReceiver, filterScan);

а затем незарегистрированный при закрытии, конечно:

    if(bluetoothReceiver != null) {
        context.unregisterReceiver(bluetoothReceiver);
        bluetoothReceiver = null;
    }

А вот и приемник:

private class BluetoothReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        BluetoothDevice deviceIn = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

        if (deviceIn != null) {
            if (deviceIn.equals(device)) {
                if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action)) {
                    int bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, BluetoothDevice.BOND_NONE);
                    if(bondState == BluetoothDevice.BOND_BONDED){
                        //now start reading
                    }
                }
            }
        }
    }
}

Надеюсь это поможет.

person Thom    schedule 29.05.2014