From 7cd97f4c4caabf5bed5320350fe3cc7f7a9a42ca Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Wed, 26 Feb 2020 20:02:52 +0100 Subject: [PATCH] [Major] Renamed PlcConnection.isConnectAtStartup() to isAutoConnect(), and use respectively --- .../main/java/li/strolch/plc/core/hw/DefaultPlc.java | 11 ++++++----- .../java/li/strolch/plc/core/hw/PlcConnection.java | 2 +- .../hw/connections/DataLogicScannerConnection.java | 11 +++++++---- .../plc/core/hw/i2c/PCF8574InputConnection.java | 3 +-- .../plc/core/hw/i2c/PCF8574OutputConnection.java | 2 +- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/DefaultPlc.java b/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/DefaultPlc.java index 1e37d97..3d2567c 100644 --- a/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/DefaultPlc.java +++ b/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/DefaultPlc.java @@ -5,7 +5,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import li.strolch.plc.model.ConnectionState; import li.strolch.plc.model.PlcAddress; import li.strolch.plc.model.PlcAddressType; import li.strolch.utils.ExecutorPool; @@ -106,15 +105,17 @@ public class DefaultPlc implements Plc { private PlcConnection validateConnection(PlcAddress plcAddress) { PlcConnection connection = getConnection(plcAddress); - if (connection.getState() == ConnectionState.Connected) + if (!connection.isAutoConnect() || connection.isConnected()) return connection; connection.connect(); - if (connection.getState() == ConnectionState.Connected) + if (connection.isConnected()) return connection; - throw new IllegalStateException("PlcConnection " + connection.getId() + " is disconnected for " + plcAddress); + throw new IllegalStateException( + "PlcConnection " + connection.getId() + " could not connect to " + plcAddress + " due to " + connection + .getStateMsg()); } @Override @@ -133,7 +134,7 @@ public class DefaultPlc implements Plc { @Override public void start() { this.executorPool = new ExecutorPool(); - this.connections.values().stream().filter(PlcConnection::isConnectAtStartup).forEach(PlcConnection::connect); + this.connections.values().stream().filter(PlcConnection::isAutoConnect).forEach(PlcConnection::connect); } @Override diff --git a/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/PlcConnection.java b/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/PlcConnection.java index 4af3ccb..a5f8f8d 100644 --- a/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/PlcConnection.java +++ b/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/PlcConnection.java @@ -49,7 +49,7 @@ public abstract class PlcConnection { throw new IllegalStateException("PlcConnection " + this.id + " is not yet connected!"); } - public boolean isConnectAtStartup() { + public boolean isAutoConnect() { return true; } diff --git a/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/connections/DataLogicScannerConnection.java b/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/connections/DataLogicScannerConnection.java index a9046d3..e8056ab 100644 --- a/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/connections/DataLogicScannerConnection.java +++ b/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/connections/DataLogicScannerConnection.java @@ -2,6 +2,7 @@ package li.strolch.plc.core.hw.connections; import static java.util.Collections.singletonList; import static li.strolch.utils.helper.ExceptionHelper.getExceptionMessageWithCauses; +import static li.strolch.utils.helper.StringHelper.isEmpty; import java.io.IOException; import java.io.InputStream; @@ -16,7 +17,6 @@ import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import li.strolch.plc.core.hw.Plc; -import li.strolch.plc.model.ConnectionState; import li.strolch.utils.helper.AsciiHelper; public class DataLogicScannerConnection extends SimplePlcConnection { @@ -39,7 +39,7 @@ public class DataLogicScannerConnection extends SimplePlcConnection { } @Override - public boolean isConnectAtStartup() { + public boolean isAutoConnect() { return false; } @@ -57,7 +57,7 @@ public class DataLogicScannerConnection extends SimplePlcConnection { @Override public boolean connect() { - if (getState() == ConnectionState.Connected) + if (isConnected()) return true; try { @@ -190,6 +190,9 @@ public class DataLogicScannerConnection extends SimplePlcConnection { public void send(String address, Object value) { String command = (String) value; + if (isEmpty(command)) + throw new IllegalArgumentException( + "PlcAddress " + address + " command empty. Must be one of " + CMD_START + " or " + CMD_STOP); try { switch (command) { @@ -203,7 +206,7 @@ public class DataLogicScannerConnection extends SimplePlcConnection { break; case CMD_STOP: - if (getState() == ConnectionState.Connected) { + if (isConnected()) { sendStopTrigger(); disconnect(); } diff --git a/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/i2c/PCF8574InputConnection.java b/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/i2c/PCF8574InputConnection.java index 4988d84..dfd3c8d 100644 --- a/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/i2c/PCF8574InputConnection.java +++ b/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/i2c/PCF8574InputConnection.java @@ -18,7 +18,6 @@ import com.pi4j.io.i2c.I2CFactory; import li.strolch.plc.core.hw.Plc; import li.strolch.plc.core.hw.connections.SimplePlcConnection; import li.strolch.plc.core.hw.gpio.PlcGpioController; -import li.strolch.plc.model.ConnectionState; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -87,7 +86,7 @@ public class PCF8574InputConnection extends SimplePlcConnection { @Override public boolean connect() { - if (this.connectionState == ConnectionState.Connected) { + if (isConnected()) { logger.warn(this.id + ": Already connected"); return true; } diff --git a/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/i2c/PCF8574OutputConnection.java b/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/i2c/PCF8574OutputConnection.java index 338ca45..ca6f406 100644 --- a/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/i2c/PCF8574OutputConnection.java +++ b/strolch-plc-core/src/main/java/li/strolch/plc/core/hw/i2c/PCF8574OutputConnection.java @@ -63,7 +63,7 @@ public class PCF8574OutputConnection extends SimplePlcConnection { @Override public boolean connect() { - if (this.connectionState == ConnectionState.Connected) { + if (isConnected()) { logger.warn(this.id + ": Already connected"); return true; }