From c9409ce69379772e2b3cac3016518e56abf97851 Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 16 May 2020 01:14:44 -0400 Subject: [PATCH] new headless feature coming --- .../binaryprotocol/BinaryProtocolHolder.java | 11 +++---- java_console/ui/src/com/rusefi/Launcher.java | 30 ++++++++++++++++++- .../com/rusefi/maintenance/ExecHelper.java | 2 +- 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java b/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java index 7e88253fb8..3c709c82bb 100644 --- a/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java +++ b/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java @@ -7,6 +7,7 @@ import com.rusefi.io.LinkManager; /** * At any given moment of time JVM manages one communication stream * + * TODO: remove this dead class? * * (c) Andrey Belomutskiy * 6/21/2017. @@ -14,19 +15,15 @@ import com.rusefi.io.LinkManager; public enum BinaryProtocolHolder { INSTANCE; - private BinaryProtocol currentStream; - public static BinaryProtocolHolder getInstance() { return INSTANCE; } - public BinaryProtocol create(final Logger logger, IoStream stream) { - BinaryProtocol result = new BinaryProtocol(logger, stream); - currentStream = result; - return result; + public static BinaryProtocol create(final Logger logger, IoStream stream) { + return new BinaryProtocol(logger, stream); } - public BinaryProtocol getCurrentStreamState() { + public static BinaryProtocol getCurrentStreamState() { return LinkManager.connector.getBinaryProtocol(); } } diff --git a/java_console/ui/src/com/rusefi/Launcher.java b/java_console/ui/src/com/rusefi/Launcher.java index f7ceab75fe..fcf51c1757 100644 --- a/java_console/ui/src/com/rusefi/Launcher.java +++ b/java_console/ui/src/com/rusefi/Launcher.java @@ -11,6 +11,7 @@ import com.rusefi.io.*; import com.rusefi.io.serial.BaudRateHolder; import com.rusefi.io.serial.SerialConnector; import com.rusefi.io.serial.SerialIoStreamJSerialComm; +import com.rusefi.maintenance.ExecHelper; import com.rusefi.maintenance.FirmwareFlasher; import com.rusefi.maintenance.VersionChecker; import com.rusefi.ui.*; @@ -48,7 +49,7 @@ import static com.rusefi.ui.storage.PersistentConfiguration.getConfig; * @see EngineSnifferPanel */ public class Launcher { - public static final int CONSOLE_VERSION = 20200515; + public static final int CONSOLE_VERSION = 20200516; public static final String INI_FILE_PATH = System.getProperty("ini_file_path", ".."); public static final String INPUT_FILES_PATH = System.getProperty("input_files_path", ".."); public static final String TOOLS_PATH = System.getProperty("tools_path", "."); @@ -199,6 +200,7 @@ public class Launcher { /** * rusEfi console entry point + * * @see StartupFrame if no parameters specified */ public static void main(final String[] args) throws Exception { @@ -253,6 +255,17 @@ public class Launcher { String onConnectedCallback = args.length > 1 ? args[1] : null; String onDisconnectedCallback = args.length > 2 ? args[2] : null; + ConnectionStatusLogic.INSTANCE.addListener(new ConnectionStatusLogic.Listener() { + @Override + public void onConnectionStatus(boolean isConnected) { + if (isConnected) { + invokeCallback(onConnectedCallback); + } else { + invokeCallback(onDisconnectedCallback); + } + } + }); + String autoDetectedPort = PortDetector.autoDetectSerial(); if (autoDetectedPort == null) { System.err.println("rusEFI not detected"); @@ -271,6 +284,21 @@ public class Launcher { }); } + private static void invokeCallback(String callback) { + if (callback == null) + return; + ExecHelper.submitAction(new Runnable() { + @Override + public void run() { + try { + Runtime.getRuntime().exec(callback); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + }, "callback"); + } + private static int invokeCompileFileTool(String[] args) throws IOException { /** * re-packaging array which contains input and output file names diff --git a/java_console/ui/src/com/rusefi/maintenance/ExecHelper.java b/java_console/ui/src/com/rusefi/maintenance/ExecHelper.java index 9785930ee3..7abe861df1 100644 --- a/java_console/ui/src/com/rusefi/maintenance/ExecHelper.java +++ b/java_console/ui/src/com/rusefi/maintenance/ExecHelper.java @@ -76,7 +76,7 @@ public class ExecHelper { return error.toString(); } - protected static void submitAction(Runnable runnable, String threadName) { + public static void submitAction(Runnable runnable, String threadName) { Thread thread = new Thread(runnable, threadName); thread.setDaemon(true); thread.start();