aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/protocol/EelinkProtocolEncoder.java
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2017-12-01 00:18:44 +1300
committerAnton Tananaev <anton.tananaev@gmail.com>2017-12-01 00:18:57 +1300
commit8e567d133c3d342cebd505c6d2effe6b2a41cb7b (patch)
tree93b23b7d59bba4028988efd813adc2f336897ea3 /src/org/traccar/protocol/EelinkProtocolEncoder.java
parenta37ade7f1bd6a0c5ab8b6c603734f94afad9337f (diff)
downloadtrackermap-server-8e567d133c3d342cebd505c6d2effe6b2a41cb7b.tar.gz
trackermap-server-8e567d133c3d342cebd505c6d2effe6b2a41cb7b.tar.bz2
trackermap-server-8e567d133c3d342cebd505c6d2effe6b2a41cb7b.zip
Support eelink UDP response
Diffstat (limited to 'src/org/traccar/protocol/EelinkProtocolEncoder.java')
-rw-r--r--src/org/traccar/protocol/EelinkProtocolEncoder.java28
1 files changed, 20 insertions, 8 deletions
diff --git a/src/org/traccar/protocol/EelinkProtocolEncoder.java b/src/org/traccar/protocol/EelinkProtocolEncoder.java
index 917f964fe..41d76b24a 100644
--- a/src/org/traccar/protocol/EelinkProtocolEncoder.java
+++ b/src/org/traccar/protocol/EelinkProtocolEncoder.java
@@ -41,23 +41,24 @@ public class EelinkProtocolEncoder extends BaseProtocolEncoder {
return sum;
}
- private ChannelBuffer encodeContent(long deviceId, String content) {
+ public static ChannelBuffer encodeContent(
+ boolean connectionless, String uniqueId, int type, int index, ChannelBuffer content) {
ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
if (connectionless) {
- buf.writeBytes(ChannelBuffers.wrappedBuffer(DatatypeConverter.parseHexBinary('0' + getUniqueId(deviceId))));
+ buf.writeBytes(ChannelBuffers.wrappedBuffer(DatatypeConverter.parseHexBinary('0' + uniqueId)));
}
buf.writeByte(0x67);
buf.writeByte(0x67);
- buf.writeByte(EelinkProtocolDecoder.MSG_DOWNLINK);
- buf.writeShort(2 + 1 + 4 + content.length()); // length
- buf.writeShort(0); // index
+ buf.writeByte(type);
+ buf.writeShort(2 + (content != null ? content.readableBytes() : 0)); // length
+ buf.writeShort(index);
- buf.writeByte(0x01); // command
- buf.writeInt(0); // server id
- buf.writeBytes(content.getBytes(StandardCharsets.UTF_8));
+ if (content != null) {
+ buf.writeBytes(content);
+ }
ChannelBuffer result = ChannelBuffers.dynamicBuffer();
@@ -73,6 +74,17 @@ public class EelinkProtocolEncoder extends BaseProtocolEncoder {
return result;
}
+ private ChannelBuffer encodeContent(long deviceId, String content) {
+
+ ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
+
+ buf.writeByte(0x01); // command
+ buf.writeInt(0); // server id
+ buf.writeBytes(content.getBytes(StandardCharsets.UTF_8));
+
+ return encodeContent(connectionless, getUniqueId(deviceId), EelinkProtocolDecoder.MSG_DOWNLINK, 0, buf);
+ }
+
@Override
protected Object encodeCommand(Command command) {