fix: do not forward invalid payloads

This commit is contained in:
Stefan Zollinger
2024-03-21 14:24:27 +01:00
parent fa43f5d65c
commit d02311f058

View File

@@ -129,11 +129,23 @@ class KirbyDevice(
private fun addMeasurement(characteristic: BluetoothGattCharacteristic) { private fun addMeasurement(characteristic: BluetoothGattCharacteristic) {
val hexPayload = characteristic.value.toHexString().substring(2) val hexPayload = characteristic.value.toHexString().substring(2)
val payload = Payload(hexPayload) val measurement = DecoderIaq.parseMeasurement(hexPayload)
val base64Payload = Base64.getEncoder().encodeToString(characteristic.value) var payload : Payload
Log.i("BleListener", "Char received: $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) measurements.add(payload)
publishMeasurement(base64Payload)
if (measurements.size > maxMeasurements) {
measurements.removeFirst()
}
} }
private fun publishMeasurement(payload: String) { private fun publishMeasurement(payload: String) {
@@ -163,6 +175,7 @@ class KirbyDevice(
} }
private val measurements = ArrayList<Payload>() private val measurements = ArrayList<Payload>()
private val maxMeasurements = 20
private val statuses = EnumSet.noneOf(DeviceStatus::class.java) private val statuses = EnumSet.noneOf(DeviceStatus::class.java)
@@ -362,11 +375,7 @@ private fun payloadToMeasurements(payload: Payload): List<Measurement> {
} }
override fun getFormattedValue(): String { override fun getFormattedValue(): String {
val measurement = DecoderIaq.parseMeasurement(payload.payload) return payload.payload
if(measurement == null) {
return payload.payload
}
return measurement.toString()
} }
override fun getIcon(): Int? { override fun getIcon(): Int? {