diff options
-rw-r--r-- | src/org/traccar/protocol/H02ProtocolEncoder.java | 10 | ||||
-rw-r--r-- | test/org/traccar/protocol/H02ProtocolEncoderTest.java | 31 |
2 files changed, 40 insertions, 1 deletions
diff --git a/src/org/traccar/protocol/H02ProtocolEncoder.java b/src/org/traccar/protocol/H02ProtocolEncoder.java index 0b41b9c93..ba362f88e 100644 --- a/src/org/traccar/protocol/H02ProtocolEncoder.java +++ b/src/org/traccar/protocol/H02ProtocolEncoder.java @@ -22,11 +22,13 @@ import org.traccar.helper.Log; import org.traccar.model.Command; public class H02ProtocolEncoder extends StringProtocolEncoder { + private static final String MARKER = "HQ"; private Object formatCommand(DateTime dt, String uniqueId, String cmd, String... params) { String result = String.format( - "*HQ,%s,%s,%02d%02d%02d", + "*%s,%s,%s,%02d%02d%02d", + MARKER, uniqueId, cmd, dt.getHourOfDay(), @@ -51,6 +53,12 @@ public class H02ProtocolEncoder extends StringProtocolEncoder { return formatCommand(dt, uniqueId, "SCF", "0", "0"); case Command.TYPE_ALARM_DISARM: return formatCommand(dt, uniqueId, "SCF", "1", "1"); + case Command.TYPE_ENGINE_STOP: + return formatCommand(dt, uniqueId, "S20", "1", "3", "10", "3", "5", "5", "3", "5", "3", "5", "3", "5"); + case Command.TYPE_ENGINE_RESUME: + return formatCommand(dt, uniqueId, "S20", "0", "0"); + case Command.TYPE_POSITION_PERIODIC: + return formatCommand(dt, uniqueId, "S71", "22", command.getAttributes().get(Command.KEY_FREQUENCY).toString()); default: Log.warning(new UnsupportedOperationException(command.getType())); break; diff --git a/test/org/traccar/protocol/H02ProtocolEncoderTest.java b/test/org/traccar/protocol/H02ProtocolEncoderTest.java index 50f36c12d..620793595 100644 --- a/test/org/traccar/protocol/H02ProtocolEncoderTest.java +++ b/test/org/traccar/protocol/H02ProtocolEncoderTest.java @@ -30,4 +30,35 @@ public class H02ProtocolEncoderTest extends ProtocolTest { Assert.assertEquals("*HQ,123456789012345,SCF,010203,1,1#", encoder.encodeCommand(command, dt)); } + + @Test + public void testEngineStopEncode() throws Exception { + + Command command = new Command(); + command.setDeviceId(1); + command.setType(Command.TYPE_ENGINE_STOP); + + Assert.assertEquals("*HQ,123456789012345,S20,010203,1,3,10,3,5,5,3,5,3,5,3,5#", encoder.encodeCommand(command, dt)); + } + + @Test + public void testEngineResumeEncode() throws Exception { + + Command command = new Command(); + command.setDeviceId(1); + command.setType(Command.TYPE_ENGINE_RESUME); + + Assert.assertEquals("*HQ,123456789012345,S20,010203,0,0#", encoder.encodeCommand(command, dt)); + } + + @Test + public void testPositionPeriodicEncode() throws Exception { + + Command command = new Command(); + command.setDeviceId(1); + command.set(Command.KEY_FREQUENCY, 10); + command.setType(Command.TYPE_POSITION_PERIODIC); + + Assert.assertEquals("*HQ,123456789012345,S71,010203,22,10#", encoder.encodeCommand(command, dt)); + } } |