mirror of https://github.com/rusefi/rusefi.git
SimulatorTcpSandbox
This commit is contained in:
parent
eb950e7fd3
commit
a47530be54
|
@ -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));
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
});
|
||||
*/
|
||||
}
|
||||
|
||||
|
|
|
@ -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");
|
||||
});
|
||||
}
|
||||
}
|
|
@ -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() {
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue