diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2019-12-02 21:35:36 -0800 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2019-12-02 21:35:36 -0800 |
commit | a379356a52cddbd942cee2dfdf87614adba4aa63 (patch) | |
tree | 90eb7b51fc0d0c5261d54b9ed1a6cc6b9d2a7358 | |
parent | 8a918e12f4a899a4ffdb67c58d57daefb94c5ab4 (diff) | |
download | traccar-server-a379356a52cddbd942cee2dfdf87614adba4aa63.tar.gz traccar-server-a379356a52cddbd942cee2dfdf87614adba4aa63.tar.bz2 traccar-server-a379356a52cddbd942cee2dfdf87614adba4aa63.zip |
Handle binary custom commands
-rw-r--r-- | src/main/java/org/traccar/protocol/RuptelaProtocolEncoder.java | 11 | ||||
-rw-r--r-- | src/test/java/org/traccar/protocol/RuptelaProtocolEncoderTest.java | 5 |
2 files changed, 13 insertions, 3 deletions
diff --git a/src/main/java/org/traccar/protocol/RuptelaProtocolEncoder.java b/src/main/java/org/traccar/protocol/RuptelaProtocolEncoder.java index 51967403d..5c053dbcb 100644 --- a/src/main/java/org/traccar/protocol/RuptelaProtocolEncoder.java +++ b/src/main/java/org/traccar/protocol/RuptelaProtocolEncoder.java @@ -19,6 +19,7 @@ import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import org.traccar.BaseProtocolEncoder; import org.traccar.helper.Checksum; +import org.traccar.helper.DataConverter; import org.traccar.model.Command; import org.traccar.Protocol; @@ -49,8 +50,14 @@ public class RuptelaProtocolEncoder extends BaseProtocolEncoder { switch (command.getType()) { case Command.TYPE_CUSTOM: - content.writeBytes(command.getString(Command.KEY_DATA).getBytes(StandardCharsets.US_ASCII)); - return encodeContent(RuptelaProtocolDecoder.MSG_SMS_VIA_GPRS, content); + String data = command.getString(Command.KEY_DATA); + if (data.matches("(\\p{XDigit}{2})+")) { + content.writeBytes(DataConverter.parseHex(data)); + return content; + } else { + content.writeBytes(data.getBytes(StandardCharsets.US_ASCII)); + return encodeContent(RuptelaProtocolDecoder.MSG_SMS_VIA_GPRS, content); + } case Command.TYPE_REQUEST_PHOTO: content.writeByte(1); // sub-command content.writeByte(0); // source diff --git a/src/test/java/org/traccar/protocol/RuptelaProtocolEncoderTest.java b/src/test/java/org/traccar/protocol/RuptelaProtocolEncoderTest.java index 5868b07df..613a89b96 100644 --- a/src/test/java/org/traccar/protocol/RuptelaProtocolEncoderTest.java +++ b/src/test/java/org/traccar/protocol/RuptelaProtocolEncoderTest.java @@ -14,10 +14,13 @@ public class RuptelaProtocolEncoderTest extends ProtocolTest { Command command = new Command(); command.setDeviceId(1); command.setType(Command.TYPE_CUSTOM); - command.set(Command.KEY_DATA, " Setio 2,1"); + command.set(Command.KEY_DATA, " Setio 2,1"); verifyCommand(encoder, command, binary("000b6c20536574696F20322C31eb3e")); + command.set(Command.KEY_DATA, "000b890100000000007fffffff89f0"); + verifyCommand(encoder, command, binary("000b890100000000007fffffff89f0")); + } } |