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,13 +129,25 @@ 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
if (measurement == null) {
payload = Payload(hexPayload)
} else {
payload = Payload(measurement.toString())
Log.i("BleListener", "Char received: $payload") Log.i("BleListener", "Char received: $payload")
measurements.add(payload) val base64Payload = Base64.getEncoder().encodeToString(characteristic.value)
publishMeasurement(base64Payload) publishMeasurement(base64Payload)
} }
measurements.add(payload)
if (measurements.size > maxMeasurements) {
measurements.removeFirst()
}
}
private fun publishMeasurement(payload: String) { private fun publishMeasurement(payload: String) {
val accessKey = BuildConfig.API_KEY val accessKey = BuildConfig.API_KEY
val url = BuildConfig.API_BASE_URL val url = BuildConfig.API_BASE_URL
@@ -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,12 +375,8 @@ private fun payloadToMeasurements(payload: Payload): List<Measurement> {
} }
override fun getFormattedValue(): String { override fun getFormattedValue(): String {
val measurement = DecoderIaq.parseMeasurement(payload.payload)
if(measurement == null) {
return payload.payload return payload.payload
} }
return measurement.toString()
}
override fun getIcon(): Int? { override fun getIcon(): Int? {
return R.drawable.baseline_numbers_24 return R.drawable.baseline_numbers_24