Как реализовать синхронную очередь задач для RxAndroidBle - PullRequest
0 голосов
/ 11 сентября 2018

Резюме

Я использую RxAndroidBle в качестве коммуникационной платформы BLE в моем проекте.Я получаю данные из уведомления после записи следующим образом:

public Observable<byte[]> requestCharacteristic(UUID notificationUuid, UUID writeUuid, byte[] writeData) {
    return Observable.zip(
             connectionObservable.concatMap(rxConnection -> rxConnection.setupNotification(notificationUuid))
                 .concatMap(rxConnection -> rxConnection).first(),
             connectionObservable.concatMap(rxConnection -> rxConnection.writeCharacteristic(writeUuid, writeData)),
             (responseBytes, writeBytes) -> { return responseBytes; }
    );
}

Вопрос

Поскольку устройство BLE должно гарантировать запрос синхронизации с помощью мобильного телефона, запрос должен быть выполненпосле завершения запроса.Я не знаком с RX.Как я могу сделать FIFO способ выполнить вышеуказанный код?

1 Ответ

0 голосов
/ 12 сентября 2018

Как вы заявили, ваш код будет работать для одного выполнения, но при наличии нескольких параллельных запросов они не будут сериализованы. Вам нужно добавить внешнюю синхронизацию для функции requestCharacteristic().

Существует уже отвеченный вопрос о сохранении постоянного соединения с последовательной обработкой записи / уведомлений , который может быть именно тем, что вы ищете. Ответ был создан для версии библиотеки, основанной на RxJava1, но не должно быть слишком сложно настроить его на RxJava2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...