forked from upstream-mirrors/OpenTracks
Bugfix: cycling sensors report wheel count as UINT32 - data type must be long, int is too small.
Also forgot to fix tests. Fixes #810.
This commit is contained in:
+1
-1
@@ -111,7 +111,7 @@ public class SensorDataCyclingTest {
|
|||||||
@Test
|
@Test
|
||||||
public void compute_speed_rollOverCount() {
|
public void compute_speed_rollOverCount() {
|
||||||
// given
|
// given
|
||||||
SensorDataCycling.DistanceSpeed previous = new SensorDataCycling.DistanceSpeed("sensorAddress", "sensorName", UintUtils.UINT16_MAX - 1, 1024);
|
SensorDataCycling.DistanceSpeed previous = new SensorDataCycling.DistanceSpeed("sensorAddress", "sensorName", UintUtils.UINT32_MAX - 1, 1024);
|
||||||
SensorDataCycling.DistanceSpeed current = new SensorDataCycling.DistanceSpeed("sensorAddress", "sensorName", 0, 2048);
|
SensorDataCycling.DistanceSpeed current = new SensorDataCycling.DistanceSpeed("sensorAddress", "sensorName", 0, 2048);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
|
|||||||
@@ -18,6 +18,6 @@ public class UintUtilsTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void realData() {
|
public void realData() {
|
||||||
assertEquals(3, UintUtils.diff(381616, 381615, UintUtils.UINT32_MAX));
|
assertEquals(1, UintUtils.diff(381616, 381615, UintUtils.UINT32_MAX));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -94,7 +94,7 @@ public final class SensorDataCycling {
|
|||||||
|
|
||||||
public static class DistanceSpeed extends SensorData<DistanceSpeed.Data> {
|
public static class DistanceSpeed extends SensorData<DistanceSpeed.Data> {
|
||||||
|
|
||||||
private final Integer wheelRevolutionsCount; // UINT32
|
private final Long wheelRevolutionsCount; // UINT32
|
||||||
private final Integer wheelRevolutionsTime; // UINT16; 1/1024s
|
private final Integer wheelRevolutionsTime; // UINT16; 1/1024s
|
||||||
|
|
||||||
public DistanceSpeed(String sensorAddress) {
|
public DistanceSpeed(String sensorAddress) {
|
||||||
@@ -103,7 +103,7 @@ public final class SensorDataCycling {
|
|||||||
this.wheelRevolutionsTime = null;
|
this.wheelRevolutionsTime = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DistanceSpeed(String sensorAddress, String sensorName, int wheelRevolutionsCount, int wheelRevolutionsTime) {
|
public DistanceSpeed(String sensorAddress, String sensorName, long wheelRevolutionsCount, int wheelRevolutionsTime) {
|
||||||
super(sensorAddress, sensorName);
|
super(sensorAddress, sensorName);
|
||||||
this.wheelRevolutionsCount = wheelRevolutionsCount;
|
this.wheelRevolutionsCount = wheelRevolutionsCount;
|
||||||
this.wheelRevolutionsTime = wheelRevolutionsTime;
|
this.wheelRevolutionsTime = wheelRevolutionsTime;
|
||||||
@@ -113,7 +113,7 @@ public final class SensorDataCycling {
|
|||||||
return wheelRevolutionsCount != null && wheelRevolutionsTime != null;
|
return wheelRevolutionsCount != null && wheelRevolutionsTime != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getWheelRevolutionsCount() {
|
public long getWheelRevolutionsCount() {
|
||||||
return wheelRevolutionsCount;
|
return wheelRevolutionsCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ public class UintUtils {
|
|||||||
throw new RuntimeException("a or b cannot be less than zero.");
|
throw new RuntimeException("a or b cannot be less than zero.");
|
||||||
}
|
}
|
||||||
if (a > UINT_MAX || b > UINT_MAX) {
|
if (a > UINT_MAX || b > UINT_MAX) {
|
||||||
throw new RuntimeException("a or b are outside of the allowed range." + a + " " + b);
|
throw new RuntimeException("a or b are outside of the allowed range.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (a >= b) {
|
if (a >= b) {
|
||||||
|
|||||||
Reference in New Issue
Block a user