From 7f09f6ab6c662d5b6540758c3136c225b9d040a8 Mon Sep 17 00:00:00 2001 From: Azalea Gui Date: Tue, 24 Jan 2023 12:10:52 -0500 Subject: [PATCH] [U] Update usage in service --- app/src/main/java/org/hydev/wearsync/MyService.kt | 15 ++++++++------- .../org/hydev/wearsync/bles/BluetoothHandler.kt | 6 +++++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/hydev/wearsync/MyService.kt b/app/src/main/java/org/hydev/wearsync/MyService.kt index 536f336..1c8f6d3 100644 --- a/app/src/main/java/org/hydev/wearsync/MyService.kt +++ b/app/src/main/java/org/hydev/wearsync/MyService.kt @@ -12,11 +12,12 @@ import com.influxdb.client.kotlin.InfluxDBClientKotlin import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob -import kotlinx.coroutines.channels.Channel -import kotlinx.coroutines.flow.consumeAsFlow import kotlinx.coroutines.launch import org.hydev.wearsync.BatteryInfo.Companion.batteryInfo import org.hydev.wearsync.bles.BluetoothHandler.Companion.ble +import org.hydev.wearsync.bles.decoders.BatteryDecoder +import org.hydev.wearsync.bles.decoders.HeartRateDecoder +import org.hydev.wearsync.bles.decoders.IDecoder import timber.log.Timber @@ -41,13 +42,13 @@ class MyService : Service() fun startCollect() { - collect(ble.heartRateChannel) - collect(ble.batteryChannel) + observe() + observe() } - private fun collect(channel: Channel) { - scope.launch { - channel.consumeAsFlow().collect { + private inline fun > observe() { + ble.observeAny { + scope.launch { try { println("Adding ${it.javaClass.simpleName} to influxdb") influx add it diff --git a/app/src/main/java/org/hydev/wearsync/bles/BluetoothHandler.kt b/app/src/main/java/org/hydev/wearsync/bles/BluetoothHandler.kt index 39e5652..91a8931 100644 --- a/app/src/main/java/org/hydev/wearsync/bles/BluetoothHandler.kt +++ b/app/src/main/java/org/hydev/wearsync/bles/BluetoothHandler.kt @@ -33,11 +33,15 @@ internal class BluetoothHandler private constructor(context: Context) { val listeners = HashMap, MutableList<(Any) -> Unit>>() @Suppress("UNCHECKED_CAST") - inline fun > observe(crossinline cb: (M) -> Unit) { + inline fun > observe(crossinline cb: (M) -> Unit) { (listeners[D::class] ?: error("Cannot observe unknown decoder class ${D::class}")) .add { cb(it as M) } } + inline fun > observeAny(noinline cb: (Any) -> Unit) { + (listeners[D::class] ?: error("Cannot observe unknown decoder class ${D::class}")).add(cb) + } + private suspend fun BluePeri.observe(dec: IDecoder) { val cls = dec::class listeners[cls] = ArrayList()