Add long write

This commit is contained in:
Sylwester Zielinski
2023-03-29 09:33:56 +02:00
parent bad5f296dc
commit 28c41bcd93

View File

@@ -42,8 +42,11 @@ import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import no.nordicsemi.android.kotlin.ble.client.main.callback.BleGattClient 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.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.client.main.service.BleGattServices
import no.nordicsemi.android.kotlin.ble.core.ServerDevice 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.core.data.GattConnectionState
import no.nordicsemi.android.kotlin.ble.profile.battery.BatteryLevelParser import no.nordicsemi.android.kotlin.ble.profile.battery.BatteryLevelParser
import no.nordicsemi.android.service.DEVICE_DATA import no.nordicsemi.android.service.DEVICE_DATA
@@ -115,13 +118,21 @@ internal class UARTService : NotificationService() {
.launchIn(lifecycleScope) .launchIn(lifecycleScope)
repository.command repository.command
.onEach { rxCharacteristic.write(it.toByteArray()) } .onEach { rxCharacteristic.write(it.toByteArray(), getWriteType(rxCharacteristic)) }
.onEach { repository.onNewMessageSent(it) } .onEach { repository.onNewMessageSent(it) }
.launchIn(lifecycleScope) .launchIn(lifecycleScope)
repository.onInitComplete(device) 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) { private fun stopIfDisconnected(connectionState: GattConnectionState) {
if (connectionState == GattConnectionState.STATE_DISCONNECTED) { if (connectionState == GattConnectionState.STATE_DISCONNECTED) {
stopSelf() stopSelf()