diff options
author | seym45 <seym45@gmail.com> | 2023-08-22 00:27:36 +0400 |
---|---|---|
committer | seym45 <seym45@gmail.com> | 2023-08-22 00:27:36 +0400 |
commit | 860b8ba8b370f710dd5530253d8748bf6185f1fa (patch) | |
tree | 7db3accd0e2fddc0a0a388914ed9022b75fc6e8a /src/main/java/org/traccar/protocol/GatorProtocolEncoder.java | |
parent | 4157920142182c080dc6a4f21f19417d068fedc5 (diff) | |
download | trackermap-server-860b8ba8b370f710dd5530253d8748bf6185f1fa.tar.gz trackermap-server-860b8ba8b370f710dd5530253d8748bf6185f1fa.tar.bz2 trackermap-server-860b8ba8b370f710dd5530253d8748bf6185f1fa.zip |
Add periodic position fetching command for Gator protocol
Diffstat (limited to 'src/main/java/org/traccar/protocol/GatorProtocolEncoder.java')
-rw-r--r-- | src/main/java/org/traccar/protocol/GatorProtocolEncoder.java | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/main/java/org/traccar/protocol/GatorProtocolEncoder.java b/src/main/java/org/traccar/protocol/GatorProtocolEncoder.java index 6d96c6e9a..5452d83c7 100644 --- a/src/main/java/org/traccar/protocol/GatorProtocolEncoder.java +++ b/src/main/java/org/traccar/protocol/GatorProtocolEncoder.java @@ -43,18 +43,24 @@ public class GatorProtocolEncoder extends BaseProtocolEncoder { return buf; } - private ByteBuf encodeContent(long deviceId, int type) { + private ByteBuf encodeContent(long deviceId, int type, ByteBuf content) { ByteBuf buf = Unpooled.buffer(); buf.writeByte(0x24); buf.writeByte(0x24); buf.writeByte(type); buf.writeByte(0x00); - buf.writeByte(4 + 1 + 1); // ip 4 bytes, checksum and end byte + + // ip 4 bytes, content length, checksum and end byte + buf.writeByte(4 + 1 + (content != null ? content.readableBytes() : 0) + 1); ByteBuf pseudoIPAddress = encodeId(deviceId); buf.writeBytes(pseudoIPAddress); + if (content != null) { + buf.writeBytes(content); + } + int checksum = Checksum.xor(buf.nioBuffer()); buf.writeByte(checksum); @@ -66,13 +72,20 @@ public class GatorProtocolEncoder extends BaseProtocolEncoder { @Override protected Object encodeCommand(Command command) { + ByteBuf content = Unpooled.buffer(); + switch (command.getType()) { case Command.TYPE_POSITION_SINGLE: - return encodeContent(command.getDeviceId(), GatorProtocolDecoder.MSG_POSITION_REQUEST); + return encodeContent(command.getDeviceId(), GatorProtocolDecoder.MSG_POSITION_REQUEST, content); case Command.TYPE_ENGINE_STOP: - return encodeContent(command.getDeviceId(), GatorProtocolDecoder.MSG_CLOSE_THE_OIL_DUCT); + return encodeContent(command.getDeviceId(), GatorProtocolDecoder.MSG_CLOSE_THE_OIL_DUCT, content); case Command.TYPE_ENGINE_RESUME: - return encodeContent(command.getDeviceId(), GatorProtocolDecoder.MSG_RESTORES_THE_OIL_DUCT); + return encodeContent(command.getDeviceId(), GatorProtocolDecoder.MSG_RESTORES_THE_OIL_DUCT, content); + case Command.TYPE_POSITION_PERIODIC: + content.writeShort(command.getInteger(Command.KEY_ENGINE_ON_INTERVAL)); + content.writeShort(command.getInteger(Command.KEY_ENGINE_OFF_INTERVAL)); + content.writeByte(command.getInteger(Command.KEY_HEARTBEAT_INTERVAL)); + return encodeContent(command.getDeviceId(), GatorProtocolDecoder.MSG_POSITION_PERIODIC, content); default: return null; } |