From 72f80c6be7e90e8bd4bef4aea4114ce4863ce709 Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 3 Jul 2020 13:30:52 -0400 Subject: [PATCH] refactoring --- .../main/java/com/rusefi/io/serial/PortHolder.java | 11 +++++++---- .../java/com/rusefi/io/serial/SerialConnector.java | 10 ++++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/java_console/io/src/main/java/com/rusefi/io/serial/PortHolder.java b/java_console/io/src/main/java/com/rusefi/io/serial/PortHolder.java index 73a902d202..14f4e96ea5 100644 --- a/java_console/io/src/main/java/com/rusefi/io/serial/PortHolder.java +++ b/java_console/io/src/main/java/com/rusefi/io/serial/PortHolder.java @@ -18,24 +18,25 @@ import java.awt.*; * 7/25/13 * Andrey Belomutskiy, (c) 2013-2020 */ -public class PortHolder { +public abstract class PortHolder { private final DataListener dataListener; private final Logger logger; private final LinkManager linkManager; public ConnectionStateListener listener; private final Object portLock = new Object(); + private final String port; @Nullable private BinaryProtocol bp; - protected PortHolder(LinkManager linkManager, Logger logger) { + protected PortHolder(String port, LinkManager linkManager, Logger logger) { + this.port = port; this.linkManager = linkManager; dataListener = freshData -> linkManager.getEngineState().processNewData(new String(freshData), LinkManager.ENCODER); this.logger = logger; } - public String port; boolean connectAndReadConfiguration() { if (port == null) @@ -43,7 +44,7 @@ public class PortHolder { MessagesCentral.getInstance().postMessage(logger, getClass(), "Opening port: " + port); - IoStream stream = SerialIoStreamJSerialComm.openPort(port, logger); + IoStream stream = openStream(); synchronized (portLock) { bp = new BinaryProtocol(linkManager, logger, stream); portLock.notifyAll(); @@ -60,6 +61,8 @@ public class PortHolder { return result; } + protected abstract IoStream openStream(); + public void close() { synchronized (portLock) { if (bp != null) { diff --git a/java_console/io/src/main/java/com/rusefi/io/serial/SerialConnector.java b/java_console/io/src/main/java/com/rusefi/io/serial/SerialConnector.java index 7e18f0adc9..4add0db7b9 100644 --- a/java_console/io/src/main/java/com/rusefi/io/serial/SerialConnector.java +++ b/java_console/io/src/main/java/com/rusefi/io/serial/SerialConnector.java @@ -4,8 +4,10 @@ import com.opensr5.Logger; import com.rusefi.binaryprotocol.BinaryProtocol; import com.rusefi.core.MessagesCentral; import com.rusefi.io.ConnectionStateListener; +import com.rusefi.io.IoStream; import com.rusefi.io.LinkConnector; import com.rusefi.io.LinkManager; +import org.jetbrains.annotations.NotNull; /** * @author Andrey Belomutskiy @@ -19,9 +21,13 @@ public class SerialConnector implements LinkConnector { public SerialConnector(LinkManager linkManager, String serialPort, Logger logger) { this.linkManager = linkManager; - portHolder = new PortHolder(linkManager, logger); this.logger = logger; - portHolder.port = serialPort; + portHolder = new PortHolder(serialPort, linkManager, logger) { + @NotNull + public IoStream openStream() { + return SerialIoStreamJSerialComm.openPort(serialPort, logger); + } + }; } @Override