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.data.models.AtmosphericPressure;
import de.dennisguse.opentracks.sensors.driver.BarometerInternal; import de.dennisguse.opentracks.sensors.driver.BarometerInternal;
import de.dennisguse.opentracks.sensors.driver.Driver; 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.driver.DriverObserver0;
import de.dennisguse.opentracks.sensors.sensorData.Aggregator; import de.dennisguse.opentracks.sensors.sensorData.Aggregator;
import de.dennisguse.opentracks.sensors.sensorData.AggregatorBarometer; 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). * Estimates the altitude gain and altitude loss using the device's pressure sensor (i.e., barometer).
*/ */
//TODO Rename class //TODO Rename class
public class GainManager implements DriverObserver0 { public class GainManager implements DriverObserver<AtmosphericPressure> {
private static final String TAG = GainManager.class.getSimpleName(); private static final String TAG = GainManager.class.getSimpleName();
@@ -73,7 +74,27 @@ public class GainManager implements DriverObserver0 {
case REMOTE -> driver = case REMOTE -> driver =
new BluetoothConnectionManager( new BluetoothConnectionManager(
BluetoothUtils.getAdapter(context), 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() new BluetoothHandlerBarometricPressure()
); );
default -> throw new RuntimeException("Not implemented"); default -> throw new RuntimeException("Not implemented");
@@ -90,23 +111,22 @@ public class GainManager implements DriverObserver0 {
} }
@Override @Override
public void onRemove(Aggregator<?, ?> emptySensorData) { public void onConnect() {
this.aggregatorBarometer = null; this.aggregatorBarometer = new AggregatorBarometer("", null);
} }
@Override @Override
public void onConnect(Aggregator<?, ?> emptySensorData) { public void onDisconnect() {
//TODO Aggregator should be created here.
this.aggregatorBarometer = (AggregatorBarometer) emptySensorData;
}
@Override
public void onDisconnect(Aggregator<?, ?> emptySensorData) {
this.aggregatorBarometer.resetAggregated(); this.aggregatorBarometer.resetAggregated();
} }
@Override @Override
public void onChange(Record first) { public void onData(AtmosphericPressure value) {
this.aggregatorBarometer.add(sensorManager.getNow(), (AtmosphericPressure) first); 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 java.util.concurrent.TimeUnit;
import de.dennisguse.opentracks.data.models.AtmosphericPressure; import de.dennisguse.opentracks.data.models.AtmosphericPressure;
import de.dennisguse.opentracks.sensors.sensorData.AggregatorBarometer;
public class BarometerInternal implements Driver { 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 static final int SAMPLING_PERIOD = (int) TimeUnit.SECONDS.toMicros(5);
private final DriverObserver0 observer; private final DriverObserver<AtmosphericPressure> observer;
private Context context; private Context context;
@@ -32,7 +31,7 @@ public class BarometerInternal implements Driver {
return; return;
} }
observer.onChange(AtmosphericPressure.ofHPA(event.values[0])); observer.onData(AtmosphericPressure.ofHPA(event.values[0]));
} }
@Override @Override
@@ -41,7 +40,7 @@ public class BarometerInternal implements Driver {
} }
}; };
public BarometerInternal(@NonNull DriverObserver0 observer) { public BarometerInternal(@NonNull DriverObserver<AtmosphericPressure> observer) {
this.observer = observer; this.observer = observer;
} }
@@ -57,7 +56,7 @@ public class BarometerInternal implements Driver {
if (sensorManager.registerListener(sensorEventListener, pressureSensor, SAMPLING_PERIOD, handler)) { if (sensorManager.registerListener(sensorEventListener, pressureSensor, SAMPLING_PERIOD, handler)) {
this.context = context; this.context = context;
observer.onConnect(new AggregatorBarometer("internal", null)); observer.onConnect();
return; 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; import de.dennisguse.opentracks.sensors.sensorData.Aggregator;
//TODO Make onChange parametrized @Deprecated //Use DriverObserver
public interface DriverObserver0 { public interface DriverObserver0 {
//TODO Pass SensorName as parameter only //TODO Pass SensorName as parameter only