From c1de08db7773eef6b1ed4a6e2b62f15d1df6a2a5 Mon Sep 17 00:00:00 2001 From: Gavriel Fleischer Date: Tue, 12 Feb 2019 03:45:44 +0200 Subject: fixed 8bit voice message --- src/org/traccar/protocol/WatchProtocol.java | 4 +++- src/org/traccar/protocol/WatchProtocolEncoder.java | 2 +- test/org/traccar/protocol/WatchProtocolEncoderTest.java | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/org/traccar/protocol/WatchProtocol.java b/src/org/traccar/protocol/WatchProtocol.java index 5d923106d..07a146572 100644 --- a/src/org/traccar/protocol/WatchProtocol.java +++ b/src/org/traccar/protocol/WatchProtocol.java @@ -22,6 +22,8 @@ import org.traccar.model.Command; import io.netty.handler.codec.string.StringEncoder; +import java.nio.charset.StandardCharsets; + public class WatchProtocol extends BaseProtocol { public WatchProtocol() { @@ -45,7 +47,7 @@ public class WatchProtocol extends BaseProtocol { @Override protected void addProtocolHandlers(PipelineBuilder pipeline) { pipeline.addLast(new WatchFrameDecoder()); - pipeline.addLast(new StringEncoder()); + pipeline.addLast(new StringEncoder(StandardCharsets.ISO_8859_1)); pipeline.addLast(new WatchProtocolEncoder()); pipeline.addLast(new WatchProtocolDecoder(WatchProtocol.this)); } diff --git a/src/org/traccar/protocol/WatchProtocolEncoder.java b/src/org/traccar/protocol/WatchProtocolEncoder.java index 431b0455a..28b0b9407 100644 --- a/src/org/traccar/protocol/WatchProtocolEncoder.java +++ b/src/org/traccar/protocol/WatchProtocolEncoder.java @@ -109,7 +109,7 @@ public class WatchProtocolEncoder extends StringProtocolEncoder implements Strin index += 1; } - return new String(encodedData, StandardCharsets.US_ASCII); + return new String(encodedData, StandardCharsets.ISO_8859_1); } @Override diff --git a/test/org/traccar/protocol/WatchProtocolEncoderTest.java b/test/org/traccar/protocol/WatchProtocolEncoderTest.java index f55086082..05faa1f53 100644 --- a/test/org/traccar/protocol/WatchProtocolEncoderTest.java +++ b/test/org/traccar/protocol/WatchProtocolEncoderTest.java @@ -4,6 +4,8 @@ import org.junit.Test; import org.traccar.ProtocolTest; import org.traccar.model.Command; +import java.nio.charset.StandardCharsets; + import static org.junit.Assert.assertEquals; public class WatchProtocolEncoderTest extends ProtocolTest { @@ -39,6 +41,18 @@ public class WatchProtocolEncoderTest extends ProtocolTest { command.set(Command.KEY_DATA, "2321414d520a2573"); assertEquals("[CS*123456789012345*000b*TK,#!AMR\n%s]", encoder.encodeCommand(null, command)); + command = new Command(); + command.setDeviceId(1); + command.setType(Command.TYPE_VOICE_MESSAGE); + command.set(Command.KEY_DATA, "ff"); + assertEquals("[CS*123456789012345*0004*TK," + binary("ff").toString(StandardCharsets.ISO_8859_1) + ']', encoder.encodeCommand(null, command)); + + command = new Command(); + command.setDeviceId(1); + command.setType(Command.TYPE_VOICE_MESSAGE); + command.set(Command.KEY_DATA, "7d5b5d2c2a"); + assertEquals("[CS*123456789012345*000d*TK," + binary("7d017d027d037d047d05").toString(StandardCharsets.ISO_8859_1) + ']', encoder.encodeCommand(null, command)); + command = new Command(); command.setDeviceId(1); command.setType(Command.TYPE_MESSAGE); -- cgit v1.2.3