refactoring: better dependency control

This commit is contained in:
rusefi 2020-06-25 22:27:39 -04:00
parent 54dba3887f
commit 6a4cc8b266
10 changed files with 58 additions and 52 deletions

View File

@ -93,18 +93,18 @@ public class AutoTest {
setEngineType(32);
changeRpm(900);
// first let's get to expected RPM
assertRpmDoesNotJump(20000, 15, 30, FAIL);
assertRpmDoesNotJump(20000, 15, 30, FAIL, linkManager.getCommandQueue());
}
private void testV12() {
setEngineType(40);
changeRpm(700);
// first let's get to expected RPM
assertRpmDoesNotJump(15000, 15, 30, FAIL);
assertRpmDoesNotJump(15000, 15, 30, FAIL, linkManager.getCommandQueue());
}
public static void assertRpmDoesNotJump(int rpm, int settleTime, int testDuration, Function<String, Object> callback) {
IoUtil.changeRpm(CommandQueue.getInstance(), rpm);
public static void assertRpmDoesNotJump(int rpm, int settleTime, int testDuration, Function<String, Object> callback, CommandQueue commandQueue) {
IoUtil.changeRpm(commandQueue, rpm);
sleepSeconds(settleTime);
AtomicReference<String> result = new AtomicReference<>();
SensorCentral.SensorListener listener = new SensorCentral.SensorListener() {
@ -155,13 +155,13 @@ public class AutoTest {
String msg = "BMW";
EngineChart chart;
changeRpm(200);
chart = nextChart1();
chart = nextChart();
double x = 173.988;
// something is wrong here - it's a 6 cylinder here, why 4 cylinder cycle?
assertWave(msg, chart, EngineChart.SPARK_1, 0.0199666, x, x + 180, x + 360, x + 540);
changeRpm(1200);
chart = nextChart1();
chart = nextChart();
x = 688.464;
// something is wrong here - it's a 6 cylinder here, why 4 cylinder cycle?
@ -173,7 +173,7 @@ public class AutoTest {
}
void changeRpm(final int rpm) {
IoUtil.changeRpm(CommandQueue.getInstance(), rpm);
IoUtil.changeRpm(linkManager.getCommandQueue(), rpm);
}
private void testMitsu() {
@ -208,7 +208,7 @@ public class AutoTest {
String msg = "mazda 626 default cranking";
changeRpm(200);
EngineChart chart;
chart = nextChart1();
chart = nextChart();
double x = 102;
assertWave(msg, chart, EngineChart.SPARK_1, 0.1944, x, x + 180, x + 360, x + 540);
@ -274,12 +274,12 @@ public class AutoTest {
assertWave(true, msg, chart, EngineChart.INJECTOR_4, 0.29233, 0.1, 0.2, x);
sendCommand("set_whole_timing_map 520");
chart = nextChart1();
chart = nextChart();
x = 328;
assertWave(true, msg, chart, EngineChart.SPARK_1, 0.13299999999999998, EngineReport.RATIO, EngineReport.RATIO, x + 180, x + 540);
sendCommand("set_whole_timing_map 0");
chart = nextChart1();
chart = nextChart();
x = 128;
assertWave(true, msg, chart, EngineChart.SPARK_1, 0.13299999999999998, EngineReport.RATIO, EngineReport.RATIO, x + 180, x + 540);
}
@ -292,7 +292,7 @@ public class AutoTest {
changeRpm(260);
changeRpm(200);
String msg = "ProtegeLX cranking";
chart = nextChart1();
chart = nextChart();
assertEquals("", 12, SensorCentral.getInstance().getValue(Sensor.VBATT), 0.1);
double x = 107;
assertWave(msg, chart, EngineChart.SPARK_3, 0.194433, x);
@ -303,7 +303,7 @@ public class AutoTest {
msg = "ProtegeLX running";
changeRpm(2000);
chart = nextChart1();
chart = nextChart();
x = 112;
assertWave(msg, chart, EngineChart.SPARK_1, 0.13333333333333333, x, x + 180, x + 360, x + 540);
x = 0;
@ -320,7 +320,7 @@ public class AutoTest {
* note that command order matters - RPM change resets wave chart
*/
changeRpm(2000);
chart = nextChart1();
chart = nextChart();
String msg = "1995 Neon";
double x = -70;
@ -340,7 +340,7 @@ public class AutoTest {
sendComplexCommand("set algorithm 3");
changeRpm(2600);
changeRpm(2000);
chart = nextChart1();
chart = nextChart();
x = -70;
assertWaveFall(msg, chart, EngineChart.INJECTOR_4, 0.493, x + 540);
}
@ -353,7 +353,7 @@ public class AutoTest {
setEngineType(4);
EngineChart chart;
changeRpm(2000);
chart = nextChart1();
chart = nextChart();
String msg = "Fiesta";
double x = 312;
@ -367,7 +367,7 @@ public class AutoTest {
setEngineType(7);
EngineChart chart;
changeRpm(2000);
chart = nextChart1();
chart = nextChart();
String msg = "ford 6";
@ -376,7 +376,7 @@ public class AutoTest {
assertWaveNull(msg, chart, EngineChart.TRIGGER_2);
sendComplexCommand("set " + "trigger_type" + " 1"); // TT_FORD_ASPIRE
chart = nextChart1();
chart = nextChart();
assertTrue(msg, chart.get(EngineChart.TRIGGER_2) != null);
}
@ -392,14 +392,14 @@ public class AutoTest {
changeRpm(200);
double x;
chart = nextChart1();
chart = nextChart();
assertEquals(12, SensorCentral.getInstance().getValue(Sensor.VBATT));
x = 55;
assertWave("aspire default cranking ", chart, EngineChart.SPARK_1, 0.1944, x, x + 180, x + 360, x + 540);
changeRpm(600);
chart = nextChart1();
chart = nextChart();
x = 78;
assertWave(true, "aspire default running ", chart, EngineChart.SPARK_1, 0.04, 0.1, 0.1, x, x + 180, x + 360, x + 540);
@ -557,7 +557,7 @@ public class AutoTest {
try {
LinkManager linkManager = new LinkManager();
IoUtil.connectToSimulator(linkManager, startSimulator);
new AutoTest(linkManager, CommandQueue.getInstance()).mainTestBody();
new AutoTest(linkManager, linkManager.getCommandQueue()).mainTestBody();
} catch (Throwable e) {
e.printStackTrace();
failed = true;

View File

@ -85,6 +85,6 @@ public class RealHwTest {
private static void runRealHardwareTest(String port) throws Exception {
LinkManager linkManager = new LinkManager();
IoUtil.realHardwareConnect(linkManager, port);
new AutoTest(linkManager, CommandQueue.getInstance()).mainTestBody();
new AutoTest(linkManager, linkManager.getCommandQueue()).mainTestBody();
}
}

View File

@ -112,10 +112,6 @@ public class TestingUtils {
return chart;
}
static EngineChart nextChart1() {
return nextChart();
}
static String getNextWaveChart(CommandQueue commandQueue) {
IoUtil.sendCommand(Fields.CMD_RESET_ENGINE_SNIFFER, commandQueue);
String result = getEngineChart();

View File

@ -173,7 +173,7 @@ public class BinaryProtocol implements BinaryProtocolCommands {
/**
* this here to make CommandQueue happy
*/
CommandQueue.getInstance().handleConfirmationMessage(CommandQueue.CONFIRMATION_PREFIX + command);
linkManager.getCommandQueue().handleConfirmationMessage(CommandQueue.CONFIRMATION_PREFIX + command);
}
/**

View File

@ -62,6 +62,10 @@ public class LinkManager {
return connector.getBinaryProtocol();
}
public CommandQueue getCommandQueue() {
return CommandQueue.getInstance();
}
public enum LogLevel {
INFO,
DEBUG,

View File

@ -105,22 +105,22 @@ public class BenchTestPane {
}
private Component createDizzyTest() {
CommandControl panel = new FixedCommandControl("Dizzy", "dizzy.jpg", TEST, "dizzybench");
CommandControl panel = new FixedCommandControl(uiContext, "Dizzy", "dizzy.jpg", TEST, "dizzybench");
return panel.getContent();
}
private Component createFanTest() {
CommandControl panel = new FixedCommandControl("Radiator Fan", "radiator_fan.jpg", TEST, "fanbench");
CommandControl panel = new FixedCommandControl(uiContext, "Radiator Fan", "radiator_fan.jpg", TEST, "fanbench");
return panel.getContent();
}
private Component createAcRelayTest() {
CommandControl panel = new FixedCommandControl("A/C Compressor Relay", ".jpg", TEST, "acrelaybench");
CommandControl panel = new FixedCommandControl(uiContext, "A/C Compressor Relay", ".jpg", TEST, "acrelaybench");
return panel.getContent();
}
private Component createFuelPumpTest() {
CommandControl panel = new FixedCommandControl("Fuel Pump", "fuel_pump.jpg", TEST, "fuelpumpbench");
CommandControl panel = new FixedCommandControl(uiContext, "Fuel Pump", "fuel_pump.jpg", TEST, "fuelpumpbench");
return panel.getContent();
}

View File

@ -1,10 +1,12 @@
package com.rusefi;
import com.rusefi.ui.UIContext;
public class FixedCommandControl extends CommandControl {
private final String command;
public FixedCommandControl(String labelText, String iconFileName, String buttonText, String command) {
super(labelText, iconFileName, buttonText);
public FixedCommandControl(UIContext uiContext, String labelText, String iconFileName, String buttonText, String command) {
super(uiContext, labelText, iconFileName, buttonText);
this.command = command;
}

View File

@ -1,7 +1,6 @@
package com.rusefi;
import com.rusefi.config.generated.Fields;
import com.rusefi.io.CommandQueue;
import com.rusefi.ui.UIContext;
import org.jetbrains.annotations.NotNull;
@ -23,15 +22,15 @@ public class PresetsPane {
public PresetsPane(UIContext uiContext) {
this.uiContext = uiContext;
content.add(new SetEngineTypeCommandControl("Frankenso Miata NA6 Stage 0", "/engines/miata_na.png", Fields.ET_FRANKENSO_MIATA_NA6_VAF).getContent());
content.add(new SetEngineTypeCommandControl("Frankenso Miata NA6 Stage 1", "/engines/miata_na.png", Fields.ET_FRANKENSO_MIATA_NA6).getContent());
content.add(new SetEngineTypeCommandControl("Frankenso Miata NB2", "/engines/miata_nb.png", Fields.ET_FRANKENSO_MIATA_NB2).getContent());
content.add(new SetEngineTypeCommandControl("MRE Miata NB2 MAF", "engines/miata_nb.png", Fields.ET_MRE_MIATA_NB2_MAF).getContent());
content.add(new SetEngineTypeCommandControl("Frankenso V12", "/engines/v12", TEST_V_12).getContent());
content.add(new SetEngineTypeCommandControl("ETB bench", "", ETB_BENCH).getContent());
content.add(new SetEngineTypeCommandControl("Minimal", "", MINIMAL_PINS).getContent());
content.add(new SetEngineTypeCommandControl("MRE old test", "", Fields.ET_MRE_OLD_TEST_BOARD).getContent());
content.add(new SetEngineTypeCommandControl("MRE new test", "", Fields.ET_MRE_NEW_TEST_BOARD).getContent());
content.add(new SetEngineTypeCommandControl(uiContext,"Frankenso Miata NA6 Stage 0", "/engines/miata_na.png", Fields.ET_FRANKENSO_MIATA_NA6_VAF).getContent());
content.add(new SetEngineTypeCommandControl(uiContext, "Frankenso Miata NA6 Stage 1", "/engines/miata_na.png", Fields.ET_FRANKENSO_MIATA_NA6).getContent());
content.add(new SetEngineTypeCommandControl(uiContext, "Frankenso Miata NB2", "/engines/miata_nb.png", Fields.ET_FRANKENSO_MIATA_NB2).getContent());
content.add(new SetEngineTypeCommandControl(uiContext, "MRE Miata NB2 MAF", "engines/miata_nb.png", Fields.ET_MRE_MIATA_NB2_MAF).getContent());
content.add(new SetEngineTypeCommandControl(uiContext, "Frankenso V12", "/engines/v12", TEST_V_12).getContent());
content.add(new SetEngineTypeCommandControl(uiContext, "ETB bench", "", ETB_BENCH).getContent());
content.add(new SetEngineTypeCommandControl(uiContext, "Minimal", "", MINIMAL_PINS).getContent());
content.add(new SetEngineTypeCommandControl(uiContext, "MRE old test", "", Fields.ET_MRE_OLD_TEST_BOARD).getContent());
content.add(new SetEngineTypeCommandControl(uiContext, "MRE new test", "", Fields.ET_MRE_NEW_TEST_BOARD).getContent());
}
public JPanel getContent() {
@ -41,8 +40,8 @@ public class PresetsPane {
private class SetEngineTypeCommandControl extends FixedCommandControl {
private final String labelTest;
public SetEngineTypeCommandControl(String labelTest, String imageFileName, int engineType) {
super(labelTest, imageFileName, CommandControl.SET, "set " + Fields.CMD_ENGINE_TYPE + " " + engineType);
public SetEngineTypeCommandControl(UIContext uiContext, String labelTest, String imageFileName, int engineType) {
super(uiContext, labelTest, imageFileName, CommandControl.SET, "set " + Fields.CMD_ENGINE_TYPE + " " + engineType);
this.labelTest = labelTest;
}

View File

@ -6,6 +6,7 @@ import com.rusefi.FileLog;
import com.rusefi.InfixConverter;
import com.rusefi.core.MessagesCentral;
import com.rusefi.io.CommandQueue;
import com.rusefi.io.LinkManager;
import com.rusefi.ui.RecentCommands;
import com.rusefi.ui.UIContext;
import com.rusefi.ui.storage.Node;
@ -114,7 +115,7 @@ public class AnyCommand {
private void sendCommand(String rawCommand) {
if (!isValidInput(rawCommand))
return;
String cmd = prepareCommand(rawCommand);
String cmd = prepareCommand(rawCommand, uiContext.getLinkManager());
if (cmd == null) {
/**
* {@link #DECODE_RPN} for example does not send out anything
@ -129,12 +130,12 @@ public class AnyCommand {
reentrant = false;
}
public static String prepareCommand(String rawCommand) {
public static String prepareCommand(String rawCommand, LinkManager linkManager) {
try {
if (rawCommand.startsWith("eval" + " ")) {
return prepareEvalCommand(rawCommand);
} else if (rawCommand.toLowerCase().startsWith("stim_check" + " ")) {
handleStimulationSelfCheck(rawCommand);
handleStimulationSelfCheck(rawCommand, linkManager);
return null;
} else if (rawCommand.toLowerCase().startsWith(DECODE_RPN + " ")) {
handleDecodeRpn(rawCommand);
@ -154,7 +155,7 @@ public class AnyCommand {
* stim_check 3000 5 30
* would set RPM to 3000, give it 5 seconds to settle, and test for 30 seconds
*/
private static void handleStimulationSelfCheck(String rawCommand) {
private static void handleStimulationSelfCheck(String rawCommand, LinkManager linkManager) {
String[] parts = rawCommand.split(" ", 4);
if (parts.length != 4) {
MessagesCentral.getInstance().postMessage(AnyCommand.class, "Invalid command length " + parts);
@ -178,7 +179,7 @@ public class AnyCommand {
return null;
}
};
AutoTest.assertRpmDoesNotJump(rpm, settleTime, durationTime, callback);
AutoTest.assertRpmDoesNotJump(rpm, settleTime, durationTime, callback, linkManager.getCommandQueue());
}
}).start();
}

View File

@ -10,6 +10,10 @@ import static org.junit.Assert.assertEquals;
* 3/9/2017.
*/
public class AnyCommandTest {
private static String prepareCommand(String rawCommand) {
return AnyCommand.prepareCommand(rawCommand, null);
}
@Test
public void testUnquote() {
assertEquals("1 2 3", AnyCommand.unquote(" \"1 2 3\" "));
@ -17,13 +21,13 @@ public class AnyCommandTest {
@Test
public void testPrepareEvalCommand() {
assertEquals("rpn_eval \"2 3 +\"", AnyCommand.prepareCommand("eval \"2 + 3\" "));
assertEquals("rpn_eval \"2 3 +\"", prepareCommand("eval \"2 + 3\" "));
}
@Test
public void testSetFSIOexpression() {
// todo: parameter order needs to be in postfix form
assertEquals("set_rpn_expression 1 \"rpm fsio_setting 0 >\"", AnyCommand.prepareCommand("set_fsio_expression 1 \"rpm > fsio_setting 0\""));
assertEquals("set_rpn_expression 1 \"rpm fsio_setting 0 >\"", prepareCommand("set_fsio_expression 1 \"rpm > fsio_setting 0\""));
}
@Test
@ -32,6 +36,6 @@ public class AnyCommandTest {
assertEquals("tps > 10", AnyCommand.unquote("\u201Ctps > 10\u201D"));
assertEquals("set_rpn_expression 1 \"tps 10 >\"", AnyCommand.prepareCommand("Set_fsio_expression 1 \u201Ctps > 10\u201D"));
assertEquals("set_rpn_expression 1 \"tps 10 >\"", prepareCommand("Set_fsio_expression 1 \u201Ctps > 10\u201D"));
}
}