BLE UART Циклы команды / ответа / подтверждения

Я конвертирую очень сложный цикл записи / чтения / записи, написанный на собственном стеке BLE, и мне интересно, возможен ли следующий шаблон для обработки в RxAndroidBLE (код Kotlin)

fun sendCommandList(connection: RxBleConnection, commands: Array<String>) {
    Observable.fromArray(commands)
        .flatMapIterable { it.asIterable() } // convert to individual commands
        .map { it.toByteArray() }
        .map {
            connection.writeCharacteristic(TX_CHAR_UUID, it)
                .flatMap { bytes -> connection.readCharacteristic((RX_CHAR_UUID)) }
                .flatMap { bytes -> val ackNackBytes = processResponse(bytes); connection.writeCharacteristic(TX_CHAR_UUID, ackNackBytes) }

        }
        .subscribeBy( onError = { }, onComplete = { }, onNext = { })
}

Я просто пытаюсь проработать код до того, как получу доступ к оборудованию, поэтому не могу проверить это в данный момент, и мне интересно, возможно ли это. Я больше беспокоюсь о части чтения, если полный ответ может быть не в пределах readCharacteristic(). Если нет, то при длительном прокачке чтения в буфер, который может обрабатываться по одному байту за раз, и удалении только тех байтов, которые составляют правильный ответ, и чтении из него.

Мысли? Это похоже на обычную модель использования, но я не смог найти ничего похожего на образцы.

0 ответов

Другие вопросы по тегам