diff options
Diffstat (limited to 'src/org/traccar/protocol/Tk103ProtocolEncoder.java')
-rw-r--r-- | src/org/traccar/protocol/Tk103ProtocolEncoder.java | 119 |
1 files changed, 69 insertions, 50 deletions
diff --git a/src/org/traccar/protocol/Tk103ProtocolEncoder.java b/src/org/traccar/protocol/Tk103ProtocolEncoder.java index dc9fc41a1..e43761c7c 100644 --- a/src/org/traccar/protocol/Tk103ProtocolEncoder.java +++ b/src/org/traccar/protocol/Tk103ProtocolEncoder.java @@ -16,6 +16,7 @@ */ package org.traccar.protocol; +import org.traccar.Context; import org.traccar.StringProtocolEncoder; import org.traccar.helper.Log; import org.traccar.model.Command; @@ -27,59 +28,77 @@ public class Tk103ProtocolEncoder extends StringProtocolEncoder { return String.format("[begin]sms2,%s,[end]", content); } + protected String checkEn(Command command, String ifEnabled, String ifDisabled) { + return command.getBoolean(Command.KEY_ENABLE) ? ifEnabled : ifDisabled; + } + @Override protected Object encodeCommand(Command command) { - switch (command.getType()) { - case Command.TYPE_GET_VERSION: - return formatCommand(command, "({%s}AP07)", Command.KEY_UNIQUE_ID); - case Command.TYPE_REBOOT_DEVICE: - return 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); - case Command.TYPE_POSITION_PERIODIC: - return 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); - 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); - //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; + boolean deviceT580W = Context.getIdentityManager().lookupAttributeBoolean( + command.getDeviceId(), "tk103.deviceT580W", false, true); + + if (deviceT580W) { + + initDevicePassword(command, "123456"); + + switch (command.getType()) { + case Command.TYPE_CUSTOM: + return t580WFormatCommand(command, "{%s}", Command.KEY_DATA); + case Command.TYPE_GET_DEVICE_STATUS: + return t580WFormatCommand(command, "*status*"); + case Command.TYPE_GET_VERSION: + return t580WFormatCommand(command, "*about*"); + case Command.TYPE_IDENTIFICATION: + return t580WFormatCommand(command, "999999"); + case Command.TYPE_REBOOT_DEVICE: + return t580WFormatCommand(command, "88888888"); + case Command.TYPE_POSITION_SINGLE: + return t580WFormatCommand(command, "*getposl*"); + case Command.TYPE_POSITION_PERIODIC: + return t580WFormatCommand(command, "*routetrack*99*"); + case Command.TYPE_POSITION_STOP: + return t580WFormatCommand(command, "*routetrackoff*"); + case Command.TYPE_MODE_DEEP_SLEEP: + return t580WFormatCommand(command, checkEn(command, "*sleep*2*", "*sleepoff*")); + case Command.TYPE_MODE_POWER_SAVING: + return t580WFormatCommand(command, checkEn(command, "*sleepv*", "*sleepoff*")); + case Command.TYPE_ALARM_SOS: + return t580WFormatCommand(command, checkEn(command, "*soson*", "*sosoff*")); + case Command.TYPE_SET_CONNECTION: + String ipAddress = command.getString(Command.KEY_SERVER); + ipAddress = ipAddress.replace(".", "*"); + return t580WFormatCommand(command, "*setip*%s*{%s}*", ipAddress, Command.KEY_PORT); + case Command.TYPE_SOS_NUMBER: + return t580WFormatCommand(command, "*master*{%s}*{%s}*", + Command.KEY_DEVICE_PASSWORD, Command.KEY_PHONE); + default: + Log.warning(new UnsupportedOperationException(command.getType())); + break; + } + } else { + switch (command.getType()) { + case Command.TYPE_GET_VERSION: + return formatCommand(command, "({%s}AP07)", Command.KEY_UNIQUE_ID); + case Command.TYPE_REBOOT_DEVICE: + return 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); + case Command.TYPE_POSITION_PERIODIC: + return 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); + 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); + default: + Log.warning(new UnsupportedOperationException(command.getType())); + break; + } } return null; |