forked from upstream-mirrors/OpenTracks
Cleanup: created new DriverObserver interface.
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user