diff options
-rw-r--r-- | src/org/traccar/protocol/Tk103Protocol.java | 17 | ||||
-rw-r--r-- | src/org/traccar/protocol/Tk103ProtocolEncoder.java | 34 | ||||
-rw-r--r-- | test/org/traccar/protocol/Tk103ProtocolEncoderTest.java | 52 |
3 files changed, 102 insertions, 1 deletions
diff --git a/src/org/traccar/protocol/Tk103Protocol.java b/src/org/traccar/protocol/Tk103Protocol.java index 07a68e2d8..b205e75f1 100644 --- a/src/org/traccar/protocol/Tk103Protocol.java +++ b/src/org/traccar/protocol/Tk103Protocol.java @@ -40,7 +40,22 @@ public class Tk103Protocol extends BaseProtocol { Command.TYPE_REBOOT_DEVICE, Command.TYPE_SET_ODOMETER, Command.TYPE_ENGINE_STOP, - Command.TYPE_ENGINE_RESUME); + Command.TYPE_ENGINE_RESUME, + //T580W commands: + "T580W_positionSingle", + "T580W_positionRealtime", + "T580W_positionRealtimeStop", + "T580W_modeDeepSleepInterval1Hour", + "T580W_modeDeepSleepInterval2Hour", + "T580W_modeDeepSleepInterval3Hour", + "T580W_modeDeepSleepInterval4Hour", + "T580W_modeDeepSleepMotion", + "T580W_modeDeepSleepOff", + "T580W_alarmSosOn", + "T580W_alarmSosOff", + "T580W_multiControllerOn", + "T580W_multiControllerOff", + "T580W_rebootDevice"); } @Override diff --git a/src/org/traccar/protocol/Tk103ProtocolEncoder.java b/src/org/traccar/protocol/Tk103ProtocolEncoder.java index 9e49b6ff1..dc9fc41a1 100644 --- a/src/org/traccar/protocol/Tk103ProtocolEncoder.java +++ b/src/org/traccar/protocol/Tk103ProtocolEncoder.java @@ -22,6 +22,11 @@ import org.traccar.model.Command; public class Tk103ProtocolEncoder extends StringProtocolEncoder { + protected String t580WFormatCommand(Command command, String format, String... keys) { + String content = super.formatCommand(command, format, keys); + return String.format("[begin]sms2,%s,[end]", content); + } + @Override protected Object encodeCommand(Command command) { @@ -43,6 +48,35 @@ public class Tk103ProtocolEncoder extends StringProtocolEncoder { return formatCommand(command, "({%s}AV011)", Command.KEY_UNIQUE_ID); case Command.TYPE_ENGINE_RESUME: return formatCommand(command, "({%s}AV010)", Command.KEY_UNIQUE_ID); + //T580W commands: + case "T580W_positionSingle": + return t580WFormatCommand(command, "*getposl*"); + case "T580W_positionRealtime": + return t580WFormatCommand(command, "*routetrack*99*"); + case "T580W_positionRealtimeStop": + return t580WFormatCommand(command, "*routetrackoff*"); + case "T580W_modeDeepSleepInterval1Hour": + return t580WFormatCommand(command, "*sleep*1*"); + case "T580W_modeDeepSleepInterval2Hour": + return t580WFormatCommand(command, "*sleep*2*"); + case "T580W_modeDeepSleepInterval3Hour": + return t580WFormatCommand(command, "*sleep*3*"); + case "T580W_modeDeepSleepInterval4Hour": + return t580WFormatCommand(command, "*sleep*4*"); + case "T580W_modeDeepSleepMotion": + return t580WFormatCommand(command, "*sleepv*"); + case "T580W_modeDeepSleepOff": + return t580WFormatCommand(command, "*sleepoff*"); + case "T580W_alarmSosOn": + return t580WFormatCommand(command, "*soson*"); + case "T580W_alarmSosOff": + return t580WFormatCommand(command, "*sosoff*"); + case "T580W_multiControllerOn": + return t580WFormatCommand(command, "*multiquery*"); + case "T580W_multiControllerOff": + return t580WFormatCommand(command, "*multiqueryoff*"); + case "T580W_rebootDevice": + return t580WFormatCommand(command, "88888888"); default: Log.warning(new UnsupportedOperationException(command.getType())); break; diff --git a/test/org/traccar/protocol/Tk103ProtocolEncoderTest.java b/test/org/traccar/protocol/Tk103ProtocolEncoderTest.java index afc3b2387..8439f8d48 100644 --- a/test/org/traccar/protocol/Tk103ProtocolEncoderTest.java +++ b/test/org/traccar/protocol/Tk103ProtocolEncoderTest.java @@ -99,4 +99,56 @@ public class Tk103ProtocolEncoderTest extends ProtocolTest { } + @Test + public void testEncodeT580WRebootDevice() throws Exception { + + Tk103ProtocolEncoder encoder = new Tk103ProtocolEncoder(); + + Command command = new Command(); + command.setDeviceId(1); + command.setType("T580W_rebootDevice"); + + Assert.assertEquals("[begin]sms2,88888888,[end]", encoder.encodeCommand(command)); + + } + + @Test + public void testEncodeT580WSosOn() throws Exception { + + Tk103ProtocolEncoder encoder = new Tk103ProtocolEncoder(); + + Command command = new Command(); + command.setDeviceId(1); + command.setType("T580W_alarmSosOn"); + + Assert.assertEquals("[begin]sms2,*soson*,[end]", encoder.encodeCommand(command)); + + } + + @Test + public void testEncodeT580WSosOff() throws Exception { + + Tk103ProtocolEncoder encoder = new Tk103ProtocolEncoder(); + + Command command = new Command(); + command.setDeviceId(1); + command.setType("T580W_alarmSosOff"); + + Assert.assertEquals("[begin]sms2,*sosoff*,[end]", encoder.encodeCommand(command)); + + } + + @Test + public void testEncodeT580WRouteTrack() throws Exception { + + Tk103ProtocolEncoder encoder = new Tk103ProtocolEncoder(); + + Command command = new Command(); + command.setDeviceId(1); + command.setType("T580W_positionRealtime"); + + Assert.assertEquals("[begin]sms2,*routetrack*99*,[end]", encoder.encodeCommand(command)); + + } + } |