Filter out older BLE results for the same address.

This commit is contained in:
darken
2022-01-03 18:08:26 +01:00
parent 401eccc981
commit 2d97a7300c
@@ -1,6 +1,8 @@
package eu.darken.capod.monitor.core
import eu.darken.capod.common.bluetooth.BleScanner
import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE
import eu.darken.capod.common.debug.logging.log
import eu.darken.capod.common.debug.logging.logTag
import eu.darken.capod.pods.core.PodDevice
import eu.darken.capod.pods.core.PodFactory
@@ -17,6 +19,16 @@ class PodMonitor @Inject constructor(
) {
val pods: Flow<List<PodDevice>> = bleScanner.scan()
.map { result ->
// For each address we only want the newest result, upstream may batch data
result.groupBy { it.device.address }
.values
.map { sameAdrDevs ->
val newest = sameAdrDevs.maxByOrNull { it.timestampNanos }!!
log(TAG, VERBOSE) { "Discarding stale results: ${sameAdrDevs.minus(newest)}" }
newest
}
}
.onStart { emptyList<PodDevice>() }
.map { scanResults ->
scanResults