aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/org/traccar/protocol/Tk103Protocol.java17
-rw-r--r--src/org/traccar/protocol/Tk103ProtocolEncoder.java34
-rw-r--r--test/org/traccar/protocol/Tk103ProtocolEncoderTest.java52
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));
+
+ }
+
}