diff options
-rw-r--r-- | debug.xml | 2 | ||||
-rw-r--r-- | src/org/traccar/ExtendedObjectDecoder.java | 3 | ||||
-rw-r--r-- | src/org/traccar/protocol/T55ProtocolDecoder.java | 11 | ||||
-rw-r--r-- | test/org/traccar/protocol/EelinkProtocolDecoderTest.java | 3 | ||||
-rw-r--r-- | test/org/traccar/protocol/T55ProtocolDecoderTest.java | 2 |
5 files changed, 16 insertions, 5 deletions
@@ -81,7 +81,7 @@ <entry key='database.ignoreUnknown'>true</entry> <entry key='database.xml'>false</entry> - <entry key='database.saveOriginal'>false</entry> + <entry key='database.saveOriginal'>true</entry> <entry key='database.changelog'>./schema/changelog-master.xml</entry> diff --git a/src/org/traccar/ExtendedObjectDecoder.java b/src/org/traccar/ExtendedObjectDecoder.java index d7ca30de4..1cfc93541 100644 --- a/src/org/traccar/ExtendedObjectDecoder.java +++ b/src/org/traccar/ExtendedObjectDecoder.java @@ -36,7 +36,8 @@ public abstract class ExtendedObjectDecoder implements ChannelUpstreamHandler { if (Context.getConfig().getBoolean("database.saveOriginal") && decodedMessage instanceof Position) { Position position = (Position) decodedMessage; if (originalMessage instanceof ChannelBuffer) { - position.set(Position.KEY_ORIGINAL, ChannelBuffers.hexDump((ChannelBuffer) originalMessage)); + ChannelBuffer buf = (ChannelBuffer) originalMessage; + position.set(Position.KEY_ORIGINAL, ChannelBuffers.hexDump(buf, 0, buf.writerIndex())); } else if (originalMessage instanceof String) { position.set(Position.KEY_ORIGINAL, DatatypeConverter.printHexBinary( ((String) originalMessage).getBytes(StandardCharsets.US_ASCII))); diff --git a/src/org/traccar/protocol/T55ProtocolDecoder.java b/src/org/traccar/protocol/T55ProtocolDecoder.java index 34efc376f..1909d9bea 100644 --- a/src/org/traccar/protocol/T55ProtocolDecoder.java +++ b/src/org/traccar/protocol/T55ProtocolDecoder.java @@ -50,7 +50,9 @@ public class T55ProtocolDecoder extends BaseProtocolDecoder { .expression("[^,]+") .number(",(d+)") // satellites .number(",(d+)") // imei - .number(",(d+)").optional(3) + .number(",([01])") // ignition + .number(",(d+)") // fuel + .number(",(d+)").optional(5) // battery .any() .compile(); @@ -123,13 +125,18 @@ public class T55ProtocolDecoder extends BaseProtocolDecoder { dateBuilder.setDateReverse(parser.nextInt(), parser.nextInt(), parser.nextInt()); position.setTime(dateBuilder.getDate()); - if (parser.hasNext(3)) { + if (parser.hasNext(5)) { position.set(Position.KEY_SATELLITES, parser.next()); + deviceSession = getDeviceSession(channel, remoteAddress, parser.next()); if (deviceSession == null) { return null; } position.setDeviceId(deviceSession.getDeviceId()); + + position.set(Position.KEY_IGNITION, parser.hasNext() && parser.next().equals("1")); + position.set(Position.KEY_FUEL, parser.nextInt()); + position.set(Position.KEY_BATTERY, parser.nextInt()); } if (deviceSession != null) { diff --git a/test/org/traccar/protocol/EelinkProtocolDecoderTest.java b/test/org/traccar/protocol/EelinkProtocolDecoderTest.java index 925e90dd6..c1e913415 100644 --- a/test/org/traccar/protocol/EelinkProtocolDecoderTest.java +++ b/test/org/traccar/protocol/EelinkProtocolDecoderTest.java @@ -14,6 +14,9 @@ public class EelinkProtocolDecoderTest extends ProtocolTest { "676701000c007b03525440717505180104")); verifyPosition(decoder, binary( + "676712001e0092579714d60201f90001785003a301cd1a006a118504f2000000000000")); + + verifyPosition(decoder, binary( "676712003400505784cc0b130246479b07d05a06001800000000070195039f046100002cc52e6466b391604a4900890e7c00000000000006ca")); verifyPosition(decoder, binary( diff --git a/test/org/traccar/protocol/T55ProtocolDecoderTest.java b/test/org/traccar/protocol/T55ProtocolDecoderTest.java index 753b4f689..4cc5f549a 100644 --- a/test/org/traccar/protocol/T55ProtocolDecoderTest.java +++ b/test/org/traccar/protocol/T55ProtocolDecoderTest.java @@ -23,7 +23,7 @@ public class T55ProtocolDecoderTest extends ProtocolTest { "4711/022789000688081/$GPRMC,133343,A,5308.56325,N,1029.12850,E,0.000000,0.000000,290316,,*2A")); verifyPosition(decoder, text( - "$GPRMC,073501.000,A,1255.5125,N,07738.2948,E,0.00,0.53,080316,,,D*73,12,865733027593268,10011")); + "$GPRMC,073446.000,A,1255.5125,N,07738.2948,E,0.00,0.53,080316,D*71,11,865733027593268,1,090,086")); verifyNothing(decoder, text( "$GPFID,ID123456ABC")); |