diff --git a/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java b/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java index bad8a45c3d..7e88253fb8 100644 --- a/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java +++ b/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java @@ -2,6 +2,7 @@ package com.rusefi.binaryprotocol; import com.opensr5.Logger; import com.rusefi.io.IoStream; +import com.rusefi.io.LinkManager; /** * At any given moment of time JVM manages one communication stream @@ -26,6 +27,6 @@ public enum BinaryProtocolHolder { } public BinaryProtocol getCurrentStreamState() { - return currentStream; + return LinkManager.connector.getBinaryProtocol(); } } diff --git a/java_console/io/src/com/rusefi/io/LinkConnector.java b/java_console/io/src/com/rusefi/io/LinkConnector.java index bafce296b6..82e068901c 100644 --- a/java_console/io/src/com/rusefi/io/LinkConnector.java +++ b/java_console/io/src/com/rusefi/io/LinkConnector.java @@ -1,5 +1,7 @@ package com.rusefi.io; +import com.rusefi.binaryprotocol.BinaryProtocol; + /** * @author Andrey Belomutskiy * 3/3/14 @@ -18,6 +20,11 @@ public interface LinkConnector extends LinkDecoder { public void restart() { } + @Override + public BinaryProtocol getBinaryProtocol() { + return null; + } + @Override public String unpack(String packet) { return LinkDecoder.TEXT_PROTOCOL_DECODER.unpack(packet); @@ -30,4 +37,5 @@ public interface LinkConnector extends LinkDecoder { void restart(); + BinaryProtocol getBinaryProtocol(); } diff --git a/java_console/io/src/com/rusefi/io/LinkManager.java b/java_console/io/src/com/rusefi/io/LinkManager.java index 6e0bf3295b..80bc4819d6 100644 --- a/java_console/io/src/com/rusefi/io/LinkManager.java +++ b/java_console/io/src/com/rusefi/io/LinkManager.java @@ -126,6 +126,7 @@ public class LinkManager { ConnectionWatchdog.onDataArrived(); } }); + public static LinkConnector connector; /** diff --git a/java_console/io/src/com/rusefi/io/serial/PortHolder.java b/java_console/io/src/com/rusefi/io/serial/PortHolder.java index 804b44d6e0..fc8525eaf0 100644 --- a/java_console/io/src/com/rusefi/io/serial/PortHolder.java +++ b/java_console/io/src/com/rusefi/io/serial/PortHolder.java @@ -25,14 +25,12 @@ public class PortHolder { public ConnectionStateListener listener; private final Object portLock = new Object(); + @Nullable private BinaryProtocol bp; protected PortHolder() { } - @Nullable - private IoStream serialPort; - public String port; boolean connectAndReadConfiguration() { @@ -43,12 +41,10 @@ public class PortHolder { IoStream stream = SerialIoStreamJSerialComm.openPort(port); synchronized (portLock) { - this.serialPort = stream; + bp = BinaryProtocolHolder.getInstance().create(FileLog.LOGGER, stream); portLock.notifyAll(); } - bp = BinaryProtocolHolder.getInstance().create(FileLog.LOGGER, stream); - boolean result = bp.connectAndReadConfiguration(dataListener); if (listener != null) { if (result) { @@ -62,10 +58,10 @@ public class PortHolder { public void close() { synchronized (portLock) { - if (serialPort != null) { + if (bp != null) { try { - serialPort.close(); - serialPort = null; + bp.close(); + bp = null; } finally { portLock.notifyAll(); } @@ -73,6 +69,11 @@ public class PortHolder { } } + @Nullable + public BinaryProtocol getBp() { + return bp; + } + /** * this method blocks till a connection is available */ diff --git a/java_console/io/src/com/rusefi/io/serial/SerialConnector.java b/java_console/io/src/com/rusefi/io/serial/SerialConnector.java index 35505241cc..50eb01dc15 100644 --- a/java_console/io/src/com/rusefi/io/serial/SerialConnector.java +++ b/java_console/io/src/com/rusefi/io/serial/SerialConnector.java @@ -1,6 +1,7 @@ package com.rusefi.io.serial; import com.rusefi.FileLog; +import com.rusefi.binaryprotocol.BinaryProtocol; import com.rusefi.core.MessagesCentral; import com.rusefi.io.ConnectionStateListener; import com.rusefi.io.LinkConnector; @@ -32,6 +33,11 @@ public class SerialConnector implements LinkConnector { }); } + @Override + public BinaryProtocol getBinaryProtocol() { + return portHolder.getBp(); + } + @Override public void restart() { LinkManager.execute(new Runnable() { diff --git a/java_console/io/src/com/rusefi/io/tcp/TcpConnector.java b/java_console/io/src/com/rusefi/io/tcp/TcpConnector.java index d8e8f7d972..3735a690d1 100644 --- a/java_console/io/src/com/rusefi/io/tcp/TcpConnector.java +++ b/java_console/io/src/com/rusefi/io/tcp/TcpConnector.java @@ -37,6 +37,10 @@ public class TcpConnector implements LinkConnector { } } + public BinaryProtocol getBinaryProtocol() { + return bp; + } + public static boolean isTcpPort(String port) { try { getTcpPort(port);