Skip to content

Commit

Permalink
Add units converter helper
Browse files Browse the repository at this point in the history
  • Loading branch information
Abyss777 committed May 29, 2018
1 parent b41af1b commit c717011
Show file tree
Hide file tree
Showing 9 changed files with 21 additions and 8 deletions.
9 changes: 9 additions & 0 deletions src/org/traccar/helper/UnitsConverter.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public final class UnitsConverter {
private static final double KNOTS_TO_CPS_RATIO = 0.0194384449;
private static final double METERS_TO_FEET_RATIO = 0.3048;
private static final double METERS_TO_MILE_RATIO = 1609.34;
private static final long MILLISECONDS_TO_HOURS_RATIO = 3600000;

private UnitsConverter() {
}
Expand Down Expand Up @@ -71,4 +72,12 @@ public static double metersFromMiles(double value) {
return value * METERS_TO_MILE_RATIO;
}

public static long millisecondsFromHours(int value) {
return value * MILLISECONDS_TO_HOURS_RATIO;
}

public static long millisecondsFromHours(double value) {
return (long) (value * MILLISECONDS_TO_HOURS_RATIO);
}

}
2 changes: 1 addition & 1 deletion src/org/traccar/protocol/AplicomProtocolDecoder.java
Original file line number Diff line number Diff line change
Expand Up @@ -549,7 +549,7 @@ private void decodeF(Position position, ChannelBuffer buf, int selector) {
}

if ((selector & 0x0020) != 0) {
position.set(Position.KEY_HOURS, buf.readUnsignedInt() * 3600000);
position.set(Position.KEY_HOURS, UnitsConverter.millisecondsFromHours(buf.readUnsignedInt()));
position.set("serviceDistance", buf.readInt());
position.set("driverActivity", buf.readUnsignedByte());
position.set(Position.KEY_THROTTLE, buf.readUnsignedByte());
Expand Down
2 changes: 1 addition & 1 deletion src/org/traccar/protocol/AstraProtocolDecoder.java
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ protected Object decode(
if (BitUtil.check(status, 8)) {
position.set(Position.KEY_DRIVER_UNIQUE_ID, buf.readBytes(7).toString(StandardCharsets.US_ASCII));
position.set(Position.KEY_ODOMETER, buf.readUnsignedMedium() * 1000);
position.set(Position.KEY_HOURS, buf.readUnsignedShort() * 3600000);
position.set(Position.KEY_HOURS, UnitsConverter.millisecondsFromHours(buf.readUnsignedShort()));
}

if (BitUtil.check(status, 6)) {
Expand Down
2 changes: 1 addition & 1 deletion src/org/traccar/protocol/ContinentalProtocolDecoder.java
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ protected Object decode(
}

if (buf.readableBytes() > 4) {
position.set(Position.KEY_HOURS, buf.readUnsignedInt() * 3600000);
position.set(Position.KEY_HOURS, UnitsConverter.millisecondsFromHours(buf.readUnsignedInt()));
}

return position;
Expand Down
3 changes: 2 additions & 1 deletion src/org/traccar/protocol/Gl200TextProtocolDecoder.java
Original file line number Diff line number Diff line change
Expand Up @@ -609,7 +609,8 @@ private Object decodeCan(Channel channel, SocketAddress remoteAddress, String se
position.set(Position.KEY_THROTTLE, Integer.parseInt(values[index - 1]));
}
if (BitUtil.check(reportMask, 11)) {
position.set(Position.KEY_HOURS, (long) Double.parseDouble(values[index++]) * 3600000);
position.set(
Position.KEY_HOURS, UnitsConverter.millisecondsFromHours(Double.parseDouble(values[index++])));
}
if (BitUtil.check(reportMask, 12)) {
position.set("drivingHours", Double.parseDouble(values[index++]));
Expand Down
3 changes: 2 additions & 1 deletion src/org/traccar/protocol/Gps103ProtocolDecoder.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import org.traccar.helper.DateBuilder;
import org.traccar.helper.Parser;
import org.traccar.helper.PatternBuilder;
import org.traccar.helper.UnitsConverter;
import org.traccar.model.CellTower;
import org.traccar.model.Network;
import org.traccar.model.Position;
Expand Down Expand Up @@ -255,7 +256,7 @@ private Position decodeObd(Channel channel, SocketAddress remoteAddress, String
position.set(Position.KEY_FUEL_CONSUMPTION, parser.nextDouble(0));
Integer hours = parser.nextInt();
if (hours != null) {
position.set(Position.KEY_HOURS, hours * 3600000);
position.set(Position.KEY_HOURS, UnitsConverter.millisecondsFromHours(hours));
}
position.set(Position.KEY_OBD_SPEED, parser.nextInt(0));
position.set(Position.KEY_ENGINE_LOAD, parser.next());
Expand Down
4 changes: 3 additions & 1 deletion src/org/traccar/protocol/Mta6ProtocolDecoder.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.traccar.helper.BitUtil;
import org.traccar.helper.DateBuilder;
import org.traccar.helper.Log;
import org.traccar.helper.UnitsConverter;
import org.traccar.model.Position;

import java.net.SocketAddress;
Expand Down Expand Up @@ -231,7 +232,8 @@ private Position parseFormatA1(DeviceSession deviceSession, ChannelBuffer buf) {

if (BitUtil.check(flags, 1)) {
position.set(Position.KEY_FUEL_CONSUMPTION, new FloatReader().readFloat(buf));
position.set(Position.KEY_HOURS, (long) (new FloatReader().readFloat(buf) * 3600000));
position.set(
Position.KEY_HOURS, UnitsConverter.millisecondsFromHours(new FloatReader().readFloat(buf)));
position.set("tank", buf.readUnsignedByte() * 0.4);
}

Expand Down
2 changes: 1 addition & 1 deletion src/org/traccar/protocol/VtfmsProtocolDecoder.java
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ protected Object decode(

position.setSpeed(UnitsConverter.knotsFromKph(parser.nextDouble(0)));

position.set(Position.KEY_HOURS, parser.nextInt());
position.set(Position.KEY_HOURS, UnitsConverter.millisecondsFromHours(parser.nextInt()));
position.set("idleHours", parser.nextInt());
position.set(Position.KEY_ODOMETER, parser.nextInt() * 100);
position.set(Position.KEY_CHARGE, parser.next().equals("1"));
Expand Down
2 changes: 1 addition & 1 deletion src/org/traccar/protocol/XirgoProtocolDecoder.java
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ protected Object decode(
position.set(Position.PREFIX_OUT + 1, parser.nextInt());
position.set(Position.PREFIX_ADC + 1, parser.nextDouble());
position.set(Position.KEY_FUEL_LEVEL, parser.nextDouble());
position.set(Position.KEY_HOURS, parser.nextInt() * 3600000);
position.set(Position.KEY_HOURS, UnitsConverter.millisecondsFromHours(parser.nextInt()));
position.set("oilPressure", parser.nextInt());
position.set("oilLevel", parser.nextInt());
position.set("oilTemp", parser.nextInt());
Expand Down

0 comments on commit c717011

Please sign in to comment.