From 2182f051cbd17caec4b2686beb0543914c2cbdc5 Mon Sep 17 00:00:00 2001 From: rusefi Date: Mon, 3 Jun 2019 21:57:17 -0400 Subject: [PATCH] refactoring --- .../src/com/rusefi/io/serial/PortHolder.java | 32 ++--------------- .../rusefi/io/serial/SerialIoStreamJSSC.java | 35 +++++++++++++++++++ .../ui/src/com/rusefi/UploadChanges.java | 3 +- .../BinaryProtocolCmdSandbox.java | 3 +- 4 files changed, 39 insertions(+), 34 deletions(-) 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 0bd9176779..12f1943f83 100644 --- a/java_console/io/src/com/rusefi/io/serial/PortHolder.java +++ b/java_console/io/src/com/rusefi/io/serial/PortHolder.java @@ -7,8 +7,6 @@ import com.rusefi.io.CommunicationLoggingHolder; import com.rusefi.io.ConnectionStateListener; import com.opensr5.io.DataListener; import com.rusefi.io.IoStream; -import jssc.SerialPort; -import jssc.SerialPortException; import org.jetbrains.annotations.Nullable; /** @@ -49,26 +47,10 @@ public class PortHolder { * @return true if everything fine */ private boolean open(String port, final DataListener listener) { - SerialPort serialPort = new SerialPort(port); - try { - FileLog.MAIN.logLine("Opening " + port + " @ " + BAUD_RATE); - boolean opened = serialPort.openPort();//Open serial port - if (!opened) - FileLog.MAIN.logLine(port + ": not opened!"); - setupPort(serialPort, BAUD_RATE); - } catch (SerialPortException e) { - FileLog.MAIN.logLine("ERROR " + e.getMessage()); + SerialIoStreamJSSC stream = SerialIoStreamJSSC.open(port, BAUD_RATE, FileLog.LOGGER); + if (stream == null) return false; - } - FileLog.MAIN.logLine("PortHolder: Sleeping a bit"); - try { - // todo: why is this delay here? add a comment - Thread.sleep(200); - } catch (InterruptedException e) { - throw new IllegalStateException(e); - } - SerialIoStreamJSSC stream = new SerialIoStreamJSSC(serialPort, FileLog.LOGGER); synchronized (portLock) { this.serialPort = stream; portLock.notifyAll(); @@ -79,16 +61,6 @@ public class PortHolder { return bp.connectAndReadConfiguration(listener); } - public static void setupPort(SerialPort serialPort, int baudRate) throws SerialPortException { - serialPort.setRTS(false); - serialPort.setDTR(false); - serialPort.setParams(baudRate, 8, 1, 0);//Set params. - int mask = SerialPort.MASK_RXCHAR; - //Set the prepared mask - serialPort.setEventsMask(mask); - serialPort.setFlowControlMode(0); - } - public void close() { synchronized (portLock) { if (serialPort != null) { diff --git a/java_console/io/src/com/rusefi/io/serial/SerialIoStreamJSSC.java b/java_console/io/src/com/rusefi/io/serial/SerialIoStreamJSSC.java index 5767e6dae0..bd484e0f75 100644 --- a/java_console/io/src/com/rusefi/io/serial/SerialIoStreamJSSC.java +++ b/java_console/io/src/com/rusefi/io/serial/SerialIoStreamJSSC.java @@ -9,6 +9,8 @@ import jssc.SerialPortException; import java.io.IOException; +import static com.rusefi.io.serial.PortHolder.BAUD_RATE; + /** * (c) Andrey Belomutskiy * 5/11/2015. @@ -23,6 +25,39 @@ public class SerialIoStreamJSSC implements IoStream { this.logger = logger; } + public static void setupPort(SerialPort serialPort, int baudRate) throws SerialPortException { + serialPort.setRTS(false); + serialPort.setDTR(false); + serialPort.setParams(baudRate, 8, 1, 0);//Set params. + int mask = SerialPort.MASK_RXCHAR; + //Set the prepared mask + serialPort.setEventsMask(mask); + serialPort.setFlowControlMode(0); + } + + public static SerialIoStreamJSSC open(String port, int baudRate, Logger logger) { + SerialPort serialPort = new SerialPort(port); + try { + FileLog.MAIN.logLine("Opening " + port + " @ " + baudRate); + boolean opened = serialPort.openPort();//Open serial port + if (!opened) + FileLog.MAIN.logLine(port + ": not opened!"); + SerialIoStreamJSSC.setupPort(serialPort, baudRate); + } catch (SerialPortException e) { + FileLog.MAIN.logLine("ERROR " + e.getMessage()); + return null; + } + FileLog.MAIN.logLine("PortHolder: Sleeping a bit"); + try { + // todo: why is this delay here? add a comment + Thread.sleep(200); + } catch (InterruptedException e) { + throw new IllegalStateException(e); + } + SerialIoStreamJSSC stream = new SerialIoStreamJSSC(serialPort, logger); + return stream; + } + @Override public void close() { isClosed = true; diff --git a/java_console/ui/src/com/rusefi/UploadChanges.java b/java_console/ui/src/com/rusefi/UploadChanges.java index ae8b66861f..e76191a220 100644 --- a/java_console/ui/src/com/rusefi/UploadChanges.java +++ b/java_console/ui/src/com/rusefi/UploadChanges.java @@ -6,7 +6,6 @@ import com.rusefi.binaryprotocol.BinaryProtocol; import com.opensr5.io.ConfigurationImageFile; import com.rusefi.binaryprotocol.BinaryProtocolHolder; import com.rusefi.io.LinkManager; -import com.rusefi.io.serial.PortHolder; import com.rusefi.io.serial.SerialIoStreamJSSC; import com.rusefi.ui.RecentCommands; import com.rusefi.ui.SettingsTab; @@ -67,7 +66,7 @@ public class UploadChanges { if (!opened) { logger.error("failed to open " + port); } - PortHolder.setupPort(serialPort, 38400); + SerialIoStreamJSSC.setupPort(serialPort, 38400); logger.info("Configuration looks good!"); final ConfigurationImage ci1 = ConfigurationImageFile.readFromFile("rus_saved.bin"); diff --git a/java_console/ui/src/com/rusefi/binaryprotocol/BinaryProtocolCmdSandbox.java b/java_console/ui/src/com/rusefi/binaryprotocol/BinaryProtocolCmdSandbox.java index ac9bfd5d0f..ae3caf3645 100644 --- a/java_console/ui/src/com/rusefi/binaryprotocol/BinaryProtocolCmdSandbox.java +++ b/java_console/ui/src/com/rusefi/binaryprotocol/BinaryProtocolCmdSandbox.java @@ -7,7 +7,6 @@ import com.romraider.editor.ecu.ECUEditor; import com.rusefi.RomRaiderWrapper; import com.rusefi.UploadChanges; import com.rusefi.config.Fields; -import com.rusefi.io.serial.PortHolder; import com.rusefi.io.serial.SerialIoStreamJSSC; import jssc.SerialPort; @@ -35,7 +34,7 @@ public class BinaryProtocolCmdSandbox { } BinaryProtocol bp = BinaryProtocolHolder.create(logger, new SerialIoStreamJSSC(serialPort, logger)); - PortHolder.setupPort(serialPort, 38400); + SerialIoStreamJSSC.setupPort(serialPort, 38400); logger.info("Binary looks good!"); bp.switchToBinaryProtocol();