aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGavriel Fleischer <flocsy@gmail.com>2019-02-12 03:45:44 +0200
committerGavriel Fleischer <flocsy@gmail.com>2019-02-12 03:45:44 +0200
commitc1de08db7773eef6b1ed4a6e2b62f15d1df6a2a5 (patch)
tree7690af5fb65cf4c81c1535a9958f688badf886c8
parentc37ebc1b07ba7ea6eeccc0b04b2cac72041507e0 (diff)
downloadtraccar-server-c1de08db7773eef6b1ed4a6e2b62f15d1df6a2a5.tar.gz
traccar-server-c1de08db7773eef6b1ed4a6e2b62f15d1df6a2a5.tar.bz2
traccar-server-c1de08db7773eef6b1ed4a6e2b62f15d1df6a2a5.zip
fixed 8bit voice message
-rw-r--r--src/org/traccar/protocol/WatchProtocol.java4
-rw-r--r--src/org/traccar/protocol/WatchProtocolEncoder.java2
-rw-r--r--test/org/traccar/protocol/WatchProtocolEncoderTest.java14
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 {
@@ -41,6 +43,18 @@ public class WatchProtocolEncoderTest extends ProtocolTest {
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);
command.set(Command.KEY_MESSAGE, "text");
assertEquals("[CS*123456789012345*0018*MESSAGE,0074006500780074]", encoder.encodeCommand(null, command));