diff options
Diffstat (limited to 'src/main/java/org/traccar')
3 files changed, 44 insertions, 38 deletions
diff --git a/src/main/java/org/traccar/protocol/TotemProtocol.java b/src/main/java/org/traccar/protocol/TotemProtocol.java index ecf7c858a..417a4d6b0 100644 --- a/src/main/java/org/traccar/protocol/TotemProtocol.java +++ b/src/main/java/org/traccar/protocol/TotemProtocol.java @@ -25,7 +25,7 @@ import org.traccar.model.Command; public class TotemProtocol extends BaseProtocol { public TotemProtocol() { - String[] supportedCommands = new String[]{ + setSupportedDataCommands( Command.TYPE_CUSTOM, Command.TYPE_REBOOT_DEVICE, Command.TYPE_FACTORY_RESET, @@ -33,11 +33,18 @@ public class TotemProtocol extends BaseProtocol { Command.TYPE_POSITION_SINGLE, Command.TYPE_ENGINE_RESUME, Command.TYPE_ENGINE_STOP - }; - setSupportedDataCommands(supportedCommands); + ); setTextCommandEncoder(new TotemProtocolSmsEncoder(this)); - setSupportedTextCommands(supportedCommands); + setSupportedTextCommands( + Command.TYPE_CUSTOM, + Command.TYPE_REBOOT_DEVICE, + Command.TYPE_FACTORY_RESET, + Command.TYPE_GET_VERSION, + Command.TYPE_POSITION_SINGLE, + Command.TYPE_ENGINE_RESUME, + Command.TYPE_ENGINE_STOP + ); addServer(new TrackerServer(false, getName()) { @Override diff --git a/src/main/java/org/traccar/protocol/TotemProtocolEncoder.java b/src/main/java/org/traccar/protocol/TotemProtocolEncoder.java index c8c0d5f37..ee1d1ede7 100644 --- a/src/main/java/org/traccar/protocol/TotemProtocolEncoder.java +++ b/src/main/java/org/traccar/protocol/TotemProtocolEncoder.java @@ -1,12 +1,12 @@ /* * Copyright 2015 Irving Gonzalez - * Copyright 2016 - 2019 Anton Tananaev (anton@traccar.org) + * Copyright 2015 - 2019 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 + * 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, @@ -16,27 +16,49 @@ */ package org.traccar.protocol; +import org.traccar.StringProtocolEncoder; import org.traccar.model.Command; import org.traccar.Protocol; import org.traccar.helper.Checksum; -public class TotemProtocolEncoder extends TotemProtocolSmsEncoder { +public class TotemProtocolEncoder extends StringProtocolEncoder { public TotemProtocolEncoder(Protocol protocol) { super(protocol); } - private String encodeCommand(String commandString) { - String builtCommand = String.format("$$%04dCF%s", 10 + commandString.getBytes().length, commandString); - return String.format("%s%02X", builtCommand, Checksum.xor(builtCommand)); + protected String getCommandString(Command command) { + switch (command.getType()) { + case Command.TYPE_CUSTOM: + return formatCommand(command, "%s,%s", Command.KEY_DEVICE_PASSWORD, Command.KEY_DATA); + case Command.TYPE_REBOOT_DEVICE: + return formatCommand(command, "%s,006", Command.KEY_DEVICE_PASSWORD); + case Command.TYPE_FACTORY_RESET: + return formatCommand(command, "%s,007", Command.KEY_DEVICE_PASSWORD); + case Command.TYPE_GET_VERSION: + return formatCommand(command, "%s,056", Command.KEY_DEVICE_PASSWORD); + case Command.TYPE_POSITION_SINGLE: + return formatCommand(command, "%s,012", Command.KEY_DEVICE_PASSWORD); + // Assuming PIN 8 (Output C) is the power wire, like manual says but it can be PIN 5,7,8 + case Command.TYPE_ENGINE_STOP: + return formatCommand(command, "%s,025,C,1", Command.KEY_DEVICE_PASSWORD); + case Command.TYPE_ENGINE_RESUME: + return formatCommand(command, "%s,025,C,0", Command.KEY_DEVICE_PASSWORD); + default: + return null; + } } @Override - protected String encodeCommand(Command command) { + protected Object encodeCommand(Command command) { initDevicePassword(command, "000000"); - return encodeCommand(super.getCommandString(command)); + String commandString = getCommandString(command); + String builtCommand = String.format("$$%04dCF%s", 10 + commandString.getBytes().length, commandString); + + return String.format("%s%02X", builtCommand, Checksum.xor(builtCommand)); + } } diff --git a/src/main/java/org/traccar/protocol/TotemProtocolSmsEncoder.java b/src/main/java/org/traccar/protocol/TotemProtocolSmsEncoder.java index 2384b9730..28180b33b 100644 --- a/src/main/java/org/traccar/protocol/TotemProtocolSmsEncoder.java +++ b/src/main/java/org/traccar/protocol/TotemProtocolSmsEncoder.java @@ -16,44 +16,21 @@ */ package org.traccar.protocol; -import org.traccar.StringProtocolEncoder; import org.traccar.model.Command; import org.traccar.Protocol; -public class TotemProtocolSmsEncoder extends StringProtocolEncoder { +public class TotemProtocolSmsEncoder extends TotemProtocolEncoder { public TotemProtocolSmsEncoder(Protocol protocol) { super(protocol); } - protected String getCommandString(Command command) { - switch (command.getType()) { - case Command.TYPE_CUSTOM: - return formatCommand(command, "%s,%s", Command.KEY_DEVICE_PASSWORD, Command.KEY_DATA); - case Command.TYPE_REBOOT_DEVICE: - return formatCommand(command, "%s,006", Command.KEY_DEVICE_PASSWORD); - case Command.TYPE_FACTORY_RESET: - return formatCommand(command, "%s,007", Command.KEY_DEVICE_PASSWORD); - case Command.TYPE_GET_VERSION: - return formatCommand(command, "%s,056", Command.KEY_DEVICE_PASSWORD); - case Command.TYPE_POSITION_SINGLE: - return formatCommand(command, "%s,012", Command.KEY_DEVICE_PASSWORD); - // Assuming PIN 8 (Output C) is the power wire, like manual says but it can be PIN 5,7,8 - case Command.TYPE_ENGINE_STOP: - return formatCommand(command, "%s,025,C,1", Command.KEY_DEVICE_PASSWORD); - case Command.TYPE_ENGINE_RESUME: - return formatCommand(command, "%s,025,C,0", Command.KEY_DEVICE_PASSWORD); - default: - return null; - } - } - @Override - protected String encodeCommand(Command command) { + protected Object encodeCommand(Command command) { initDevicePassword(command, "000000"); - return String.format("*%s#", getCommandString(command)); + return String.format("*%s#", super.getCommandString(command)); } } |