diff options
-rw-r--r-- | src/org/traccar/protocol/GranitProtocolDecoder.java | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/org/traccar/protocol/GranitProtocolDecoder.java b/src/org/traccar/protocol/GranitProtocolDecoder.java index 63b1671c6..5fa786e4d 100644 --- a/src/org/traccar/protocol/GranitProtocolDecoder.java +++ b/src/org/traccar/protocol/GranitProtocolDecoder.java @@ -19,6 +19,7 @@ import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.Channel; import org.traccar.BaseProtocolDecoder; +import org.traccar.Context; import org.traccar.DeviceSession; import org.traccar.helper.BitUtil; import org.traccar.helper.Checksum; @@ -36,8 +37,17 @@ public class GranitProtocolDecoder extends BaseProtocolDecoder { private static final int HEADER_LENGTH = 6; + private double adc1Ratio; + private double adc2Ratio; + private double adc3Ratio; + private double adc4Ratio; + public GranitProtocolDecoder(GranitProtocol protocol) { super(protocol); + adc1Ratio = Context.getConfig().getDouble("granit.adc1Ratio", 1); + adc2Ratio = Context.getConfig().getDouble("granit.adc2Ratio", 1); + adc3Ratio = Context.getConfig().getDouble("granit.adc3Ratio", 1); + adc4Ratio = Context.getConfig().getDouble("granit.adc4Ratio", 1); } public static void appendChecksum(ChannelBuffer buffer, int length) { @@ -68,7 +78,7 @@ public class GranitProtocolDecoder extends BaseProtocolDecoder { channel.write(response); } - private static void decodeStructure(ChannelBuffer buf, Position position) { + private void decodeStructure(ChannelBuffer buf, Position position) { short flags = buf.readUnsignedByte(); position.setValid(BitUtil.check(flags, 7)); if (BitUtil.check(flags, 1)) { @@ -118,10 +128,10 @@ public class GranitProtocolDecoder extends BaseProtocolDecoder { analogIn3 = analogInHi << 4 & 0x300 | analogIn3; analogIn4 = analogInHi << 2 & 0x300 | analogIn4; - position.set(Position.PREFIX_ADC + 1, analogIn1); - position.set(Position.PREFIX_ADC + 2, analogIn2); - position.set(Position.PREFIX_ADC + 3, analogIn3); - position.set(Position.PREFIX_ADC + 4, analogIn4); + position.set(Position.PREFIX_ADC + 1, analogIn1 * adc1Ratio); + position.set(Position.PREFIX_ADC + 2, analogIn2 * adc2Ratio); + position.set(Position.PREFIX_ADC + 3, analogIn3 * adc3Ratio); + position.set(Position.PREFIX_ADC + 4, analogIn4 * adc4Ratio); position.setAltitude(buf.readUnsignedByte() * 10); |