diff --git a/src/main/java/de/dennisguse/opentracks/sensors/GainManager.java b/src/main/java/de/dennisguse/opentracks/sensors/GainManager.java index d45f46109..1f4e0e880 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/GainManager.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/GainManager.java @@ -8,6 +8,7 @@ import android.util.Log; import de.dennisguse.opentracks.data.models.AtmosphericPressure; import de.dennisguse.opentracks.sensors.driver.BarometerInternal; import de.dennisguse.opentracks.sensors.driver.Driver; +import de.dennisguse.opentracks.sensors.driver.DriverObserver; import de.dennisguse.opentracks.sensors.driver.DriverObserver0; import de.dennisguse.opentracks.sensors.sensorData.Aggregator; import de.dennisguse.opentracks.sensors.sensorData.AggregatorBarometer; @@ -17,7 +18,7 @@ import de.dennisguse.opentracks.settings.PreferencesUtils; * Estimates the altitude gain and altitude loss using the device's pressure sensor (i.e., barometer). */ //TODO Rename class -public class GainManager implements DriverObserver0 { +public class GainManager implements DriverObserver { private static final String TAG = GainManager.class.getSimpleName(); @@ -73,7 +74,27 @@ public class GainManager implements DriverObserver0 { case REMOTE -> driver = new BluetoothConnectionManager( BluetoothUtils.getAdapter(context), - this, + new DriverObserver0() { + @Override + public void onConnect(Aggregator emptySensorData) { + GainManager.this.onConnect(); + } + + @Override + public void onDisconnect(Aggregator emptySensorData) { + GainManager.this.onDisconnect(); + } + + @Override + public void onRemove(Aggregator emptySensorData) { + GainManager.this.onRemove(); + } + + @Override + public void onChange(Record value) { + onData((AtmosphericPressure) value); + } + }, new BluetoothHandlerBarometricPressure() ); default -> throw new RuntimeException("Not implemented"); @@ -90,23 +111,22 @@ public class GainManager implements DriverObserver0 { } @Override - public void onRemove(Aggregator emptySensorData) { - this.aggregatorBarometer = null; + public void onConnect() { + this.aggregatorBarometer = new AggregatorBarometer("", null); } @Override - public void onConnect(Aggregator emptySensorData) { - //TODO Aggregator should be created here. - this.aggregatorBarometer = (AggregatorBarometer) emptySensorData; - } - - @Override - public void onDisconnect(Aggregator emptySensorData) { + public void onDisconnect() { this.aggregatorBarometer.resetAggregated(); } @Override - public void onChange(Record first) { - this.aggregatorBarometer.add(sensorManager.getNow(), (AtmosphericPressure) first); + public void onData(AtmosphericPressure value) { + this.aggregatorBarometer.add(sensorManager.getNow(), value); + } + + @Override + public void onRemove() { + this.aggregatorBarometer = null; } } diff --git a/src/main/java/de/dennisguse/opentracks/sensors/driver/BarometerInternal.java b/src/main/java/de/dennisguse/opentracks/sensors/driver/BarometerInternal.java index 18fdde2af..4da4e4fd6 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/driver/BarometerInternal.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/driver/BarometerInternal.java @@ -12,7 +12,6 @@ import androidx.annotation.NonNull; import java.util.concurrent.TimeUnit; import de.dennisguse.opentracks.data.models.AtmosphericPressure; -import de.dennisguse.opentracks.sensors.sensorData.AggregatorBarometer; public class BarometerInternal implements Driver { @@ -20,7 +19,7 @@ public class BarometerInternal implements Driver { private static final int SAMPLING_PERIOD = (int) TimeUnit.SECONDS.toMicros(5); - private final DriverObserver0 observer; + private final DriverObserver observer; private Context context; @@ -32,7 +31,7 @@ public class BarometerInternal implements Driver { return; } - observer.onChange(AtmosphericPressure.ofHPA(event.values[0])); + observer.onData(AtmosphericPressure.ofHPA(event.values[0])); } @Override @@ -41,7 +40,7 @@ public class BarometerInternal implements Driver { } }; - public BarometerInternal(@NonNull DriverObserver0 observer) { + public BarometerInternal(@NonNull DriverObserver observer) { this.observer = observer; } @@ -57,7 +56,7 @@ public class BarometerInternal implements Driver { if (sensorManager.registerListener(sensorEventListener, pressureSensor, SAMPLING_PERIOD, handler)) { this.context = context; - observer.onConnect(new AggregatorBarometer("internal", null)); + observer.onConnect(); return; } diff --git a/src/main/java/de/dennisguse/opentracks/sensors/driver/DriverObserver.java b/src/main/java/de/dennisguse/opentracks/sensors/driver/DriverObserver.java new file mode 100644 index 000000000..ba066142b --- /dev/null +++ b/src/main/java/de/dennisguse/opentracks/sensors/driver/DriverObserver.java @@ -0,0 +1,12 @@ +package de.dennisguse.opentracks.sensors.driver; + + +public interface DriverObserver { + void onConnect(); + + void onDisconnect(); + + void onData(T value); + + void onRemove(); +} diff --git a/src/main/java/de/dennisguse/opentracks/sensors/driver/DriverObserver0.java b/src/main/java/de/dennisguse/opentracks/sensors/driver/DriverObserver0.java index f12b4700e..14d5f15c7 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/driver/DriverObserver0.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/driver/DriverObserver0.java @@ -2,7 +2,7 @@ package de.dennisguse.opentracks.sensors.driver; import de.dennisguse.opentracks.sensors.sensorData.Aggregator; -//TODO Make onChange parametrized +@Deprecated //Use DriverObserver public interface DriverObserver0 { //TODO Pass SensorName as parameter only