proxy progress
This commit is contained in:
parent
720ade2319
commit
968015f5ec
|
@ -118,7 +118,7 @@ public class BinaryProtocol implements BinaryProtocolCommands {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
incomingData = createDataBuffer(stream, logger);
|
incomingData = stream.getDataBuffer();
|
||||||
Runtime.getRuntime().addShutdownHook(hook);
|
Runtime.getRuntime().addShutdownHook(hook);
|
||||||
rpmListener = value -> {
|
rpmListener = value -> {
|
||||||
if (value <= COMPOSITE_OFF_RPM) {
|
if (value <= COMPOSITE_OFF_RPM) {
|
||||||
|
@ -131,12 +131,6 @@ public class BinaryProtocol implements BinaryProtocolCommands {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IncomingDataBuffer createDataBuffer(IoStream stream, Logger logger) {
|
|
||||||
IncomingDataBuffer incomingData = new IncomingDataBuffer(logger);
|
|
||||||
stream.setInputListener(incomingData::addData);
|
|
||||||
return incomingData;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void sleep(int millis) {
|
public static void sleep(int millis) {
|
||||||
try {
|
try {
|
||||||
Thread.sleep(millis);
|
Thread.sleep(millis);
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.rusefi.binaryprotocol;
|
||||||
import com.opensr5.Logger;
|
import com.opensr5.Logger;
|
||||||
import com.rusefi.Timeouts;
|
import com.rusefi.Timeouts;
|
||||||
import com.rusefi.config.generated.Fields;
|
import com.rusefi.config.generated.Fields;
|
||||||
|
import com.rusefi.io.IoStream;
|
||||||
import etch.util.CircularByteBuffer;
|
import etch.util.CircularByteBuffer;
|
||||||
import net.jcip.annotations.ThreadSafe;
|
import net.jcip.annotations.ThreadSafe;
|
||||||
|
|
||||||
|
@ -31,6 +32,12 @@ public class IncomingDataBuffer {
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static IncomingDataBuffer createDataBuffer(IoStream stream, Logger logger) {
|
||||||
|
IncomingDataBuffer incomingData = new IncomingDataBuffer(logger);
|
||||||
|
stream.setInputListener(incomingData::addData);
|
||||||
|
return incomingData;
|
||||||
|
}
|
||||||
|
|
||||||
public byte[] getPacket(Logger logger, String msg, boolean allowLongResponse) throws InterruptedException, EOFException {
|
public byte[] getPacket(Logger logger, String msg, boolean allowLongResponse) throws InterruptedException, EOFException {
|
||||||
return getPacket(logger, msg, allowLongResponse, System.currentTimeMillis());
|
return getPacket(logger, msg, allowLongResponse, System.currentTimeMillis());
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import com.opensr5.Logger;
|
||||||
import com.opensr5.io.DataListener;
|
import com.opensr5.io.DataListener;
|
||||||
import com.opensr5.io.WriteStream;
|
import com.opensr5.io.WriteStream;
|
||||||
import com.rusefi.binaryprotocol.BinaryProtocol;
|
import com.rusefi.binaryprotocol.BinaryProtocol;
|
||||||
|
import com.rusefi.binaryprotocol.IncomingDataBuffer;
|
||||||
import com.rusefi.binaryprotocol.IoHelper;
|
import com.rusefi.binaryprotocol.IoHelper;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -40,6 +41,8 @@ public interface IoStream extends WriteStream {
|
||||||
write(packet);
|
write(packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IncomingDataBuffer getDataBuffer();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param listener would be invoked from unknown implementation-dependent thread
|
* @param listener would be invoked from unknown implementation-dependent thread
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -187,7 +187,7 @@ public class LinkManager {
|
||||||
int portPart = TcpConnector.getTcpPort(port);
|
int portPart = TcpConnector.getTcpPort(port);
|
||||||
String hostname = TcpConnector.getHostname(port);
|
String hostname = TcpConnector.getHostname(port);
|
||||||
socket = new Socket(hostname, portPart);
|
socket = new Socket(hostname, portPart);
|
||||||
return new TcpIoStream(logger, LinkManager.this, socket);
|
return new TcpIoStream(logger, socket);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
stateListener.onConnectionFailed();
|
stateListener.onConnectionFailed();
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -5,6 +5,7 @@ import com.fazecast.jSerialComm.SerialPortDataListener;
|
||||||
import com.fazecast.jSerialComm.SerialPortEvent;
|
import com.fazecast.jSerialComm.SerialPortEvent;
|
||||||
import com.opensr5.Logger;
|
import com.opensr5.Logger;
|
||||||
import com.opensr5.io.DataListener;
|
import com.opensr5.io.DataListener;
|
||||||
|
import com.rusefi.binaryprotocol.IncomingDataBuffer;
|
||||||
import com.rusefi.io.IoStream;
|
import com.rusefi.io.IoStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -14,6 +15,7 @@ import com.rusefi.io.IoStream;
|
||||||
* 06/03/2019
|
* 06/03/2019
|
||||||
*/
|
*/
|
||||||
public class SerialIoStreamJSerialComm implements IoStream {
|
public class SerialIoStreamJSerialComm implements IoStream {
|
||||||
|
private final IncomingDataBuffer dataBuffer;
|
||||||
private boolean isClosed;
|
private boolean isClosed;
|
||||||
private SerialPort sp;
|
private SerialPort sp;
|
||||||
private final String port;
|
private final String port;
|
||||||
|
@ -26,6 +28,12 @@ public class SerialIoStreamJSerialComm implements IoStream {
|
||||||
this.sp = sp;
|
this.sp = sp;
|
||||||
this.port = port;
|
this.port = port;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
|
dataBuffer = IncomingDataBuffer.createDataBuffer(this, logger);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IncomingDataBuffer getDataBuffer() {
|
||||||
|
return dataBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -109,7 +109,7 @@ public class BinaryProtocolServer implements BinaryProtocolCommands {
|
||||||
byte command = (byte) dis.read();
|
byte command = (byte) dis.read();
|
||||||
System.out.println("Got [" + (char) command + "/" + command + "] command");
|
System.out.println("Got [" + (char) command + "/" + command + "] command");
|
||||||
|
|
||||||
TcpIoStream stream = new TcpIoStream(logger, linkManager, clientSocket);
|
TcpIoStream stream = new TcpIoStream(logger, clientSocket);
|
||||||
if (command == COMMAND_HELLO) {
|
if (command == COMMAND_HELLO) {
|
||||||
stream.sendPacket((TS_OK + Fields.TS_SIGNATURE).getBytes(), logger);
|
stream.sendPacket((TS_OK + Fields.TS_SIGNATURE).getBytes(), logger);
|
||||||
} else if (command == COMMAND_PROTOCOL) {
|
} else if (command == COMMAND_PROTOCOL) {
|
||||||
|
|
|
@ -2,9 +2,9 @@ package com.rusefi.io.tcp;
|
||||||
|
|
||||||
import com.opensr5.Logger;
|
import com.opensr5.Logger;
|
||||||
import com.opensr5.io.DataListener;
|
import com.opensr5.io.DataListener;
|
||||||
|
import com.rusefi.binaryprotocol.IncomingDataBuffer;
|
||||||
import com.rusefi.io.ByteReader;
|
import com.rusefi.io.ByteReader;
|
||||||
import com.rusefi.io.IoStream;
|
import com.rusefi.io.IoStream;
|
||||||
import com.rusefi.io.LinkManager;
|
|
||||||
|
|
||||||
import java.io.BufferedInputStream;
|
import java.io.BufferedInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -20,22 +20,27 @@ public class TcpIoStream implements IoStream {
|
||||||
private final InputStream input;
|
private final InputStream input;
|
||||||
private final OutputStream output;
|
private final OutputStream output;
|
||||||
private final Logger logger;
|
private final Logger logger;
|
||||||
private final LinkManager linkManager;
|
private final IncomingDataBuffer dataBuffer;
|
||||||
private boolean isClosed;
|
private boolean isClosed;
|
||||||
|
|
||||||
public TcpIoStream(Logger logger, LinkManager linkManager, Socket socket) throws IOException {
|
public TcpIoStream(Logger logger, Socket socket) throws IOException {
|
||||||
this(logger, linkManager, new BufferedInputStream(socket.getInputStream()), socket.getOutputStream());
|
this(logger, new BufferedInputStream(socket.getInputStream()), socket.getOutputStream());
|
||||||
}
|
}
|
||||||
|
|
||||||
private TcpIoStream(Logger logger, LinkManager linkManager, InputStream input, OutputStream output) {
|
private TcpIoStream(Logger logger, InputStream input, OutputStream output) {
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.linkManager = linkManager;
|
|
||||||
if (input == null)
|
if (input == null)
|
||||||
throw new NullPointerException("input");
|
throw new NullPointerException("input");
|
||||||
if (output == null)
|
if (output == null)
|
||||||
throw new NullPointerException("output");
|
throw new NullPointerException("output");
|
||||||
this.output = output;
|
this.output = output;
|
||||||
this.input = input;
|
this.input = input;
|
||||||
|
dataBuffer = IncomingDataBuffer.createDataBuffer(this, logger);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IncomingDataBuffer getDataBuffer() {
|
||||||
|
return dataBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -2,7 +2,6 @@ package com.rusefi.autodetect;
|
||||||
|
|
||||||
import com.opensr5.Logger;
|
import com.opensr5.Logger;
|
||||||
import com.rusefi.FileLog;
|
import com.rusefi.FileLog;
|
||||||
import com.rusefi.binaryprotocol.BinaryProtocol;
|
|
||||||
import com.rusefi.binaryprotocol.BinaryProtocolCommands;
|
import com.rusefi.binaryprotocol.BinaryProtocolCommands;
|
||||||
import com.rusefi.binaryprotocol.IncomingDataBuffer;
|
import com.rusefi.binaryprotocol.IncomingDataBuffer;
|
||||||
import com.rusefi.config.generated.Fields;
|
import com.rusefi.config.generated.Fields;
|
||||||
|
@ -40,7 +39,7 @@ public class SerialAutoChecker implements Runnable {
|
||||||
public void run() {
|
public void run() {
|
||||||
IoStream stream = SerialIoStreamJSerialComm.openPort(serialPort, logger);
|
IoStream stream = SerialIoStreamJSerialComm.openPort(serialPort, logger);
|
||||||
Logger logger = FileLog.LOGGER;
|
Logger logger = FileLog.LOGGER;
|
||||||
IncomingDataBuffer incomingData = BinaryProtocol.createDataBuffer(stream, logger);
|
IncomingDataBuffer incomingData = stream.getDataBuffer();
|
||||||
try {
|
try {
|
||||||
stream.sendPacket(new byte[]{BinaryProtocolCommands.COMMAND_HELLO}, logger);
|
stream.sendPacket(new byte[]{BinaryProtocolCommands.COMMAND_HELLO}, logger);
|
||||||
byte[] response = incomingData.getPacket(logger, "", false);
|
byte[] response = incomingData.getPacket(logger, "", false);
|
||||||
|
|
|
@ -308,7 +308,7 @@ public class ConsoleTools {
|
||||||
}
|
}
|
||||||
IoStream stream = SerialIoStreamJSerialComm.openPort(autoDetectedPort, FileLog.LOGGER);
|
IoStream stream = SerialIoStreamJSerialComm.openPort(autoDetectedPort, FileLog.LOGGER);
|
||||||
Logger logger = FileLog.LOGGER;
|
Logger logger = FileLog.LOGGER;
|
||||||
IncomingDataBuffer incomingData = BinaryProtocol.createDataBuffer(stream, logger);
|
IncomingDataBuffer incomingData = stream.getDataBuffer();
|
||||||
byte[] commandBytes = BinaryProtocol.getTextCommandBytes("hello");
|
byte[] commandBytes = BinaryProtocol.getTextCommandBytes("hello");
|
||||||
stream.sendPacket(commandBytes, logger);
|
stream.sendPacket(commandBytes, logger);
|
||||||
// skipping response
|
// skipping response
|
||||||
|
|
Loading…
Reference in New Issue