Bugfix: a BLE sensor disconnect should only replace the aggregator.

Fixes #1799.
This commit is contained in:
Dennis Guse
2024-01-03 21:56:00 +01:00
parent d038f5c33a
commit 80d7f8d92e
4 changed files with 21 additions and 11 deletions
@@ -148,6 +148,7 @@ public class BluetoothConnectionManager implements Driver {
Log.w(TAG, "NONE: going to disconnect");
if (isConnected()) {
disconnect();
observer.onRemove(sensorHandler.createEmptySensorData(null, null));
}
return;
}
@@ -52,7 +52,11 @@ public class GainManager implements SensorConnector {
String address = PreferencesUtils.getBarometerSensorAddress();
switch (PreferencesUtils.getSensorType(address)) {
case NONE -> driver = null;
case NONE -> {
driver = null;
listener.onRemove(new AggregatorBarometer(null, null));
return;
}
case INTERNAL -> driver = new BarometerInternal(listener);
case REMOTE -> driver =
new BluetoothConnectionManager(
@@ -63,9 +67,7 @@ public class GainManager implements SensorConnector {
default -> throw new RuntimeException("Not implemented");
}
if (driver != null) {
driver.connect(context, handler, address);
}
driver.connect(context, handler, address);
}
private void onDisconnect() {
@@ -28,20 +28,26 @@ public class SensorManager implements SharedPreferences.OnSharedPreferenceChange
private final SensorDataChangedObserver listener = new SensorDataChangedObserver() {
@Override
public void onConnect(Aggregator<?, ?> sensorData) {
sensorDataSet.add(sensorData);
public void onConnect(Aggregator<?, ?> aggregator) {
sensorDataSet.add(aggregator);
observer.onChange(new SensorDataSet(sensorDataSet));
}
@Override
public void onChange(Raw<?> sensorData) {
sensorDataSet.update(sensorData);
public void onChange(Raw<?> data) {
sensorDataSet.update(data);
observer.onChange(new SensorDataSet(sensorDataSet));
}
@Override
public void onDisconnect(Aggregator<?, ?> sensorData) {
sensorDataSet.remove(sensorData);
public void onDisconnect(Aggregator<?, ?> aggregator) {
sensorDataSet.add(aggregator);
observer.onChange(new SensorDataSet(sensorDataSet));
}
@Override
public void onRemove(Aggregator<?, ?> aggregator) {
sensorDataSet.remove(aggregator);
observer.onChange(new SensorDataSet(sensorDataSet));
}
};
@@ -134,5 +140,7 @@ public class SensorManager implements SharedPreferences.OnSharedPreferenceChange
void onChange(Raw<?> sensorData);
void onDisconnect(Aggregator<?, ?> sensorData);
void onRemove(Aggregator<?, ?> sensorData);
}
}
@@ -30,7 +30,6 @@ public class AltitudeCorrectionManager {
public void correctAltitude(Context context, TrackPoint trackPoint) {
if (!trackPoint.hasLocation() || !trackPoint.hasAltitude()) {
Log.d(TAG, "No altitude correction necessary.");
return;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE && altitudeConverter != null) {