aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/org/traccar/protocol/Tk103ProtocolEncoder.java55
-rw-r--r--src/org/traccar/protocol/Tk103ProtocolEncoderAlternative.java70
-rw-r--r--test/org/traccar/protocol/Tk103ProtocolEncoderTest.java22
3 files changed, 56 insertions, 91 deletions
diff --git a/src/org/traccar/protocol/Tk103ProtocolEncoder.java b/src/org/traccar/protocol/Tk103ProtocolEncoder.java
index 03b12b296..d7b17eeb7 100644
--- a/src/org/traccar/protocol/Tk103ProtocolEncoder.java
+++ b/src/org/traccar/protocol/Tk103ProtocolEncoder.java
@@ -23,33 +23,68 @@ import org.traccar.model.Command;
public class Tk103ProtocolEncoder extends StringProtocolEncoder {
+ private final boolean forceAlternative;
+
+ public Tk103ProtocolEncoder() {
+ this.forceAlternative = false;
+ }
+
+ public Tk103ProtocolEncoder(boolean forceAlternative) {
+ this.forceAlternative = forceAlternative;
+ }
+
@Override
protected Object encodeCommand(Command command) {
- if (Context.getIdentityManager().lookupAttributeBoolean(
- command.getDeviceId(), "tk103.alternative", false, true)) {
- Tk103ProtocolEncoderAlternative alternative = new Tk103ProtocolEncoderAlternative();
- return alternative.encodeCommand(command);
- }
+ boolean alternative = forceAlternative || Context.getIdentityManager().lookupAttributeBoolean(
+ command.getDeviceId(), "tk103.alternative", false, true);
+
+ initDevicePassword(command, "123456");
switch (command.getType()) {
case Command.TYPE_GET_VERSION:
- return formatCommand(command, "({%s}AP07)", Command.KEY_UNIQUE_ID);
+ return alternative ? formatCommand(command, "[begin]sms2,*about*,[end]")
+ : formatCommand(command, "({%s}AP07)", Command.KEY_UNIQUE_ID);
case Command.TYPE_REBOOT_DEVICE:
- return formatCommand(command, "({%s}AT00)", Command.KEY_UNIQUE_ID);
+ return alternative ? formatCommand(command, "[begin]sms2,88888888,[end]")
+ : formatCommand(command, "({%s}AT00)", Command.KEY_UNIQUE_ID);
case Command.TYPE_SET_ODOMETER:
return formatCommand(command, "({%s}AX01)", Command.KEY_UNIQUE_ID);
case Command.TYPE_POSITION_SINGLE:
- return formatCommand(command, "({%s}AP00)", Command.KEY_UNIQUE_ID);
+ return alternative ? formatCommand(command, "[begin]sms2,*getposl*,[end]")
+ : formatCommand(command, "({%s}AP00)", Command.KEY_UNIQUE_ID);
case Command.TYPE_POSITION_PERIODIC:
- return formatCommand(command, "({%s}AR00%s0000)", Command.KEY_UNIQUE_ID,
+ return alternative ? formatCommand(command, "[begin]sms2,*routetrack*99*,[end]")
+ : formatCommand(command, "({%s}AR00%s0000)", Command.KEY_UNIQUE_ID,
String.format("%04X", command.getInteger(Command.KEY_FREQUENCY)));
case Command.TYPE_POSITION_STOP:
- return formatCommand(command, "({%s}AR0000000000)", Command.KEY_UNIQUE_ID);
+ return alternative ? formatCommand(command, "[begin]sms2,*routetrackoff*,[end]")
+ : formatCommand(command, "({%s}AR0000000000)", Command.KEY_UNIQUE_ID);
case Command.TYPE_ENGINE_STOP:
return formatCommand(command, "({%s}AV011)", Command.KEY_UNIQUE_ID);
case Command.TYPE_ENGINE_RESUME:
return formatCommand(command, "({%s}AV010)", Command.KEY_UNIQUE_ID);
+ case Command.TYPE_CUSTOM:
+ return formatCommand(command, "[begin]sms2,{%s},[end]", Command.KEY_DATA);
+ case Command.TYPE_GET_DEVICE_STATUS:
+ return formatCommand(command, "[begin]sms2,*status*,[end]");
+ case Command.TYPE_IDENTIFICATION:
+ return formatCommand(command, "[begin]sms2,999999,[end]");
+ case Command.TYPE_MODE_DEEP_SLEEP:
+ return formatCommand(command, command.getBoolean(Command.KEY_ENABLE)
+ ? "[begin]sms2,*sleep*2*,[end]" : "[begin]sms2,*sleepoff*,[end]");
+ case Command.TYPE_MODE_POWER_SAVING:
+ return formatCommand(command, command.getBoolean(Command.KEY_ENABLE)
+ ? "[begin]sms2,*sleepv*,[end]" : "[begin]sms2,*sleepoff*,[end]");
+ case Command.TYPE_ALARM_SOS:
+ return formatCommand(command, command.getBoolean(Command.KEY_ENABLE)
+ ? "[begin]sms2,*soson*,[end]" : "[begin]sms2,*sosoff*,[end]");
+ case Command.TYPE_SET_CONNECTION:
+ return formatCommand(command, "[begin]sms2,*setip*%s*{%s}*,[end]",
+ command.getString(Command.KEY_SERVER).replace(".", "*"), Command.KEY_PORT);
+ case Command.TYPE_SOS_NUMBER:
+ return formatCommand(command, "[begin]sms2,*master*{%s}*{%s}*,[end]",
+ Command.KEY_DEVICE_PASSWORD, Command.KEY_PHONE);
default:
Log.warning(new UnsupportedOperationException(command.getType()));
break;
diff --git a/src/org/traccar/protocol/Tk103ProtocolEncoderAlternative.java b/src/org/traccar/protocol/Tk103ProtocolEncoderAlternative.java
deleted file mode 100644
index 68398ae84..000000000
--- a/src/org/traccar/protocol/Tk103ProtocolEncoderAlternative.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2017 Valerii Vyshniak (val@val.one)
- * Copyright 2017 Anton Tananaev (anton@traccar.org)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.traccar.protocol;
-
-import org.traccar.StringProtocolEncoder;
-import org.traccar.helper.Log;
-import org.traccar.model.Command;
-
-public class Tk103ProtocolEncoderAlternative extends StringProtocolEncoder {
-
- @Override
- protected Object encodeCommand(Command command) {
-
- initDevicePassword(command, "123456");
-
- switch (command.getType()) {
- case Command.TYPE_CUSTOM:
- return formatCommand(command, "[begin]sms2,{%s},[end]", Command.KEY_DATA);
- case Command.TYPE_GET_VERSION:
- return formatCommand(command, "[begin]sms2,*about*,[end]");
- case Command.TYPE_IDENTIFICATION:
- return formatCommand(command, "[begin]sms2,999999,[end]");
- case Command.TYPE_GET_DEVICE_STATUS:
- return formatCommand(command, "[begin]sms2,*status*,[end]");
- case Command.TYPE_REBOOT_DEVICE:
- return formatCommand(command, "[begin]sms2,88888888,[end]");
- case Command.TYPE_POSITION_SINGLE:
- return formatCommand(command, "[begin]sms2,*getposl*,[end]");
- case Command.TYPE_POSITION_PERIODIC:
- return formatCommand(command, "[begin]sms2,*routetrack*99*,[end]");
- case Command.TYPE_POSITION_STOP:
- return formatCommand(command, "[begin]sms2,*routetrackoff*,[end]");
- case Command.TYPE_MODE_DEEP_SLEEP:
- return formatCommand(command, command.getBoolean(Command.KEY_ENABLE)
- ? "[begin]sms2,*sleep*2*,[end]" : "[begin]sms2,*sleepoff*,[end]");
- case Command.TYPE_MODE_POWER_SAVING:
- return formatCommand(command, command.getBoolean(Command.KEY_ENABLE)
- ? "[begin]sms2,*sleepv*,[end]" : "[begin]sms2,*sleepoff*,[end]");
- case Command.TYPE_ALARM_SOS:
- return formatCommand(command, command.getBoolean(Command.KEY_ENABLE)
- ? "[begin]sms2,*soson*,[end]" : "[begin]sms2,*sosoff*,[end]");
- case Command.TYPE_SET_CONNECTION:
- return formatCommand(command, "[begin]sms2,*setip*%s*{%s}*,[end]",
- command.getString(Command.KEY_SERVER).replace(".", "*"), Command.KEY_PORT);
- case Command.TYPE_SOS_NUMBER:
- return formatCommand(command, "[begin]sms2,*master*{%s}*{%s}*,[end]",
- Command.KEY_DEVICE_PASSWORD, Command.KEY_PHONE);
- default:
- Log.warning(new UnsupportedOperationException(command.getType()));
- break;
- }
-
- return null;
- }
-
-}
diff --git a/test/org/traccar/protocol/Tk103ProtocolEncoderTest.java b/test/org/traccar/protocol/Tk103ProtocolEncoderTest.java
index c521d4d73..a99889e3b 100644
--- a/test/org/traccar/protocol/Tk103ProtocolEncoderTest.java
+++ b/test/org/traccar/protocol/Tk103ProtocolEncoderTest.java
@@ -104,7 +104,7 @@ public class Tk103ProtocolEncoderTest extends ProtocolTest {
@Test
public void testEncodePositionSingleAlternative() throws Exception {
- Tk103ProtocolEncoderAlternative encoder = new Tk103ProtocolEncoderAlternative();
+ Tk103ProtocolEncoder encoder = new Tk103ProtocolEncoder(true);
Command command = new Command();
command.setDeviceId(1);
@@ -117,7 +117,7 @@ public class Tk103ProtocolEncoderTest extends ProtocolTest {
@Test
public void testEncodePositionPeriodicAlternative() throws Exception {
- Tk103ProtocolEncoderAlternative encoder = new Tk103ProtocolEncoderAlternative();
+ Tk103ProtocolEncoder encoder = new Tk103ProtocolEncoder(true);
Command command = new Command();
command.setDeviceId(1);
@@ -130,7 +130,7 @@ public class Tk103ProtocolEncoderTest extends ProtocolTest {
@Test
public void testEncodePositionStopAlternative() throws Exception {
- Tk103ProtocolEncoderAlternative encoder = new Tk103ProtocolEncoderAlternative();
+ Tk103ProtocolEncoder encoder = new Tk103ProtocolEncoder(true);
Command command = new Command();
command.setDeviceId(1);
@@ -143,7 +143,7 @@ public class Tk103ProtocolEncoderTest extends ProtocolTest {
@Test
public void testEncodeGetVersionAlternative() throws Exception {
- Tk103ProtocolEncoderAlternative encoder = new Tk103ProtocolEncoderAlternative();
+ Tk103ProtocolEncoder encoder = new Tk103ProtocolEncoder(true);
Command command = new Command();
command.setDeviceId(1);
@@ -156,7 +156,7 @@ public class Tk103ProtocolEncoderTest extends ProtocolTest {
@Test
public void testEncodeRebootDeviceAlternative() throws Exception {
- Tk103ProtocolEncoderAlternative encoder = new Tk103ProtocolEncoderAlternative();
+ Tk103ProtocolEncoder encoder = new Tk103ProtocolEncoder(true);
Command command = new Command();
command.setDeviceId(1);
@@ -169,7 +169,7 @@ public class Tk103ProtocolEncoderTest extends ProtocolTest {
@Test
public void testEncodeIdentificationAlternative() throws Exception {
- Tk103ProtocolEncoderAlternative encoder = new Tk103ProtocolEncoderAlternative();
+ Tk103ProtocolEncoder encoder = new Tk103ProtocolEncoder(true);
Command command = new Command();
command.setDeviceId(1);
@@ -182,7 +182,7 @@ public class Tk103ProtocolEncoderTest extends ProtocolTest {
@Test
public void testEncodeSosOnAlternative() throws Exception {
- Tk103ProtocolEncoderAlternative encoder = new Tk103ProtocolEncoderAlternative();
+ Tk103ProtocolEncoder encoder = new Tk103ProtocolEncoder(true);
Command command = new Command();
command.setDeviceId(1);
@@ -196,7 +196,7 @@ public class Tk103ProtocolEncoderTest extends ProtocolTest {
@Test
public void testEncodeSosOffAlternative() throws Exception {
- Tk103ProtocolEncoderAlternative encoder = new Tk103ProtocolEncoderAlternative();
+ Tk103ProtocolEncoder encoder = new Tk103ProtocolEncoder(true);
Command command = new Command();
command.setDeviceId(1);
@@ -210,7 +210,7 @@ public class Tk103ProtocolEncoderTest extends ProtocolTest {
@Test
public void testEncodeCustomAlternative() throws Exception {
- Tk103ProtocolEncoderAlternative encoder = new Tk103ProtocolEncoderAlternative();
+ Tk103ProtocolEncoder encoder = new Tk103ProtocolEncoder(true);
Command command = new Command();
command.setDeviceId(1);
@@ -224,7 +224,7 @@ public class Tk103ProtocolEncoderTest extends ProtocolTest {
@Test
public void testEncodeSetConnectionAlternative() throws Exception {
- Tk103ProtocolEncoderAlternative encoder = new Tk103ProtocolEncoderAlternative();
+ Tk103ProtocolEncoder encoder = new Tk103ProtocolEncoder(true);
Command command = new Command();
command.setDeviceId(1);
@@ -239,7 +239,7 @@ public class Tk103ProtocolEncoderTest extends ProtocolTest {
@Test
public void testEncodeSosNumberAlternative() throws Exception {
- Tk103ProtocolEncoderAlternative encoder = new Tk103ProtocolEncoderAlternative();
+ Tk103ProtocolEncoder encoder = new Tk103ProtocolEncoder(true);
Command command = new Command();
command.setDeviceId(1);