mirror of https://github.com/rusefi/rusefi-1.git
refactoring: better dependency control
This commit is contained in:
parent
6a4cc8b266
commit
625b02f964
|
@ -214,8 +214,8 @@ public class AutoTest {
|
|||
assertWave(msg, chart, EngineChart.SPARK_1, 0.1944, x, x + 180, x + 360, x + 540);
|
||||
}
|
||||
|
||||
static EngineChart nextChart() {
|
||||
return TestingUtils.nextChart();
|
||||
private EngineChart nextChart() {
|
||||
return TestingUtils.nextChart(linkManager.getCommandQueue());
|
||||
}
|
||||
|
||||
private void test2003DodgeNeon() {
|
||||
|
|
|
@ -13,7 +13,7 @@ public class EnduranceTest {
|
|||
|
||||
public static void main(String[] args) {
|
||||
LinkManager linkManager = new LinkManager();
|
||||
CommandQueue commandQueue = CommandQueue.getInstance();
|
||||
CommandQueue commandQueue = linkManager.getCommandQueue();
|
||||
long start = System.currentTimeMillis();
|
||||
int count = parseCount(args);
|
||||
try {
|
||||
|
@ -31,7 +31,7 @@ public class EnduranceTest {
|
|||
AutoTest.currentEngineType = 3;
|
||||
sendCommand("set " + Fields.CMD_ENGINE_TYPE + " " + 3, AutoTest.COMPLEX_COMMAND_RETRY, Timeouts.SET_ENGINE_TIMEOUT, commandQueue);
|
||||
sleepSeconds(2);
|
||||
sendCommand(getEnableCommand("self_stimulation"), CommandQueue.getInstance());
|
||||
sendCommand(getEnableCommand("self_stimulation"), commandQueue);
|
||||
// IoUtil.changeRpm(1200);
|
||||
AutoTest.currentEngineType = 28;
|
||||
sendCommand("set " + Fields.CMD_ENGINE_TYPE + " " + 28, AutoTest.COMPLEX_COMMAND_RETRY, Timeouts.SET_ENGINE_TIMEOUT, commandQueue);
|
||||
|
|
|
@ -105,9 +105,9 @@ public class TestingUtils {
|
|||
assertTrue(msg, value == null);
|
||||
}
|
||||
|
||||
static EngineChart nextChart() {
|
||||
static EngineChart nextChart(CommandQueue commandQueue) {
|
||||
long start = System.currentTimeMillis();
|
||||
EngineChart chart = EngineChartParser.unpackToMap(getNextWaveChart(CommandQueue.getInstance()));
|
||||
EngineChart chart = EngineChartParser.unpackToMap(getNextWaveChart(commandQueue));
|
||||
FileLog.MAIN.logLine("AUTOTEST nextChart() in " + (System.currentTimeMillis() - start));
|
||||
return chart;
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ public class CommandQueue {
|
|||
public static final int SLOW_CONFIRMATION_TIMEOUT = 5000;
|
||||
public static final Class<CommandQueue> COMMAND_QUEUE_CLASS = CommandQueue.class;
|
||||
private final Object lock = new Object();
|
||||
private final LinkManager linkManager;
|
||||
/**
|
||||
* One complex use-case is when we send out a bunch of commands and then we need to handle all the configurations
|
||||
* correctly
|
||||
|
@ -31,7 +32,6 @@ public class CommandQueue {
|
|||
*/
|
||||
private Set<String> pendingConfirmations = Collections.synchronizedSet(new HashSet<String>());
|
||||
|
||||
public static final CommandQueue instance = new CommandQueue();
|
||||
private final BlockingQueue<IMethodInvocation> pendingCommands = new LinkedBlockingQueue<>();
|
||||
private final List<CommandQueueListener> commandListeners = new ArrayList<>();
|
||||
|
||||
|
@ -89,7 +89,7 @@ public class CommandQueue {
|
|||
while (!pendingConfirmations.contains(command)) {
|
||||
counter++;
|
||||
// FileLog.MAIN.logLine("templog sending " + command + " " + System.currentTimeMillis() + " " + new Date());
|
||||
LinkManager.send(command, commandRequest.isFireEvent());
|
||||
linkManager.send(command, commandRequest.isFireEvent());
|
||||
long now = System.currentTimeMillis();
|
||||
synchronized (lock) {
|
||||
lock.wait(commandRequest.getTimeout());
|
||||
|
@ -114,7 +114,8 @@ public class CommandQueue {
|
|||
MessagesCentral.getInstance().postMessage(CommandQueue.class, "Took " + counter + " attempts");
|
||||
}
|
||||
|
||||
private CommandQueue() {
|
||||
public CommandQueue(LinkManager linkManager) {
|
||||
this.linkManager = linkManager;
|
||||
Thread thread = new Thread(runnable, "Commands Queue");
|
||||
thread.setDaemon(true);
|
||||
thread.start();
|
||||
|
@ -140,10 +141,6 @@ public class CommandQueue {
|
|||
}
|
||||
}
|
||||
|
||||
public static CommandQueue getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
public void write(String command) {
|
||||
write(command, DEFAULT_TIMEOUT);
|
||||
}
|
||||
|
|
|
@ -18,6 +18,21 @@ import java.util.concurrent.*;
|
|||
* 3/3/14
|
||||
*/
|
||||
public class LinkManager {
|
||||
@NotNull
|
||||
public static LogLevel LOG_LEVEL = LogLevel.INFO;
|
||||
|
||||
public static LinkDecoder ENCODER = new LinkDecoder() {
|
||||
@Override
|
||||
public String unpack(String packedLine) {
|
||||
return packedLine;
|
||||
}
|
||||
};
|
||||
|
||||
public static final String LOG_VIEWER = "log viewer";
|
||||
private final CommandQueue commandQueue = new CommandQueue(this);
|
||||
|
||||
private LinkConnector connector;
|
||||
|
||||
@NotNull
|
||||
public CountDownLatch connect(String port) {
|
||||
final CountDownLatch connected = new CountDownLatch(1);
|
||||
|
@ -63,7 +78,7 @@ public class LinkManager {
|
|||
}
|
||||
|
||||
public CommandQueue getCommandQueue() {
|
||||
return CommandQueue.getInstance();
|
||||
return commandQueue;
|
||||
}
|
||||
|
||||
public enum LogLevel {
|
||||
|
@ -76,16 +91,6 @@ public class LinkManager {
|
|||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static LogLevel LOG_LEVEL = LogLevel.INFO;
|
||||
|
||||
public static LinkDecoder ENCODER = new LinkDecoder() {
|
||||
@Override
|
||||
public String unpack(String packedLine) {
|
||||
return packedLine;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Threading of the whole input/output does not look healthy at all!
|
||||
*
|
||||
|
@ -100,7 +105,6 @@ public class LinkManager {
|
|||
return t;
|
||||
}
|
||||
});
|
||||
public static final String LOG_VIEWER = "log viewer";
|
||||
public final LinkedBlockingQueue<Runnable> COMMUNICATION_QUEUE = new LinkedBlockingQueue<>();
|
||||
/**
|
||||
* All request/responses to underlying controller are happening on this single-threaded executor in a FIFO manner
|
||||
|
@ -144,8 +148,6 @@ public class LinkManager {
|
|||
}
|
||||
});
|
||||
|
||||
private static LinkConnector connector;
|
||||
|
||||
/**
|
||||
* This flag controls if mock controls are needed
|
||||
*/
|
||||
|
@ -171,7 +173,7 @@ public class LinkManager {
|
|||
}
|
||||
|
||||
public void setConnector(LinkConnector connector) {
|
||||
LinkManager.connector = connector;
|
||||
this.connector = connector;
|
||||
}
|
||||
|
||||
public static boolean isLogViewerMode(String port) {
|
||||
|
@ -183,10 +185,10 @@ public class LinkManager {
|
|||
return connector == LinkConnector.VOID;
|
||||
}
|
||||
|
||||
public static void send(String command, boolean fireEvent) throws InterruptedException {
|
||||
if (connector == null)
|
||||
public void send(String command, boolean fireEvent) throws InterruptedException {
|
||||
if (this.connector == null)
|
||||
throw new NullPointerException("connector");
|
||||
connector.send(command, fireEvent);
|
||||
this.connector.send(command, fireEvent);
|
||||
}
|
||||
|
||||
public void restart() {
|
||||
|
|
|
@ -15,6 +15,6 @@ public class UIContext {
|
|||
}
|
||||
|
||||
public CommandQueue getCommandQueue() {
|
||||
return CommandQueue.instance;
|
||||
return linkManager.getCommandQueue();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue