From ea0c5f3679a5efa2546c9965490e1959c72a3d0e Mon Sep 17 00:00:00 2001 From: Erik Johansson Date: Wed, 21 Nov 2018 08:44:57 +0100 Subject: [PATCH] Inlife: clamp values to valid range --- .../core/bluetooth/BluetoothCommunication.java | 10 ++++++++++ .../openscale/core/bluetooth/BluetoothInlife.java | 10 +++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothCommunication.java b/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothCommunication.java index 0efd579a..01bfa3a1 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothCommunication.java +++ b/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothCommunication.java @@ -372,6 +372,16 @@ public abstract class BluetoothCommunication { return stringBuilder.substring(0, stringBuilder.length() - 1); } + protected float clamp(double value, double min, double max) { + if (value < min) { + return (float)min; + } + if (value > max) { + return (float)max; + } + return (float)value; + } + protected byte xorChecksum(byte[] data, int offset, int length) { byte checksum = 0; for (int i = offset; i < offset + length; ++i) { diff --git a/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothInlife.java b/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothInlife.java index 57c89d4f..9607e118 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothInlife.java +++ b/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothInlife.java @@ -221,12 +221,12 @@ public class BluetoothInlife extends BluetoothCommunication { ScaleMeasurement measurement = new ScaleMeasurement(); measurement.setWeight(weight); - measurement.setFat((float) fat); - measurement.setWater((float) water); - measurement.setMuscle((float) muscle); - measurement.setBone((float) bone); + measurement.setFat(clamp(fat, 5, 80)); + measurement.setWater(clamp(water, 5, 80)); + measurement.setMuscle(clamp(muscle, 5, 80)); + measurement.setBone(clamp(bone, 0.5, 8)); measurement.setLbm(lbm); - measurement.setVisceralFat((float) visceral); + measurement.setVisceralFat(clamp(visceral, 1, 50)); addScaleData(measurement);