aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/org/traccar/protocol/OrionProtocolDecoder.java11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/org/traccar/protocol/OrionProtocolDecoder.java b/src/org/traccar/protocol/OrionProtocolDecoder.java
index fa04c6dca..1846bba23 100644
--- a/src/org/traccar/protocol/OrionProtocolDecoder.java
+++ b/src/org/traccar/protocol/OrionProtocolDecoder.java
@@ -25,7 +25,6 @@ import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.traccar.BaseProtocolDecoder;
import org.traccar.ServerManager;
-import org.traccar.helper.Crc;
import org.traccar.helper.Log;
import org.traccar.model.ExtendedInfoFormatter;
import org.traccar.model.Position;
@@ -49,6 +48,12 @@ public class OrionProtocolDecoder extends BaseProtocolDecoder {
}
}
+ private static double convertCoordinate(int value) {
+ double degrees = value / 1000000;
+ double minutes = (Math.abs(value) % 1000000) / 10000.0;
+ return degrees + minutes / 60;
+ }
+
@Override
protected Object decode(
ChannelHandlerContext ctx, Channel channel, Object msg)
@@ -91,8 +96,8 @@ public class OrionProtocolDecoder extends BaseProtocolDecoder {
extendedInfo.set("flag2", buf.readUnsignedByte());
// Location
- position.setLatitude(buf.readInt() / 10000.0);
- position.setLongitude(buf.readInt() / 10000.0);
+ position.setLatitude(convertCoordinate(buf.readInt()));
+ position.setLongitude(convertCoordinate(buf.readInt()));
position.setAltitude(buf.readShort()/ 10.0);
position.setCourse((double) buf.readUnsignedShort());
position.setSpeed(buf.readUnsignedShort() * 0.0539957);