From 1f56f881365fbe31736c26c3b5ba848c2fda4f64 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Tue, 2 Sep 2014 20:33:09 +1200 Subject: Fix coordinates decoding --- src/org/traccar/protocol/OrionProtocolDecoder.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/org/traccar') 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); -- cgit v1.2.3