diff --git a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/AbstractConnectionState.java b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/AbstractConnectionState.java index 78c1e0cc2..e2151f1a5 100644 --- a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/AbstractConnectionState.java +++ b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/AbstractConnectionState.java @@ -17,6 +17,7 @@ import java.nio.channels.Channel; import java.util.concurrent.ScheduledExecutorService; import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.openhab.binding.lcn.internal.common.LcnAddr; import org.openhab.binding.lcn.internal.common.LcnDefs; @@ -84,6 +85,23 @@ public abstract class AbstractConnectionState extends AbstractState context.handleConnectionFailed( + () -> handleConnectionFailed( new LcnException("Network timeout in state " + getClass().getSimpleName())), connection.getSettings().getTimeout(), TimeUnit.MILLISECONDS)); } diff --git a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateConnecting.java b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateConnecting.java index aee67ed1c..26b9c00c7 100644 --- a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateConnecting.java +++ b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateConnecting.java @@ -86,7 +86,7 @@ public class ConnectionStateConnecting extends AbstractConnectionState { message = e.getMessage(); } connection.getCallback().onOffline(Objects.requireNonNullElse(message, "")); - context.handleConnectionFailed(e); + handleConnectionFailed(e); } @Override diff --git a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateGracePeriodBeforeReconnect.java b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateGracePeriodBeforeReconnect.java index 3781a5337..34775b7cb 100644 --- a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateGracePeriodBeforeReconnect.java +++ b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateGracePeriodBeforeReconnect.java @@ -15,6 +15,7 @@ package org.openhab.binding.lcn.internal.connection; import java.util.concurrent.TimeUnit; import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; /** * This state is active when the connection failed. A grace period is enforced to prevent fast cycling through the @@ -42,4 +43,9 @@ public class ConnectionStateGracePeriodBeforeReconnect extends AbstractConnectio public void onPckMessageReceived(String data) { // nothing } + + @Override + public void handleConnectionFailed(@Nullable Throwable e) { + // nothing + } } diff --git a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateMachine.java b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateMachine.java index cb7575543..5e97faf0c 100644 --- a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateMachine.java +++ b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateMachine.java @@ -46,7 +46,7 @@ public class ConnectionStateMachine extends AbstractStateMachine localLegacyTimer = legacyTimer; - if (data.equals(LcnDefs.LCNCONNSTATE_DISCONNECTED)) { - if (localLegacyTimer != null) { - localLegacyTimer.cancel(true); - } - connection.getCallback().onOffline("LCN bus not connected to LCN-PCHK/PKE"); - } else if (data.equals(LcnDefs.LCNCONNSTATE_CONNECTED)) { - if (localLegacyTimer != null) { - localLegacyTimer.cancel(true); - } - connection.getCallback().onOnline(); - nextState(ConnectionStateSendDimMode::new); - } else if (data.equals(LcnDefs.INSUFFICIENT_LICENSES)) { - context.handleConnectionFailed( - new LcnException("LCN-PCHK/PKE has not enough licenses to handle this connection")); + if (localLegacyTimer != null) { + localLegacyTimer.cancel(true); } } }