From 2eff8cce6f8f61b3d29814f0b7021984f48a1442 Mon Sep 17 00:00:00 2001 From: rusEfi Date: Mon, 11 May 2015 09:09:03 -0400 Subject: [PATCH] auto-sync --- firmware/config/engines/dodge_ram.cpp | 2 +- .../io/src/com/rusefi/io/IoStream.java | 18 ++++++ .../com/rusefi/io/serial/SerialConnector.java | 24 +++++-- .../com/rusefi/io/serial/SerialIoStream.java | 63 +++++++++++++++++++ .../com/rusefi/io/serial/SerialManager.java | 28 +-------- .../io/src/com/rusefi/io/tcp/TcpIoStream.java | 32 ++++++++++ 6 files changed, 136 insertions(+), 31 deletions(-) create mode 100644 java_console/io/src/com/rusefi/io/IoStream.java create mode 100644 java_console/io/src/com/rusefi/io/serial/SerialIoStream.java create mode 100644 java_console/io/src/com/rusefi/io/tcp/TcpIoStream.java diff --git a/firmware/config/engines/dodge_ram.cpp b/firmware/config/engines/dodge_ram.cpp index 502f262cd5..1f66689a38 100644 --- a/firmware/config/engines/dodge_ram.cpp +++ b/firmware/config/engines/dodge_ram.cpp @@ -20,7 +20,7 @@ void setDodgeRam1996(DECLARE_ENGINE_PARAMETER_F) { setOperationMode(engineConfiguration, FOUR_STROKE_CAM_SENSOR); engineConfiguration->trigger.type = TT_DODGE_RAM; - engineConfiguration->injector.flow = 243.6; + engineConfiguration->injector.flow = 243.6; // 23.2lb/h engineConfiguration->map.sensor.type = MT_DODGE_NEON_2003; // set_cranking_charge_angle 30 diff --git a/java_console/io/src/com/rusefi/io/IoStream.java b/java_console/io/src/com/rusefi/io/IoStream.java new file mode 100644 index 0000000000..ba4a4518ed --- /dev/null +++ b/java_console/io/src/com/rusefi/io/IoStream.java @@ -0,0 +1,18 @@ +package com.rusefi.io; + +import java.io.IOException; + +/** + * (c) Andrey Belomutskiy + * + * 5/11/2015. + */ +public interface IoStream { + void close(); + + void write(byte[] bytes) throws IOException; + + void purge(); + + void addEventListener(DataListener listener); +} 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 18071d392e..70ae500390 100644 --- a/java_console/io/src/com/rusefi/io/serial/SerialConnector.java +++ b/java_console/io/src/com/rusefi/io/serial/SerialConnector.java @@ -1,11 +1,10 @@ package com.rusefi.io.serial; import com.rusefi.FileLog; -import com.rusefi.core.EngineState; +import com.rusefi.core.MessagesCentral; import com.rusefi.io.CommandQueue; import com.rusefi.io.LinkConnector; import com.rusefi.io.LinkManager; -import com.rusefi.io.tcp.TcpConnector; /** * @author Andrey Belomutskiy @@ -19,12 +18,29 @@ public class SerialConnector implements LinkConnector { @Override public void connect(LinkManager.LinkStateListener listener) { FileLog.MAIN.logLine("SerialConnector: connecting"); - SerialManager.scheduleOpening(listener); + SerialManager.listener = listener; + FileLog.MAIN.logLine("scheduleOpening"); + LinkManager.IO_EXECUTOR.execute(new Runnable() { + @Override + public void run() { + FileLog.MAIN.logLine("scheduleOpening>openPort"); + PortHolder.getInstance().openPort(SerialManager.port, SerialManager.dataListener, SerialManager.listener); + } + }); } @Override public void restart() { - SerialManager.restart(); + LinkManager.IO_EXECUTOR.execute(new Runnable() { + @Override + public void run() { + MessagesCentral.getInstance().postMessage(SerialManager.class, "Restarting serial IO"); +// if (closed) +// return; + PortHolder.getInstance().close(); + PortHolder.getInstance().openPort(SerialManager.port, SerialManager.dataListener, SerialManager.listener); + } + }); } @Override diff --git a/java_console/io/src/com/rusefi/io/serial/SerialIoStream.java b/java_console/io/src/com/rusefi/io/serial/SerialIoStream.java new file mode 100644 index 0000000000..6582755527 --- /dev/null +++ b/java_console/io/src/com/rusefi/io/serial/SerialIoStream.java @@ -0,0 +1,63 @@ +package com.rusefi.io.serial; + +import com.rusefi.FileLog; +import com.rusefi.Logger; +import com.rusefi.io.DataListener; +import com.rusefi.io.IoStream; +import jssc.SerialPort; +import jssc.SerialPortException; + +import java.io.IOException; + +/** + * (c) Andrey Belomutskiy + * 5/11/2015. + */ +public class SerialIoStream implements IoStream { + private final SerialPort serialPort; + private final Logger logger; + + public SerialIoStream(SerialPort serialPort, Logger logger) { + this.serialPort = serialPort; + this.logger = logger; + } + + @Override + public void close() { + try { + FileLog.MAIN.logLine("CLOSING PORT..."); + serialPort.closePort(); + FileLog.MAIN.logLine("PORT CLOSED"); + } catch (SerialPortException e) { + logger.error("Error closing port: " + e); + } + } + + @Override + public void write(byte[] bytes) throws IOException { + try { + serialPort.writeBytes(bytes); + } catch (SerialPortException e) { + throw new IOException(e); + } + } + + @Override + public void purge() { + try { + serialPort.purgePort(SerialPort.PURGE_RXCLEAR | SerialPort.PURGE_TXCLEAR); + } catch (SerialPortException e) { + logger.info("Error while purge: " + e); + close(); + } + } + + @Override + public void addEventListener(DataListener listener) { + try { + serialPort.addEventListener(new SerialPortReader(serialPort, listener)); + } catch (SerialPortException e) { + throw new IllegalStateException(e); + } + } +} diff --git a/java_console/io/src/com/rusefi/io/serial/SerialManager.java b/java_console/io/src/com/rusefi/io/serial/SerialManager.java index 0b9ad7ae81..dcfe4c6257 100644 --- a/java_console/io/src/com/rusefi/io/serial/SerialManager.java +++ b/java_console/io/src/com/rusefi/io/serial/SerialManager.java @@ -20,33 +20,9 @@ class SerialManager { LinkManager.engineState.processNewData(new String(freshData)); } }; - private static LinkManager.LinkStateListener listener; + public static LinkManager.LinkStateListener listener; - public static void scheduleOpening(LinkManager.LinkStateListener listener) { - SerialManager.listener = listener; - FileLog.MAIN.logLine("scheduleOpening"); - LinkManager.IO_EXECUTOR.execute(new Runnable() { - @Override - public void run() { - FileLog.MAIN.logLine("scheduleOpening>openPort"); - PortHolder.getInstance().openPort(port, SerialManager.dataListener, SerialManager.listener); - } - }); - } - - public static void restart() { - LinkManager.IO_EXECUTOR.execute(new Runnable() { - @Override - public void run() { - MessagesCentral.getInstance().postMessage(SerialManager.class, "Restarting serial IO"); -// if (closed) -// return; - PortHolder.getInstance().close(); - PortHolder.getInstance().openPort(port, dataListener, SerialManager.listener); - } - }); - } -/* + /* static String[] findSerialPorts() { List result = new ArrayList(); diff --git a/java_console/io/src/com/rusefi/io/tcp/TcpIoStream.java b/java_console/io/src/com/rusefi/io/tcp/TcpIoStream.java new file mode 100644 index 0000000000..61732278d4 --- /dev/null +++ b/java_console/io/src/com/rusefi/io/tcp/TcpIoStream.java @@ -0,0 +1,32 @@ +package com.rusefi.io.tcp; + +import com.rusefi.io.DataListener; +import com.rusefi.io.IoStream; + +import java.io.IOException; + +/** + * (c) Andrey Belomutskiy + * 5/11/2015. + */ +public class TcpIoStream implements IoStream { + @Override + public void close() { + + } + + @Override + public void write(byte[] bytes) throws IOException { + + } + + @Override + public void purge() { + + } + + @Override + public void addEventListener(DataListener listener) { + + } +}