aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbyss777 <abyss@fox5.ru>2016-07-06 15:43:37 +0500
committerAbyss777 <abyss@fox5.ru>2016-07-06 15:43:37 +0500
commit801f9e25448be8a3b27c3b56798525b2fff27633 (patch)
tree0d1e2124633e56ae205d2b67c6d0d1d9bd11c6e8
parent49f00254695ae56aa03c0174f5aadfe1a0e4c836 (diff)
downloadtrackermap-server-801f9e25448be8a3b27c3b56798525b2fff27633.tar.gz
trackermap-server-801f9e25448be8a3b27c3b56798525b2fff27633.tar.bz2
trackermap-server-801f9e25448be8a3b27c3b56798525b2fff27633.zip
Use dynamicBuffer and some hardcoded lengths.
-rw-r--r--src/org/traccar/protocol/GranitProtocolDecoder.java4
-rw-r--r--src/org/traccar/protocol/GranitProtocolEncoder.java30
2 files changed, 16 insertions, 18 deletions
diff --git a/src/org/traccar/protocol/GranitProtocolDecoder.java b/src/org/traccar/protocol/GranitProtocolDecoder.java
index 6f334d3c5..c919b3d65 100644
--- a/src/org/traccar/protocol/GranitProtocolDecoder.java
+++ b/src/org/traccar/protocol/GranitProtocolDecoder.java
@@ -47,7 +47,7 @@ public class GranitProtocolDecoder extends BaseProtocolDecoder {
}
private static void sendResponseCurrent(Channel channel, int deviceId, long time) {
- ChannelBuffer response = ChannelBuffers.directBuffer(ByteOrder.LITTLE_ENDIAN, 21);
+ ChannelBuffer response = ChannelBuffers.dynamicBuffer(ByteOrder.LITTLE_ENDIAN, 0);
response.writeBytes("BB+UGRC~".getBytes(StandardCharsets.US_ASCII));
response.writeShort(6); //binary length
response.writeInt((int) time);
@@ -57,7 +57,7 @@ public class GranitProtocolDecoder extends BaseProtocolDecoder {
}
private static void sendResponseArchive(Channel channel, int deviceId, int packNum) {
- ChannelBuffer response = ChannelBuffers.directBuffer(ByteOrder.LITTLE_ENDIAN, 19);
+ ChannelBuffer response = ChannelBuffers.dynamicBuffer(ByteOrder.LITTLE_ENDIAN, 0);
response.writeBytes("BB+ARCF~".getBytes(StandardCharsets.US_ASCII));
response.writeShort(4); //binary length
response.writeShort(packNum);
diff --git a/src/org/traccar/protocol/GranitProtocolEncoder.java b/src/org/traccar/protocol/GranitProtocolEncoder.java
index 2f9e0aa10..961f183f5 100644
--- a/src/org/traccar/protocol/GranitProtocolEncoder.java
+++ b/src/org/traccar/protocol/GranitProtocolEncoder.java
@@ -15,7 +15,6 @@
*/
package org.traccar.protocol;
-import java.nio.ByteOrder;
import java.nio.charset.StandardCharsets;
import org.jboss.netty.buffer.ChannelBuffer;
@@ -28,29 +27,28 @@ public class GranitProtocolEncoder extends BaseProtocolEncoder {
@Override
protected Object encodeCommand(Command command) {
- ChannelBuffer commandString;
+ String commandString = "";
switch (command.getType()) {
case Command.TYPE_IDENTIFICATION:
- commandString = ChannelBuffers.directBuffer(ByteOrder.LITTLE_ENDIAN, 12);
- commandString.writeBytes("BB+IDNT".getBytes(StandardCharsets.US_ASCII));
- GranitProtocolDecoder.appendChecksum(commandString, 7);
- return commandString;
+ commandString = "BB+IDNT";
+ break;
case Command.TYPE_REBOOT_DEVICE:
- commandString = ChannelBuffers.directBuffer(ByteOrder.LITTLE_ENDIAN, 13);
- commandString.writeBytes("BB+RESET".getBytes(StandardCharsets.US_ASCII));
- GranitProtocolDecoder.appendChecksum(commandString, 8);
- return commandString;
+ commandString = "BB+RESET";
+ break;
case Command.TYPE_POSITION_SINGLE:
- commandString = ChannelBuffers.directBuffer(ByteOrder.LITTLE_ENDIAN, 12);
- commandString.writeBytes("BB+RRCD".getBytes(StandardCharsets.US_ASCII));
- GranitProtocolDecoder.appendChecksum(commandString, 7);
- return commandString;
+ commandString = "BB+RRCD";
+ break;
default:
Log.warning(new UnsupportedOperationException(command.getType()));
- break;
+ return null;
+ }
+ if (!commandString.isEmpty()) {
+ ChannelBuffer commandBuf = ChannelBuffers.dynamicBuffer();
+ commandBuf.writeBytes(commandString.getBytes(StandardCharsets.US_ASCII));
+ GranitProtocolDecoder.appendChecksum(commandBuf, commandString.length());
+ return commandBuf;
}
-
return null;
}