Cleanup: renamed SensorData* to Aggregator*.

This commit is contained in:
Dennis Guse
2023-11-15 18:41:13 +01:00
parent d47fa27e02
commit ce21fe3569
18 changed files with 81 additions and 80 deletions
@@ -59,10 +59,11 @@ import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.io.file.TrackFileFormat; import de.dennisguse.opentracks.io.file.TrackFileFormat;
import de.dennisguse.opentracks.io.file.exporter.TrackExporter; import de.dennisguse.opentracks.io.file.exporter.TrackExporter;
import de.dennisguse.opentracks.sensors.AltitudeSumManager; import de.dennisguse.opentracks.sensors.AltitudeSumManager;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataCyclingCadence; import de.dennisguse.opentracks.sensors.sensorData.Aggregator;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataCyclingDistanceSpeed; import de.dennisguse.opentracks.sensors.sensorData.AggregatorCyclingCadence;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataCyclingPower; import de.dennisguse.opentracks.sensors.sensorData.AggregatorCyclingDistanceSpeed;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataHeartRate; import de.dennisguse.opentracks.sensors.sensorData.AggregatorCyclingPower;
import de.dennisguse.opentracks.sensors.sensorData.AggregatorHeartRate;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataSet; import de.dennisguse.opentracks.sensors.sensorData.SensorDataSet;
import de.dennisguse.opentracks.services.TrackRecordingService; import de.dennisguse.opentracks.services.TrackRecordingService;
import de.dennisguse.opentracks.services.handlers.TrackPointCreator; import de.dennisguse.opentracks.services.handlers.TrackPointCreator;
@@ -71,7 +72,7 @@ import de.dennisguse.opentracks.stats.TrackStatistics;
/** /**
* Export a track to {@link TrackFileFormat} and verify that the import is identical. * Export a track to {@link TrackFileFormat} and verify that the import is identical.
* <p> * <p>
* Note: those tests are affected by {@link de.dennisguse.opentracks.sensors.sensorData.SensorData}.isRecent(). * Note: those tests are affected by {@link Aggregator}.isRecent().
* If the test device is too slow (like in a CI) these are likely to fail as the sensor data will be omitted from actual. * If the test device is too slow (like in a CI) these are likely to fail as the sensor data will be omitted from actual.
*/ */
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
@@ -549,22 +550,22 @@ public class ExportImportTest {
SensorDataSet sensorDataSet = new SensorDataSet(); SensorDataSet sensorDataSet = new SensorDataSet();
sensorDataSet.cyclingPower = Mockito.mock(SensorDataCyclingPower.class); sensorDataSet.cyclingPower = Mockito.mock(AggregatorCyclingPower.class);
Mockito.when( sensorDataSet.cyclingPower.hasValue()).thenReturn(true); Mockito.when( sensorDataSet.cyclingPower.hasValue()).thenReturn(true);
Mockito.when(sensorDataSet.cyclingPower.getValue()).thenReturn(Power.of(power)); Mockito.when(sensorDataSet.cyclingPower.getValue()).thenReturn(Power.of(power));
sensorDataSet.heartRate = Mockito.mock(SensorDataHeartRate.class); sensorDataSet.heartRate = Mockito.mock(AggregatorHeartRate.class);
Mockito.when(sensorDataSet.heartRate.getValue()).thenReturn(HeartRate.of(heartRate)); Mockito.when(sensorDataSet.heartRate.getValue()).thenReturn(HeartRate.of(heartRate));
SensorDataCyclingCadence cyclingCadence = Mockito.mock(SensorDataCyclingCadence.class); AggregatorCyclingCadence cyclingCadence = Mockito.mock(AggregatorCyclingCadence.class);
Mockito.when(cyclingCadence.hasValue()).thenReturn(true); Mockito.when(cyclingCadence.hasValue()).thenReturn(true);
Mockito.when(cyclingCadence.getValue()).thenReturn(Cadence.of(cadence)); Mockito.when(cyclingCadence.getValue()).thenReturn(Cadence.of(cadence));
sensorDataSet.cyclingCadence = cyclingCadence; sensorDataSet.cyclingCadence = cyclingCadence;
if (distance != null && speed != null) { if (distance != null && speed != null) {
SensorDataCyclingDistanceSpeed distanceSpeed = Mockito.mock(SensorDataCyclingDistanceSpeed.class); AggregatorCyclingDistanceSpeed distanceSpeed = Mockito.mock(AggregatorCyclingDistanceSpeed.class);
Mockito.when(distanceSpeed.hasValue()).thenReturn(true); Mockito.when(distanceSpeed.hasValue()).thenReturn(true);
Mockito.when(distanceSpeed.getValue()).thenReturn(new SensorDataCyclingDistanceSpeed.Data(null, distance, Speed.of(speed))); Mockito.when(distanceSpeed.getValue()).thenReturn(new AggregatorCyclingDistanceSpeed.Data(null, distance, Speed.of(speed)));
sensorDataSet.cyclingDistanceSpeed = distanceSpeed; sensorDataSet.cyclingDistanceSpeed = distanceSpeed;
} }
@@ -20,7 +20,7 @@ public class SensorDataCyclingTest {
@Test @Test
public void compute_cadence_1() { public void compute_cadence_1() {
SensorDataCyclingCadence current = new SensorDataCyclingCadence("", ""); AggregatorCyclingCadence current = new AggregatorCyclingCadence("", "");
// when // when
current.add(new Raw<>(new BluetoothHandlerCyclingCadence.CrankData(1, 1024))); current.add(new Raw<>(new BluetoothHandlerCyclingCadence.CrankData(1, 1024)));
@@ -32,7 +32,7 @@ public class SensorDataCyclingTest {
@Test @Test
public void compute_cadence_2() { public void compute_cadence_2() {
SensorDataCyclingCadence current = new SensorDataCyclingCadence("", ""); AggregatorCyclingCadence current = new AggregatorCyclingCadence("", "");
// when // when
current.add(new Raw<>(new BluetoothHandlerCyclingCadence.CrankData(1, 6184))); current.add(new Raw<>(new BluetoothHandlerCyclingCadence.CrankData(1, 6184)));
@@ -44,7 +44,7 @@ public class SensorDataCyclingTest {
@Test @Test
public void compute_cadence_sameCount() { public void compute_cadence_sameCount() {
SensorDataCyclingCadence current = new SensorDataCyclingCadence("", ""); AggregatorCyclingCadence current = new AggregatorCyclingCadence("", "");
// when // when
current.add(new Raw<>(new BluetoothHandlerCyclingCadence.CrankData(1, 1024))); current.add(new Raw<>(new BluetoothHandlerCyclingCadence.CrankData(1, 1024)));
@@ -57,7 +57,7 @@ public class SensorDataCyclingTest {
@Test @Test
public void compute_cadence_sameTime() { public void compute_cadence_sameTime() {
SensorDataCyclingCadence current = new SensorDataCyclingCadence("", ""); AggregatorCyclingCadence current = new AggregatorCyclingCadence("", "");
// when // when
current.add(new Raw<>(new BluetoothHandlerCyclingCadence.CrankData(1, 1024))); current.add(new Raw<>(new BluetoothHandlerCyclingCadence.CrankData(1, 1024)));
@@ -69,7 +69,7 @@ public class SensorDataCyclingTest {
@Test @Test
public void compute_cadence_rollOverTime() { public void compute_cadence_rollOverTime() {
SensorDataCyclingCadence current = new SensorDataCyclingCadence("", ""); AggregatorCyclingCadence current = new AggregatorCyclingCadence("", "");
// when // when
current.add(new Raw<>(new BluetoothHandlerCyclingCadence.CrankData(1, UintUtils.UINT16_MAX - 1024))); current.add(new Raw<>(new BluetoothHandlerCyclingCadence.CrankData(1, UintUtils.UINT16_MAX - 1024)));
@@ -82,7 +82,7 @@ public class SensorDataCyclingTest {
@Test @Test
@Deprecated @Deprecated
public void compute_cadence_rollOverCount() { public void compute_cadence_rollOverCount() {
SensorDataCyclingCadence current = new SensorDataCyclingCadence("", ""); AggregatorCyclingCadence current = new AggregatorCyclingCadence("", "");
// when // when
current.add(new Raw<>(new BluetoothHandlerCyclingCadence.CrankData(UintUtils.UINT32_MAX - 1, 1024))); current.add(new Raw<>(new BluetoothHandlerCyclingCadence.CrankData(UintUtils.UINT32_MAX - 1, 1024)));
@@ -96,7 +96,7 @@ public class SensorDataCyclingTest {
@Test @Test
public void compute_speed() { public void compute_speed() {
SensorDataCyclingDistanceSpeed current = new SensorDataCyclingDistanceSpeed("", ""); AggregatorCyclingDistanceSpeed current = new AggregatorCyclingDistanceSpeed("", "");
current.setWheelCircumference(Distance.ofMM(2150)); current.setWheelCircumference(Distance.ofMM(2150));
// when // when
@@ -111,7 +111,7 @@ public class SensorDataCyclingTest {
@Test @Test
@Deprecated @Deprecated
public void compute_speed_rollOverCount() { public void compute_speed_rollOverCount() {
SensorDataCyclingDistanceSpeed current = new SensorDataCyclingDistanceSpeed("", ""); AggregatorCyclingDistanceSpeed current = new AggregatorCyclingDistanceSpeed("", "");
current.setWheelCircumference(Distance.ofMM(2000)); current.setWheelCircumference(Distance.ofMM(2000));
// when // when
@@ -37,9 +37,9 @@ import de.dennisguse.opentracks.io.file.importer.TrackPointAssert;
import de.dennisguse.opentracks.sensors.AltitudeSumManager; import de.dennisguse.opentracks.sensors.AltitudeSumManager;
import de.dennisguse.opentracks.sensors.BluetoothHandlerRunningSpeedAndCadence; import de.dennisguse.opentracks.sensors.BluetoothHandlerRunningSpeedAndCadence;
import de.dennisguse.opentracks.sensors.SensorManager; import de.dennisguse.opentracks.sensors.SensorManager;
import de.dennisguse.opentracks.sensors.sensorData.AggregatorHeartRate;
import de.dennisguse.opentracks.sensors.sensorData.AggregatorRunning;
import de.dennisguse.opentracks.sensors.sensorData.Raw; import de.dennisguse.opentracks.sensors.sensorData.Raw;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataHeartRate;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataRunning;
import de.dennisguse.opentracks.services.handlers.TrackPointCreator; import de.dennisguse.opentracks.services.handlers.TrackPointCreator;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
@@ -255,7 +255,7 @@ public class TrackRecordingServiceRecordingTest {
Track.Id trackId = service.startNewTrack(); Track.Id trackId = service.startNewTrack();
trackPointCreator.getSensorManager().setAltitudeSumManager(altitudeSumManager); trackPointCreator.getSensorManager().setAltitudeSumManager(altitudeSumManager);
SensorManager sensorManager = trackPointCreator.getSensorManager(); SensorManager sensorManager = trackPointCreator.getSensorManager();
sensorManager.sensorDataSet.add(new SensorDataHeartRate("", "")); sensorManager.sensorDataSet.add(new AggregatorHeartRate("", ""));
// when // when
String sensor1 = "2020-02-02T02:02:03Z"; String sensor1 = "2020-02-02T02:02:03Z";
trackPointCreator.setClock(sensor1); trackPointCreator.setClock(sensor1);
@@ -592,7 +592,7 @@ public class TrackRecordingServiceRecordingTest {
Track.Id trackId = service.startNewTrack(); Track.Id trackId = service.startNewTrack();
trackPointCreator.getSensorManager().setAltitudeSumManager(altitudeSumManager); trackPointCreator.getSensorManager().setAltitudeSumManager(altitudeSumManager);
SensorManager sensorManager = trackPointCreator.getSensorManager(); SensorManager sensorManager = trackPointCreator.getSensorManager();
sensorManager.sensorDataSet.add(new SensorDataRunning("", "")); sensorManager.sensorDataSet.add(new AggregatorRunning("", ""));
// when // when
String sensor1 = "2020-02-02T02:02:03Z"; String sensor1 = "2020-02-02T02:02:03Z";
@@ -6,7 +6,7 @@ import java.util.List;
import java.util.UUID; import java.util.UUID;
import de.dennisguse.opentracks.data.models.AtmosphericPressure; import de.dennisguse.opentracks.data.models.AtmosphericPressure;
import de.dennisguse.opentracks.sensors.sensorData.SensorData; import de.dennisguse.opentracks.sensors.sensorData.Aggregator;
import de.dennisguse.opentracks.sensors.sensorData.SensorHandlerInterface; import de.dennisguse.opentracks.sensors.sensorData.SensorHandlerInterface;
public class BluetoothHandlerBarometricPressure implements SensorHandlerInterface { public class BluetoothHandlerBarometricPressure implements SensorHandlerInterface {
@@ -22,7 +22,7 @@ public class BluetoothHandlerBarometricPressure implements SensorHandlerInterfac
} }
@Override @Override
public SensorData<?, ?> createEmptySensorData(String address) { public Aggregator<?, ?> createEmptySensorData(String address) {
return null; //TODO return null; //TODO
} }
@@ -6,8 +6,8 @@ import android.util.Pair;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.sensors.sensorData.AggregatorCyclingCadence;
import de.dennisguse.opentracks.sensors.sensorData.Raw; import de.dennisguse.opentracks.sensors.sensorData.Raw;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataCyclingCadence;
import de.dennisguse.opentracks.sensors.sensorData.SensorHandlerInterface; import de.dennisguse.opentracks.sensors.sensorData.SensorHandlerInterface;
public class BluetoothHandlerCyclingCadence implements SensorHandlerInterface { public class BluetoothHandlerCyclingCadence implements SensorHandlerInterface {
@@ -24,8 +24,8 @@ public class BluetoothHandlerCyclingCadence implements SensorHandlerInterface {
} }
@Override @Override
public SensorDataCyclingCadence createEmptySensorData(String address) { public AggregatorCyclingCadence createEmptySensorData(String address) {
return new SensorDataCyclingCadence(address); return new AggregatorCyclingCadence(address);
} }
@Override @Override
@@ -9,8 +9,8 @@ import androidx.annotation.VisibleForTesting;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import de.dennisguse.opentracks.sensors.sensorData.AggregatorCyclingDistanceSpeed;
import de.dennisguse.opentracks.sensors.sensorData.Raw; import de.dennisguse.opentracks.sensors.sensorData.Raw;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataCyclingDistanceSpeed;
import de.dennisguse.opentracks.sensors.sensorData.SensorHandlerInterface; import de.dennisguse.opentracks.sensors.sensorData.SensorHandlerInterface;
public class BluetoothHandlerCyclingDistanceSpeed implements SensorHandlerInterface { public class BluetoothHandlerCyclingDistanceSpeed implements SensorHandlerInterface {
@@ -26,8 +26,8 @@ public class BluetoothHandlerCyclingDistanceSpeed implements SensorHandlerInterf
} }
@Override @Override
public SensorDataCyclingDistanceSpeed createEmptySensorData(String address) { public AggregatorCyclingDistanceSpeed createEmptySensorData(String address) {
return new SensorDataCyclingDistanceSpeed(address); return new AggregatorCyclingDistanceSpeed(address);
} }
@Override @Override
@@ -9,8 +9,8 @@ import java.util.List;
import java.util.UUID; import java.util.UUID;
import de.dennisguse.opentracks.data.models.Power; import de.dennisguse.opentracks.data.models.Power;
import de.dennisguse.opentracks.sensors.sensorData.AggregatorCyclingPower;
import de.dennisguse.opentracks.sensors.sensorData.Raw; import de.dennisguse.opentracks.sensors.sensorData.Raw;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataCyclingPower;
import de.dennisguse.opentracks.sensors.sensorData.SensorHandlerInterface; import de.dennisguse.opentracks.sensors.sensorData.SensorHandlerInterface;
public class BluetoothHandlerManagerCyclingPower implements SensorHandlerInterface { public class BluetoothHandlerManagerCyclingPower implements SensorHandlerInterface {
@@ -26,8 +26,8 @@ public class BluetoothHandlerManagerCyclingPower implements SensorHandlerInterfa
} }
@Override @Override
public SensorDataCyclingPower createEmptySensorData(String address) { public AggregatorCyclingPower createEmptySensorData(String address) {
return new SensorDataCyclingPower(address); return new AggregatorCyclingPower(address);
} }
@Override @Override
@@ -9,8 +9,8 @@ import java.util.List;
import java.util.UUID; import java.util.UUID;
import de.dennisguse.opentracks.data.models.HeartRate; import de.dennisguse.opentracks.data.models.HeartRate;
import de.dennisguse.opentracks.sensors.sensorData.AggregatorHeartRate;
import de.dennisguse.opentracks.sensors.sensorData.Raw; import de.dennisguse.opentracks.sensors.sensorData.Raw;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataHeartRate;
import de.dennisguse.opentracks.sensors.sensorData.SensorHandlerInterface; import de.dennisguse.opentracks.sensors.sensorData.SensorHandlerInterface;
public class BluetoothHandlerManagerHeartRate implements SensorHandlerInterface { public class BluetoothHandlerManagerHeartRate implements SensorHandlerInterface {
@@ -36,8 +36,8 @@ public class BluetoothHandlerManagerHeartRate implements SensorHandlerInterface
} }
@Override @Override
public SensorDataHeartRate createEmptySensorData(String address) { public AggregatorHeartRate createEmptySensorData(String address) {
return new SensorDataHeartRate(address); return new AggregatorHeartRate(address);
} }
@Override @Override
@@ -11,8 +11,8 @@ import java.util.UUID;
import de.dennisguse.opentracks.data.models.Cadence; import de.dennisguse.opentracks.data.models.Cadence;
import de.dennisguse.opentracks.data.models.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.data.models.Speed; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.sensors.sensorData.AggregatorRunning;
import de.dennisguse.opentracks.sensors.sensorData.Raw; import de.dennisguse.opentracks.sensors.sensorData.Raw;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataRunning;
import de.dennisguse.opentracks.sensors.sensorData.SensorHandlerInterface; import de.dennisguse.opentracks.sensors.sensorData.SensorHandlerInterface;
public class BluetoothHandlerRunningSpeedAndCadence implements SensorHandlerInterface { public class BluetoothHandlerRunningSpeedAndCadence implements SensorHandlerInterface {
@@ -29,8 +29,8 @@ public class BluetoothHandlerRunningSpeedAndCadence implements SensorHandlerInte
} }
@Override @Override
public SensorDataRunning createEmptySensorData(String address) { public AggregatorRunning createEmptySensorData(String address) {
return new SensorDataRunning(address); return new AggregatorRunning(address);
} }
@Override @Override
@@ -9,8 +9,8 @@ import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import de.dennisguse.opentracks.data.models.TrackPoint; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.sensors.sensorData.Aggregator;
import de.dennisguse.opentracks.sensors.sensorData.Raw; import de.dennisguse.opentracks.sensors.sensorData.Raw;
import de.dennisguse.opentracks.sensors.sensorData.SensorData;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataSet; import de.dennisguse.opentracks.sensors.sensorData.SensorDataSet;
import de.dennisguse.opentracks.services.handlers.GPSManager; import de.dennisguse.opentracks.services.handlers.GPSManager;
import de.dennisguse.opentracks.services.handlers.TrackPointCreator; import de.dennisguse.opentracks.services.handlers.TrackPointCreator;
@@ -28,7 +28,7 @@ public class SensorManager implements SharedPreferences.OnSharedPreferenceChange
private final SensorDataChangedObserver listener = new SensorDataChangedObserver() { private final SensorDataChangedObserver listener = new SensorDataChangedObserver() {
@Override @Override
public void onConnect(SensorData<?, ?> sensorData) { public void onConnect(Aggregator<?, ?> sensorData) {
sensorDataSet.add(sensorData); sensorDataSet.add(sensorData);
observer.onChange(new SensorDataSet(sensorDataSet)); observer.onChange(new SensorDataSet(sensorDataSet));
} }
@@ -40,7 +40,7 @@ public class SensorManager implements SharedPreferences.OnSharedPreferenceChange
} }
@Override @Override
public void onDisconnect(SensorData<?, ?> sensorData) { public void onDisconnect(Aggregator<?, ?> sensorData) {
sensorDataSet.remove(sensorData); sensorDataSet.remove(sensorData);
observer.onChange(new SensorDataSet(sensorDataSet)); observer.onChange(new SensorDataSet(sensorDataSet));
} }
@@ -128,9 +128,9 @@ public class SensorManager implements SharedPreferences.OnSharedPreferenceChange
public interface SensorDataChangedObserver { public interface SensorDataChangedObserver {
void onConnect(SensorData<?, ?> sensorData); void onConnect(Aggregator<?, ?> sensorData);
void onChange(Raw<?> sensorData); void onChange(Raw<?> sensorData);
void onDisconnect(SensorData<?, ?> sensorData); void onDisconnect(Aggregator<?, ?> sensorData);
} }
} }
@@ -6,7 +6,7 @@ import java.time.Instant;
import de.dennisguse.opentracks.sensors.BluetoothRemoteSensorManager; import de.dennisguse.opentracks.sensors.BluetoothRemoteSensorManager;
public abstract class SensorData<Input extends Record, Output> { public abstract class Aggregator<Input extends Record, Output> {
protected Raw<Input> previous; protected Raw<Input> previous;
@@ -15,11 +15,11 @@ public abstract class SensorData<Input extends Record, Output> {
private final String sensorAddress; private final String sensorAddress;
private final String sensorName; private final String sensorName;
SensorData(String sensorAddress) { Aggregator(String sensorAddress) {
this(sensorAddress, null); this(sensorAddress, null);
} }
SensorData(String sensorAddress, String sensorName) { Aggregator(String sensorAddress, String sensorName) {
this.sensorAddress = sensorAddress; this.sensorAddress = sensorAddress;
this.sensorName = sensorName; this.sensorName = sensorName;
} }
@@ -10,15 +10,15 @@ import de.dennisguse.opentracks.data.models.Cadence;
import de.dennisguse.opentracks.sensors.BluetoothHandlerCyclingCadence; import de.dennisguse.opentracks.sensors.BluetoothHandlerCyclingCadence;
import de.dennisguse.opentracks.sensors.UintUtils; import de.dennisguse.opentracks.sensors.UintUtils;
public class SensorDataCyclingCadence extends SensorData<BluetoothHandlerCyclingCadence.CrankData, Cadence> { public class AggregatorCyclingCadence extends Aggregator<BluetoothHandlerCyclingCadence.CrankData, Cadence> {
private final String TAG = SensorDataCyclingCadence.class.getSimpleName(); private final String TAG = AggregatorCyclingCadence.class.getSimpleName();
public SensorDataCyclingCadence(String sensorAddress) { public AggregatorCyclingCadence(String sensorAddress) {
super(sensorAddress); super(sensorAddress);
} }
public SensorDataCyclingCadence(String sensorAddress, String sensorName) { public AggregatorCyclingCadence(String sensorAddress, String sensorName) {
super(sensorAddress, sensorName); super(sensorAddress, sensorName);
} }
@@ -11,17 +11,17 @@ import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.sensors.BluetoothHandlerCyclingDistanceSpeed; import de.dennisguse.opentracks.sensors.BluetoothHandlerCyclingDistanceSpeed;
import de.dennisguse.opentracks.sensors.UintUtils; import de.dennisguse.opentracks.sensors.UintUtils;
public class SensorDataCyclingDistanceSpeed extends SensorData<BluetoothHandlerCyclingDistanceSpeed.WheelData, SensorDataCyclingDistanceSpeed.Data> { public class AggregatorCyclingDistanceSpeed extends Aggregator<BluetoothHandlerCyclingDistanceSpeed.WheelData, AggregatorCyclingDistanceSpeed.Data> {
private final String TAG = SensorDataCyclingDistanceSpeed.class.getSimpleName(); private final String TAG = AggregatorCyclingDistanceSpeed.class.getSimpleName();
private Distance wheelCircumference; private Distance wheelCircumference;
public SensorDataCyclingDistanceSpeed(String sensorAddress) { public AggregatorCyclingDistanceSpeed(String sensorAddress) {
super(sensorAddress); super(sensorAddress);
} }
public SensorDataCyclingDistanceSpeed(String sensorAddress, String sensorName) { public AggregatorCyclingDistanceSpeed(String sensorAddress, String sensorName) {
super(sensorAddress, sensorName); super(sensorAddress, sensorName);
} }
@@ -4,13 +4,13 @@ import androidx.annotation.NonNull;
import de.dennisguse.opentracks.data.models.Power; import de.dennisguse.opentracks.data.models.Power;
public class SensorDataCyclingPower extends SensorData<Power, Power> { public class AggregatorCyclingPower extends Aggregator<Power, Power> {
public SensorDataCyclingPower(String address) { public AggregatorCyclingPower(String address) {
super(address); super(address);
} }
public SensorDataCyclingPower(String name, String address) { public AggregatorCyclingPower(String name, String address) {
super(name, address); super(name, address);
} }
@@ -4,13 +4,13 @@ import androidx.annotation.NonNull;
import de.dennisguse.opentracks.data.models.HeartRate; import de.dennisguse.opentracks.data.models.HeartRate;
public class SensorDataHeartRate extends SensorData<HeartRate, HeartRate> { public class AggregatorHeartRate extends Aggregator<HeartRate, HeartRate> {
public SensorDataHeartRate(String address) { public AggregatorHeartRate(String address) {
super(address); super(address);
} }
public SensorDataHeartRate(String name, String address) { public AggregatorHeartRate(String name, String address) {
super(name, address); super(name, address);
} }
@@ -10,15 +10,15 @@ import de.dennisguse.opentracks.sensors.BluetoothHandlerRunningSpeedAndCadence;
/** /**
* Provides cadence in rpm and speed in milliseconds from Bluetooth LE Running Speed and Cadence sensors. * Provides cadence in rpm and speed in milliseconds from Bluetooth LE Running Speed and Cadence sensors.
*/ */
public final class SensorDataRunning extends SensorData<BluetoothHandlerRunningSpeedAndCadence.Data, SensorDataRunning.Data> { public final class AggregatorRunning extends Aggregator<BluetoothHandlerRunningSpeedAndCadence.Data, AggregatorRunning.Data> {
private static final String TAG = SensorDataRunning.class.getSimpleName(); private static final String TAG = AggregatorRunning.class.getSimpleName();
public SensorDataRunning(String sensorAddress) { public AggregatorRunning(String sensorAddress) {
super(sensorAddress); super(sensorAddress);
} }
public SensorDataRunning(String sensorAddress, String sensorName) { public AggregatorRunning(String sensorAddress, String sensorName) {
super(sensorAddress, sensorName); super(sensorAddress, sensorName);
} }
@@ -22,19 +22,19 @@ public final class SensorDataSet {
private static final String TAG = SensorDataSet.class.getSimpleName(); private static final String TAG = SensorDataSet.class.getSimpleName();
@VisibleForTesting @VisibleForTesting
public SensorDataHeartRate heartRate; public AggregatorHeartRate heartRate;
@VisibleForTesting @VisibleForTesting
public SensorDataCyclingCadence cyclingCadence; public AggregatorCyclingCadence cyclingCadence;
@VisibleForTesting @VisibleForTesting
public SensorDataCyclingDistanceSpeed cyclingDistanceSpeed; public AggregatorCyclingDistanceSpeed cyclingDistanceSpeed;
@VisibleForTesting @VisibleForTesting
public SensorDataCyclingPower cyclingPower; public AggregatorCyclingPower cyclingPower;
@VisibleForTesting @VisibleForTesting
public SensorDataRunning runningDistanceSpeedCadence; public AggregatorRunning runningDistanceSpeedCadence;
public SensorDataSet() { public SensorDataSet() {
} }
@@ -79,11 +79,11 @@ public final class SensorDataSet {
return null; return null;
} }
public SensorDataCyclingPower getCyclingPower() { public AggregatorCyclingPower getCyclingPower() {
return cyclingPower; return cyclingPower;
} }
public void add(@NonNull SensorData<?, ?> data) { public void add(@NonNull Aggregator<?, ?> data) {
set(data, data); set(data, data);
} }
@@ -117,7 +117,7 @@ public final class SensorDataSet {
throw new UnsupportedOperationException(data.getClass().getCanonicalName()); throw new UnsupportedOperationException(data.getClass().getCanonicalName());
} }
public void remove(@NonNull SensorData<?, ?> type) { public void remove(@NonNull Aggregator<?, ?> type) {
set(type, null); set(type, null);
} }
@@ -163,24 +163,24 @@ public final class SensorDataSet {
if (runningDistanceSpeedCadence != null) runningDistanceSpeedCadence.reset(); if (runningDistanceSpeedCadence != null) runningDistanceSpeedCadence.reset();
} }
private void set(@NonNull SensorData<?, ?> type, @Nullable SensorData<?, ?> sensorData) { private void set(@NonNull Aggregator<?, ?> type, @Nullable Aggregator<?, ?> sensorData) {
if (type instanceof SensorDataHeartRate hr) { if (type instanceof AggregatorHeartRate hr) {
heartRate = hr; heartRate = hr;
return; return;
} }
if (type instanceof SensorDataCyclingCadence cc) { if (type instanceof AggregatorCyclingCadence cc) {
cyclingCadence = cc; cyclingCadence = cc;
return; return;
} }
if (type instanceof SensorDataCyclingDistanceSpeed ds) { if (type instanceof AggregatorCyclingDistanceSpeed ds) {
cyclingDistanceSpeed = ds; cyclingDistanceSpeed = ds;
return; return;
} }
if (type instanceof SensorDataCyclingPower cp) { if (type instanceof AggregatorCyclingPower cp) {
cyclingPower = cp; cyclingPower = cp;
return; return;
} }
if (type instanceof SensorDataRunning rr) { if (type instanceof AggregatorRunning rr) {
runningDistanceSpeedCadence = rr; runningDistanceSpeedCadence = rr;
return; return;
} }
@@ -11,7 +11,7 @@ public interface SensorHandlerInterface {
List<ServiceMeasurementUUID> getServices(); List<ServiceMeasurementUUID> getServices();
SensorData<?, ?> createEmptySensorData(String address); Aggregator<?, ?> createEmptySensorData(String address);
void handlePayload(SensorManager.SensorDataChangedObserver observer, ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic); void handlePayload(SensorManager.SensorDataChangedObserver observer, ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic);
} }