Cleanup: created new DriverObserver interface.

This commit is contained in:
Dennis Guse
2026-01-27 22:42:07 +01:00
parent 476f3a517b
commit 244ca26210
4 changed files with 50 additions and 19 deletions
@@ -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<AtmosphericPressure> {
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;
}
}
@@ -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<AtmosphericPressure> 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<AtmosphericPressure> 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;
}
@@ -0,0 +1,12 @@
package de.dennisguse.opentracks.sensors.driver;
public interface DriverObserver<T> {
void onConnect();
void onDisconnect();
void onData(T value);
void onRemove();
}
@@ -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