diff --git a/src/androidTest/java/de/dennisguse/opentracks/sensors/sensorData/AggregatorBarometerTest.java b/src/androidTest/java/de/dennisguse/opentracks/sensors/sensorData/AggregatorBarometerTest.java
index c3960161e..27466970d 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/sensors/sensorData/AggregatorBarometerTest.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/sensors/sensorData/AggregatorBarometerTest.java
@@ -24,7 +24,7 @@ public class AggregatorBarometerTest {
addSensorValue(subject, new float[]{1015f, 1015.01f, 1015.02f, 1015.03f, 1015.04f, 1015.05f, 1015.06f, 1015.07f, 1015.08f, 1015.09f, 1015.10f, 1015.11f, 1015.12f, 1015.13f, 1018f, 1018.1f, 1018.1f, 1018.1f, 1018.1f});
// then
- Assert.assertEquals(0f, subject.aggregatedValue.gain_m(), 0.01);
- Assert.assertEquals(15f, subject.aggregatedValue.loss_m(), 0.01);
+ Assert.assertEquals(0f, subject.output.gain_m(), 0.01);
+ Assert.assertEquals(15f, subject.output.loss_m(), 0.01);
}
}
\ No newline at end of file
diff --git a/src/androidTest/java/de/dennisguse/opentracks/sensors/sensorData/SensorDataCyclingTest.java b/src/androidTest/java/de/dennisguse/opentracks/sensors/sensorData/SensorDataCyclingTest.java
index 51b41cd15..f7f06e13e 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/sensors/sensorData/SensorDataCyclingTest.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/sensors/sensorData/SensorDataCyclingTest.java
@@ -2,6 +2,7 @@ package de.dennisguse.opentracks.sensors.sensorData;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -12,7 +13,6 @@ import java.time.Instant;
import de.dennisguse.opentracks.data.models.Cadence;
import de.dennisguse.opentracks.data.models.Distance;
-import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.sensors.UintUtils;
import de.dennisguse.opentracks.sensors.driver.CyclingCadenceBluetooth;
import de.dennisguse.opentracks.sensors.driver.CyclingDistanceSpeedBluetooth;
@@ -93,7 +93,7 @@ public class SensorDataCyclingTest {
// then
// TODO See #953
// assertEquals(60, current.getValue().getRPM(), 0.01);
- assertEquals(Cadence.of(0), current.getAggregatedValue(Instant.MIN));
+ assertNull(current.getAggregatedValue(Instant.MIN));
}
@Test
@@ -120,11 +120,10 @@ public class SensorDataCyclingTest {
current.add(Instant.MIN, new CyclingDistanceSpeedBluetooth.WheelData(UintUtils.UINT32_MAX - 1, 1024));
current.add(Instant.MIN, new CyclingDistanceSpeedBluetooth.WheelData(0, 2048));
-
// then
// TODO See #953
// assertEquals(2, current.getValue().getDistance().toM(), 0.01);
// assertEquals(2, current.getValue().getSpeed().toMPS(), 0.01);
- assertEquals(new AggregatorCyclingDistanceSpeed.Data(Distance.ZERO, Distance.ZERO, Speed.ZERO), current.getAggregatedValue(Instant.MIN));
+ assertNull(current.getAggregatedValue(Instant.MIN));
}
}
\ No newline at end of file
diff --git a/src/main/java/de/dennisguse/opentracks/sensors/sensorData/Aggregator.java b/src/main/java/de/dennisguse/opentracks/sensors/sensorData/Aggregator.java
index d61cd8a5a..0cec85cc3 100644
--- a/src/main/java/de/dennisguse/opentracks/sensors/sensorData/Aggregator.java
+++ b/src/main/java/de/dennisguse/opentracks/sensors/sensorData/Aggregator.java
@@ -1,17 +1,20 @@
package de.dennisguse.opentracks.sensors.sensorData;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import java.time.Duration;
import java.time.Instant;
-public abstract class Aggregator {
+public abstract class Aggregator {
private static final Duration MAX_SENSOR_DATE_SET_AGE = Duration.ofSeconds(5);
- protected Raw previous;
+ @Nullable
+ protected Raw previous;
- protected Output aggregatedValue;
+ //TODO Make private
+ protected OutputType output;
private final String sensorAddress;
private final String sensorName;
@@ -25,57 +28,47 @@ public abstract class Aggregator {
return sensorName != null ? sensorName : sensorAddress;
}
- public final void add(Instant now, Input current) {
- Raw next = new Raw<>(now, current);
+ public final void add(Instant now, InputType current) {
+ Raw next = new Raw<>(now, current);
computeValue(next);
previous = next;
}
- protected abstract void computeValue(Raw current);
+ protected abstract void computeValue(Raw current);
/**
* @return did we process data from a sensor.
* NOTE: for some sensors this may require more than one measurement.
*/
public boolean hasReceivedData() {
- return aggregatedValue != null;
+ return output != null;
}
- @Deprecated //TODO Remove: for sensor there is no default value. Make getAggregatedValue() @Nullable
- @NonNull
- protected abstract Output getNoneValue();
-
- @Deprecated //TODO Removed; just implemented for refactoring. This code is bypassing core functionality of this class.
- public Output getAggregatedValue() {
- return aggregatedValue;
- }
-
- @NonNull
- public Output getAggregatedValue(Instant now) {
- if (!hasReceivedData()) {
- return getNoneValue();
- }
+ @Nullable
+ protected OutputType getAggregatedValue(Instant now) {
if (isOutdated(now)) {
- resetImmediate();
+ resetOutdated();
}
- return aggregatedValue;
+ return output;
}
@NonNull
- public SensorData