SimulatorTcpSandbox

code reuse
This commit is contained in:
rusefillc 2021-12-06 18:59:39 -05:00
parent 0a3d42f9c3
commit 58f1894be9
3 changed files with 68 additions and 62 deletions

View File

@ -51,19 +51,10 @@ public class PCanSandbox {
System.out.println("****************************************");
*/
LinkManager linkManager = new 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");
});
SandboxCommon.verifyCrcNoPending(tsStream, linkManager);
ConfigurationImage ci = SandboxCommon.readImage(tsStream, linkManager);
/*
*/
}
}

View File

@ -0,0 +1,63 @@
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 java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
public class SandboxCommon {
static ConfigurationImage readImage(IoStream tsStream, LinkManager linkManager) throws InterruptedException {
AtomicReference<ConfigurationImage> configurationImageAtomicReference = new AtomicReference<>();
CountDownLatch imageLatch = new CountDownLatch(1);
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();
configurationImageAtomicReference.set(ci);
imageLatch.countDown();
}
}
@Override
public void onConnectionFailed() {
System.out.println("onConnectionFailed");
}
});
imageLatch.await(1, TimeUnit.MINUTES);
ConfigurationImage ci = configurationImageAtomicReference.get();
System.out.println("Got ConfigurationImage " + ci + ", " + ci.getSize());
return ci;
}
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

@ -2,19 +2,11 @@ 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 java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicReference;
import static com.rusefi.io.tcp.TcpConnector.DEFAULT_PORT;
import static com.rusefi.io.tcp.TcpConnector.LOCALHOST;
@ -27,51 +19,11 @@ public class SimulatorTcpSandbox {
TcpIoStream tsStream = new TcpIoStream("sandbox", s);
LinkManager linkManager = new LinkManager();
verifyCrcNoPending(tsStream, linkManager);
SandboxCommon.verifyCrcNoPending(tsStream, linkManager);
AtomicReference<ConfigurationImage> configurationImageAtomicReference = new AtomicReference<>();
CountDownLatch imageLatch = new CountDownLatch(1);
ConfigurationImage ci = SandboxCommon.readImage(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();
configurationImageAtomicReference.set(ci);
imageLatch.countDown();
}
}
@Override
public void onConnectionFailed() {
System.out.println("onConnectionFailed");
}
});
imageLatch.await();
ConfigurationImage ci = configurationImageAtomicReference.get();
System.out.println("Got ConfigurationImage " + ci + ", " + ci.getSize());
System.exit(0);
}
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");
});
}
}