From 28c41bcd93a5a09eb65c3222bb9cbd6425929449 Mon Sep 17 00:00:00 2001 From: Sylwester Zielinski Date: Wed, 29 Mar 2023 09:33:56 +0200 Subject: [PATCH] Add long write --- .../android/uart/repository/UARTService.kt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTService.kt b/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTService.kt index adbfa795..a6d42640 100644 --- a/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTService.kt +++ b/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTService.kt @@ -42,8 +42,11 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import no.nordicsemi.android.kotlin.ble.client.main.callback.BleGattClient import no.nordicsemi.android.kotlin.ble.client.main.connect +import no.nordicsemi.android.kotlin.ble.client.main.service.BleGattCharacteristic import no.nordicsemi.android.kotlin.ble.client.main.service.BleGattServices import no.nordicsemi.android.kotlin.ble.core.ServerDevice +import no.nordicsemi.android.kotlin.ble.core.data.BleGattProperty +import no.nordicsemi.android.kotlin.ble.core.data.BleWriteType import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState import no.nordicsemi.android.kotlin.ble.profile.battery.BatteryLevelParser import no.nordicsemi.android.service.DEVICE_DATA @@ -115,13 +118,21 @@ internal class UARTService : NotificationService() { .launchIn(lifecycleScope) repository.command - .onEach { rxCharacteristic.write(it.toByteArray()) } + .onEach { rxCharacteristic.write(it.toByteArray(), getWriteType(rxCharacteristic)) } .onEach { repository.onNewMessageSent(it) } .launchIn(lifecycleScope) repository.onInitComplete(device) } + private fun getWriteType(characteristic: BleGattCharacteristic): BleWriteType { + return if (characteristic.properties.contains(BleGattProperty.PROPERTY_WRITE)) { + BleWriteType.DEFAULT + } else { + BleWriteType.NO_RESPONSE + } + } + private fun stopIfDisconnected(connectionState: GattConnectionState) { if (connectionState == GattConnectionState.STATE_DISCONNECTED) { stopSelf()