Files
OpenTracks/src/main/java/de/dennisguse/opentracks/util/UintUtils.java
T
Dennis Guse 40188774b1 Bugfix: cycling sensors report wheel count as UINT32.
Garmin Speed Sensor 2 actually counts forward: it was an UINT16 overflow problem (removed workaround).

Fixes #810.
2021-06-11 19:25:40 +02:00

31 lines
739 B
Java

package de.dennisguse.opentracks.util;
public class UintUtils {
public static final int UINT16_MAX = 0xFFFF;
public static final long UINT32_MAX = 0xFFFFFFFFL;
private UintUtils() {
}
/**
* Computes a - b for UINT with overflow (b < a).
*
* @return diff
*/
public static long diff(long a, long b, final long UINT_MAX) {
if (a < 0 || b < 0) {
throw new RuntimeException("a or b cannot be less than zero.");
}
if (a > UINT_MAX || b > UINT_MAX) {
throw new RuntimeException("a or b are outside of the allowed range." + a + " " + b);
}
if (a >= b) {
return a - b;
}
return (UINT_MAX - b) + a;
}
}