From 2d97a7300cd93b113323417cb3b96522971627a1 Mon Sep 17 00:00:00 2001 From: darken Date: Mon, 3 Jan 2022 18:08:26 +0100 Subject: [PATCH] Filter out older BLE results for the same address. --- .../java/eu/darken/capod/monitor/core/PodMonitor.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/main/java/eu/darken/capod/monitor/core/PodMonitor.kt b/app/src/main/java/eu/darken/capod/monitor/core/PodMonitor.kt index 58261d6a..f5407618 100644 --- a/app/src/main/java/eu/darken/capod/monitor/core/PodMonitor.kt +++ b/app/src/main/java/eu/darken/capod/monitor/core/PodMonitor.kt @@ -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> = 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() } .map { scanResults -> scanResults