fix: do not forward invalid payloads
This commit is contained in:
@@ -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? {
|
||||||
|
|||||||
Reference in New Issue
Block a user