From d02311f058284eac0b3f2ca13bbc06e76e0d0809 Mon Sep 17 00:00:00 2001 From: Stefan Zollinger Date: Thu, 21 Mar 2024 14:24:27 +0100 Subject: [PATCH] fix: do not forward invalid payloads --- .../example/sensortestingapp/KirbyDevice.kt | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/example/sensortestingapp/KirbyDevice.kt b/app/src/main/java/com/example/sensortestingapp/KirbyDevice.kt index fbdcf9c..d2780f0 100644 --- a/app/src/main/java/com/example/sensortestingapp/KirbyDevice.kt +++ b/app/src/main/java/com/example/sensortestingapp/KirbyDevice.kt @@ -129,11 +129,23 @@ class KirbyDevice( private fun addMeasurement(characteristic: BluetoothGattCharacteristic) { val hexPayload = characteristic.value.toHexString().substring(2) - val payload = Payload(hexPayload) - val base64Payload = Base64.getEncoder().encodeToString(characteristic.value) - Log.i("BleListener", "Char received: $payload") + val measurement = DecoderIaq.parseMeasurement(hexPayload) + var payload : Payload + if (measurement == null) { + payload = Payload(hexPayload) + } else { + payload = Payload(measurement.toString()) + Log.i("BleListener", "Char received: $payload") + val base64Payload = Base64.getEncoder().encodeToString(characteristic.value) + publishMeasurement(base64Payload) + } + measurements.add(payload) - publishMeasurement(base64Payload) + + if (measurements.size > maxMeasurements) { + measurements.removeFirst() + } + } private fun publishMeasurement(payload: String) { @@ -163,6 +175,7 @@ class KirbyDevice( } private val measurements = ArrayList() + private val maxMeasurements = 20 private val statuses = EnumSet.noneOf(DeviceStatus::class.java) @@ -362,11 +375,7 @@ private fun payloadToMeasurements(payload: Payload): List { } override fun getFormattedValue(): String { - val measurement = DecoderIaq.parseMeasurement(payload.payload) - if(measurement == null) { - return payload.payload - } - return measurement.toString() + return payload.payload } override fun getIcon(): Int? {