diff --git a/java_console/io/src/main/java/com/rusefi/io/IoStream.java b/java_console/io/src/main/java/com/rusefi/io/IoStream.java index 58f9c5f4be..dd511f8b29 100644 --- a/java_console/io/src/main/java/com/rusefi/io/IoStream.java +++ b/java_console/io/src/main/java/com/rusefi/io/IoStream.java @@ -4,6 +4,7 @@ import com.opensr5.Logger; import com.opensr5.io.DataListener; import com.opensr5.io.WriteStream; import com.rusefi.binaryprotocol.BinaryProtocol; +import com.rusefi.binaryprotocol.IncomingDataBuffer; import com.rusefi.binaryprotocol.IoHelper; import java.io.IOException; @@ -40,6 +41,8 @@ public interface IoStream extends WriteStream { write(packet); } + IncomingDataBuffer getDataBuffer(); + /** * @param listener would be invoked from unknown implementation-dependent thread */ 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 441db7057f..833d9b6e09 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 @@ -49,11 +49,11 @@ public class PortHolder { MessagesCentral.getInstance().postMessage(logger, getClass(), "Opening port: " + port); stream = streamFactory.call(); - IncomingDataBuffer dataBuffer = IncomingDataBuffer.createDataBuffer(stream, logger); if (stream == null) { // error already reported return false; } + IncomingDataBuffer dataBuffer = stream.getDataBuffer(); synchronized (portLock) { bp = new BinaryProtocol(linkManager, logger, stream, dataBuffer); portLock.notifyAll(); diff --git a/java_console/io/src/main/java/com/rusefi/io/serial/SerialIoStreamJSerialComm.java b/java_console/io/src/main/java/com/rusefi/io/serial/SerialIoStreamJSerialComm.java index 91352f2d1c..13e53c21dd 100644 --- a/java_console/io/src/main/java/com/rusefi/io/serial/SerialIoStreamJSerialComm.java +++ b/java_console/io/src/main/java/com/rusefi/io/serial/SerialIoStreamJSerialComm.java @@ -5,6 +5,7 @@ import com.fazecast.jSerialComm.SerialPortDataListener; import com.fazecast.jSerialComm.SerialPortEvent; import com.opensr5.Logger; import com.opensr5.io.DataListener; +import com.rusefi.binaryprotocol.IncomingDataBuffer; import com.rusefi.io.IoStream; /** @@ -18,6 +19,7 @@ public class SerialIoStreamJSerialComm implements IoStream { private SerialPort sp; private final String port; private final Logger logger; + private final IncomingDataBuffer dataBuffer; /** * @see #openPort(String, Logger) @@ -26,6 +28,12 @@ public class SerialIoStreamJSerialComm implements IoStream { this.sp = sp; this.port = port; this.logger = logger; + dataBuffer = IncomingDataBuffer.createDataBuffer(this, logger); + } + + @Override + public IncomingDataBuffer getDataBuffer() { + return dataBuffer; } @Override diff --git a/java_console/io/src/main/java/com/rusefi/io/tcp/TcpIoStream.java b/java_console/io/src/main/java/com/rusefi/io/tcp/TcpIoStream.java index c43af15fe5..58dba9dd3f 100644 --- a/java_console/io/src/main/java/com/rusefi/io/tcp/TcpIoStream.java +++ b/java_console/io/src/main/java/com/rusefi/io/tcp/TcpIoStream.java @@ -2,6 +2,7 @@ package com.rusefi.io.tcp; import com.opensr5.Logger; import com.opensr5.io.DataListener; +import com.rusefi.binaryprotocol.IncomingDataBuffer; import com.rusefi.io.ByteReader; import com.rusefi.io.IoStream; @@ -20,6 +21,7 @@ public class TcpIoStream implements IoStream { private final OutputStream output; private final Logger logger; private boolean isClosed; + private final IncomingDataBuffer dataBuffer; public TcpIoStream(Logger logger, Socket socket) throws IOException { this(logger, new BufferedInputStream(socket.getInputStream()), socket.getOutputStream()); @@ -33,6 +35,12 @@ public class TcpIoStream implements IoStream { throw new NullPointerException("output"); this.output = output; this.input = input; + dataBuffer = IncomingDataBuffer.createDataBuffer(this, logger); + } + + @Override + public IncomingDataBuffer getDataBuffer() { + return dataBuffer; } @Override diff --git a/java_console/ui/src/main/java/com/rusefi/autodetect/SerialAutoChecker.java b/java_console/ui/src/main/java/com/rusefi/autodetect/SerialAutoChecker.java index cbe5885cbc..620e4f3a9b 100644 --- a/java_console/ui/src/main/java/com/rusefi/autodetect/SerialAutoChecker.java +++ b/java_console/ui/src/main/java/com/rusefi/autodetect/SerialAutoChecker.java @@ -39,7 +39,7 @@ public class SerialAutoChecker implements Runnable { public void run() { IoStream stream = SerialIoStreamJSerialComm.openPort(serialPort, logger); Logger logger = FileLog.LOGGER; - IncomingDataBuffer incomingData = IncomingDataBuffer.createDataBuffer(stream, logger); + IncomingDataBuffer incomingData = stream.getDataBuffer(); try { stream.sendPacket(new byte[]{BinaryProtocolCommands.COMMAND_HELLO}, logger); byte[] response = incomingData.getPacket(logger, "", false); diff --git a/java_console/ui/src/main/java/com/rusefi/tools/ConsoleTools.java b/java_console/ui/src/main/java/com/rusefi/tools/ConsoleTools.java index 56aea4ec75..880505bd44 100644 --- a/java_console/ui/src/main/java/com/rusefi/tools/ConsoleTools.java +++ b/java_console/ui/src/main/java/com/rusefi/tools/ConsoleTools.java @@ -308,7 +308,7 @@ public class ConsoleTools { } IoStream stream = SerialIoStreamJSerialComm.openPort(autoDetectedPort, FileLog.LOGGER); Logger logger = FileLog.LOGGER; - IncomingDataBuffer incomingData = IncomingDataBuffer.createDataBuffer(stream, logger); + IncomingDataBuffer incomingData = stream.getDataBuffer(); byte[] commandBytes = BinaryProtocol.getTextCommandBytes("hello"); stream.sendPacket(commandBytes, logger); // skipping response