diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2017-12-01 00:18:44 +1300 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2017-12-01 00:18:57 +1300 |
commit | 8e567d133c3d342cebd505c6d2effe6b2a41cb7b (patch) | |
tree | 93b23b7d59bba4028988efd813adc2f336897ea3 /src/org/traccar/protocol/EelinkProtocolEncoder.java | |
parent | a37ade7f1bd6a0c5ab8b6c603734f94afad9337f (diff) | |
download | trackermap-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.java | 28 |
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) { |