mirror of
https://github.com/d4rken-org/capod.git
synced 2026-09-14 18:26:11 -04:00
Filter out older BLE results for the same address.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user