SimulatorTcpSandbox

This commit is contained in:
rusefillc 2021-12-06 17:27:38 -05:00
parent eb950e7fd3
commit a47530be54
7 changed files with 88 additions and 31 deletions

View File

@ -353,6 +353,14 @@ public class BinaryProtocol {
ConnectionStatusLogic.INSTANCE.setValue(ConnectionStatusValue.CONNECTED);
}
public static class Arguments {
final boolean saveFile;
public Arguments(boolean saveFile) {
this.saveFile = saveFile;
}
}
@Nullable
private ConfigurationImage readFullImageFromController(int size) {
ConfigurationImage image;
@ -370,7 +378,7 @@ public class BinaryProtocol {
int remainingSize = image.getSize() - offset;
int requestSize = Math.min(remainingSize, Fields.BLOCKING_FACTOR);
byte packet[] = new byte[5];
byte[] packet = new byte[5];
packet[0] = Fields.TS_READ_COMMAND;
putShort(packet, 1, swap16(offset));
putShort(packet, 3, swap16(requestSize));

View File

@ -2,6 +2,7 @@ package com.rusefi.io;
import com.rusefi.binaryprotocol.BinaryProtocol;
import com.rusefi.binaryprotocol.BinaryProtocolState;
import jdk.nashorn.internal.runtime.regexp.joni.constants.Arguments;
import org.jetbrains.annotations.NotNull;
/**
@ -11,7 +12,7 @@ import org.jetbrains.annotations.NotNull;
public interface LinkConnector extends LinkDecoder {
LinkConnector VOID = new LinkConnector() {
@Override
public void connectAndReadConfiguration(ConnectionStateListener listener) {
public void connectAndReadConfiguration(BinaryProtocol.Arguments arguments, ConnectionStateListener listener) {
}
@Override
@ -37,7 +38,7 @@ public interface LinkConnector extends LinkDecoder {
}
@Override
public void connectAndReadConfiguration(ConnectionStateListener listener) {
public void connectAndReadConfiguration(BinaryProtocol.Arguments arguments, ConnectionStateListener listener) {
throw new UnsupportedOperationException();
}
@ -58,7 +59,7 @@ public interface LinkConnector extends LinkDecoder {
};
}
void connectAndReadConfiguration(ConnectionStateListener listener);
void connectAndReadConfiguration(BinaryProtocol.Arguments arguments, ConnectionStateListener listener);
void send(String command, boolean fireEvent) throws InterruptedException;

View File

@ -11,6 +11,7 @@ import com.rusefi.io.serial.StreamConnector;
import com.rusefi.io.serial.BufferedSerialIoStream;
import com.rusefi.io.tcp.TcpConnector;
import com.rusefi.io.tcp.TcpIoStream;
import jdk.nashorn.internal.runtime.regexp.joni.constants.Arguments;
import org.jetbrains.annotations.NotNull;
import java.io.Closeable;
@ -196,7 +197,7 @@ public class LinkManager implements Closeable {
public void startAndConnect(String port, ConnectionStateListener stateListener) {
Objects.requireNonNull(port, "port");
start(port, stateListener);
connector.connectAndReadConfiguration(stateListener);
connector.connectAndReadConfiguration(new BinaryProtocol.Arguments(true), stateListener);
}
@NotNull

View File

@ -3,11 +3,11 @@ package com.rusefi.io.serial;
import com.devexperts.logging.Logging;
import com.rusefi.Callable;
import com.rusefi.binaryprotocol.BinaryProtocol;
import com.rusefi.core.MessagesCentral;
import com.rusefi.io.ConnectionStateListener;
import com.rusefi.io.IoStream;
import com.rusefi.io.LinkConnector;
import com.rusefi.io.LinkManager;
import jdk.nashorn.internal.runtime.regexp.joni.constants.Arguments;
import static com.devexperts.logging.Logging.getLogging;
@ -28,7 +28,7 @@ public class StreamConnector implements LinkConnector {
}
@Override
public void connectAndReadConfiguration(ConnectionStateListener listener) {
public void connectAndReadConfiguration(BinaryProtocol.Arguments arguments, ConnectionStateListener listener) {
log.info("StreamConnector: connecting");
portHolder.listener = listener;
log.info("scheduleOpening");

View File

@ -63,29 +63,6 @@ public class PCanSandbox {
});
/*
StreamConnector streamConnector = new StreamConnector(linkManager, () -> tsStream);
linkManager.setConnector(streamConnector);
streamConnector.connectAndReadConfiguration(new ConnectionStateListener() {
@Override
public void onConnectionEstablished() {
System.out.println("onConnectionEstablished");
BinaryProtocol currentStreamState = linkManager.getCurrentStreamState();
if (currentStreamState == null) {
System.out.println("No BinaryProtocol");
} else {
BinaryProtocolState binaryProtocolState = currentStreamState.getBinaryProtocolState();
ConfigurationImage ci = binaryProtocolState.getControllerConfiguration();
System.out.println("Got ConfigurationImage " + ci);
System.exit(0);
}
}
@Override
public void onConnectionFailed() {
System.out.println("onConnectionFailed");
}
});
*/
}

View File

@ -0,0 +1,69 @@
package com.rusefi.binaryprotocol.test;
import com.opensr5.ConfigurationImage;
import com.rusefi.binaryprotocol.BinaryProtocol;
import com.rusefi.binaryprotocol.BinaryProtocolState;
import com.rusefi.config.generated.Fields;
import com.rusefi.io.ConnectionStateListener;
import com.rusefi.io.IoStream;
import com.rusefi.io.LinkManager;
import com.rusefi.io.serial.StreamConnector;
import com.rusefi.io.tcp.TcpIoStream;
import jdk.nashorn.internal.runtime.regexp.joni.constants.Arguments;
import java.io.IOException;
import java.net.Socket;
import static com.rusefi.io.tcp.TcpConnector.DEFAULT_PORT;
import static com.rusefi.io.tcp.TcpConnector.LOCALHOST;
public class SimulatorTcpSandbox {
public static void main(String[] args) throws IOException {
BinaryProtocol.DISABLE_LOCAL_CACHE = true;
Socket s = new Socket(LOCALHOST, DEFAULT_PORT);
TcpIoStream tsStream = new TcpIoStream("sandbox", s);
LinkManager linkManager = new LinkManager();
verifyCrcNoPending(tsStream, linkManager);
StreamConnector streamConnector = new StreamConnector(linkManager, () -> tsStream);
linkManager.setConnector(streamConnector);
streamConnector.connectAndReadConfiguration(new BinaryProtocol.Arguments( false), new ConnectionStateListener() {
@Override
public void onConnectionEstablished() {
System.out.println("onConnectionEstablished");
BinaryProtocol currentStreamState = linkManager.getCurrentStreamState();
if (currentStreamState == null) {
System.out.println("No BinaryProtocol");
} else {
BinaryProtocolState binaryProtocolState = currentStreamState.getBinaryProtocolState();
ConfigurationImage ci = binaryProtocolState.getControllerConfiguration();
System.out.println("Got ConfigurationImage " + ci);
System.exit(0);
}
}
@Override
public void onConnectionFailed() {
System.out.println("onConnectionFailed");
}
});
}
private static void verifyCrcNoPending(IoStream tsStream, LinkManager linkManager) {
BinaryProtocol bp = new BinaryProtocol(linkManager, tsStream);
linkManager.COMMUNICATION_EXECUTOR.submit(() -> {
if (tsStream.getDataBuffer().dropPending() != 0)
System.out.println("ERROR Extra data before CRC");
bp.getCrcFromController(Fields.TOTAL_CONFIG_SIZE);
// bp.getCrcFromController(Fields.TOTAL_CONFIG_SIZE);
// bp.getCrcFromController(Fields.TOTAL_CONFIG_SIZE);
if (tsStream.getDataBuffer().dropPending() != 0)
System.out.println("ERROR Extra data after CRC");
});
}
}

View File

@ -10,6 +10,7 @@ import com.rusefi.maintenance.VersionChecker;
import com.rusefi.ui.storage.Node;
import com.rusefi.ui.util.FrameHelper;
import com.rusefi.ui.util.UiUtils;
import jdk.nashorn.internal.runtime.regexp.joni.constants.Arguments;
import org.jetbrains.annotations.NotNull;
import java.util.Objects;
@ -74,7 +75,7 @@ public class MainFrame {
});
final LinkManager linkManager = consoleUI.uiContext.getLinkManager();
linkManager.getConnector().connectAndReadConfiguration(new ConnectionStateListener() {
linkManager.getConnector().connectAndReadConfiguration(new BinaryProtocol.Arguments(true), new ConnectionStateListener() {
@Override
public void onConnectionFailed() {
}