diff --git a/java_console/ui/src/main/java/com/rusefi/SensorSnifferPane.java b/java_console/ui/src/main/java/com/rusefi/SensorSnifferPane.java index 586b8ff9e3..c43a06e785 100644 --- a/java_console/ui/src/main/java/com/rusefi/SensorSnifferPane.java +++ b/java_console/ui/src/main/java/com/rusefi/SensorSnifferPane.java @@ -87,7 +87,7 @@ public class SensorSnifferPane { upperPanel.add(pauseButton); upperPanel.add(new RpmLabel(uiContext,2).getContent()); - command = AnyCommand.createField(config, true, false); + command = AnyCommand.createField(uiContext, config, true, false); upperPanel.add(command.getContent()); upperPanel.add(new URLLabel(EngineSnifferPanel.HELP_TEXT, HELP_URL)); diff --git a/java_console/ui/src/main/java/com/rusefi/etb/StandardTestSequence.java b/java_console/ui/src/main/java/com/rusefi/etb/StandardTestSequence.java index 429f99c8ed..4840303efa 100644 --- a/java_console/ui/src/main/java/com/rusefi/etb/StandardTestSequence.java +++ b/java_console/ui/src/main/java/com/rusefi/etb/StandardTestSequence.java @@ -2,6 +2,7 @@ package com.rusefi.etb; import com.rusefi.core.Sensor; import com.rusefi.core.SensorCentral; +import com.rusefi.ui.UIContext; import org.jetbrains.annotations.NotNull; import static com.rusefi.Timeouts.SECOND; @@ -20,7 +21,7 @@ public class StandardTestSequence { ); } - public static TestSequenceStep addSequence(TestSequenceStep first_step, Runnable onEachStep, TestSequenceStep.Condition condition) { + public static TestSequenceStep addSequence(UIContext uiContext, TestSequenceStep first_step, Runnable onEachStep, TestSequenceStep.Condition condition) { TestSequenceStep secondStep = new TestSequenceStep(SECOND, EtbTarget.Condition.YES) { @Override protected void doJob() { @@ -28,39 +29,39 @@ public class StandardTestSequence { } }; TestSequenceStep result = first_step.addNext(secondStep) - .addNext(10 * SECOND, 4 /*position*/, onEachStep, condition) - .addNext(5 * SECOND, 6, /*position*/onEachStep, condition) - .addNext(5 * SECOND, 8, /*position*/onEachStep, condition) - .addNext(5 * SECOND, 6, /*position*/onEachStep, condition) - .addNext(5 * SECOND, 4, /*position*/onEachStep, condition) - .addNext(5 * SECOND, 2, /*position*/onEachStep, condition) - .addNext(5 * SECOND, 0, /*position*/onEachStep, condition) - .addNext(5 * SECOND, 10, /*position*/onEachStep, condition) - .addNext(3 * SECOND, 0, /*position*/onEachStep, condition) - .addNext(1 * SECOND, 6, /*position*/onEachStep, condition) - .addNext(1 * SECOND, 8, /*position*/onEachStep, condition) - .addNext(1 * SECOND, 6, /*position*/onEachStep, condition) - .addNext(1 * SECOND, 4, /*position*/onEachStep, condition) - .addNext(1 * SECOND, 2, /*position*/onEachStep, condition) - .addNext(1 * SECOND, 0, /*position*/onEachStep, condition) - .addNext(1 * SECOND, 10, /*position*/onEachStep, condition) - .addNext(3 * SECOND, 7, /*position*/onEachStep, condition) - .addNext(3 * SECOND, 6, /*position*/onEachStep, condition) - .addNext(3 * SECOND, 5, /*position*/onEachStep, condition) - .addNext(3 * SECOND, 4, /*position*/onEachStep, condition) - .addNext(3 * SECOND, 3, /*position*/onEachStep, condition) - .addNext(3 * SECOND, 2, /*position*/onEachStep, condition) - .addNext(3 * SECOND, 1, /*position*/onEachStep, condition) - .addNext(3 * SECOND, 0, /*position*/onEachStep, condition) - .addNext(10 * SECOND, 6, /*position*/onEachStep, condition) - .addNext(10 * SECOND, 30, /*position*/onEachStep, condition) - .addNext(10 * SECOND, 50, /*position*/onEachStep, condition) - .addNext(10 * SECOND, 70, /*position*/onEachStep, condition) - .addNext(10 * SECOND, 95, /*position*/onEachStep, condition) - .addNext(10 * SECOND, 50, /*position*/onEachStep, condition) - .addNext(10 * SECOND, 70, /*position*/onEachStep, condition) - .addNext(10 * SECOND, 4, /*position*/onEachStep, condition) - .addNext(10 * SECOND, 0, /*position*/onEachStep, condition) + .addNext(uiContext, 10 * SECOND, 4 /*position*/, onEachStep, condition) + .addNext(uiContext, 5 * SECOND, 6, /*position*/onEachStep, condition) + .addNext(uiContext, 5 * SECOND, 8, /*position*/onEachStep, condition) + .addNext(uiContext, 5 * SECOND, 6, /*position*/onEachStep, condition) + .addNext(uiContext, 5 * SECOND, 4, /*position*/onEachStep, condition) + .addNext(uiContext, 5 * SECOND, 2, /*position*/onEachStep, condition) + .addNext(uiContext, 5 * SECOND, 0, /*position*/onEachStep, condition) + .addNext(uiContext, 5 * SECOND, 10, /*position*/onEachStep, condition) + .addNext(uiContext, 3 * SECOND, 0, /*position*/onEachStep, condition) + .addNext(uiContext, 1 * SECOND, 6, /*position*/onEachStep, condition) + .addNext(uiContext, 1 * SECOND, 8, /*position*/onEachStep, condition) + .addNext(uiContext, 1 * SECOND, 6, /*position*/onEachStep, condition) + .addNext(uiContext, 1 * SECOND, 4, /*position*/onEachStep, condition) + .addNext(uiContext, 1 * SECOND, 2, /*position*/onEachStep, condition) + .addNext(uiContext, 1 * SECOND, 0, /*position*/onEachStep, condition) + .addNext(uiContext, 1 * SECOND, 10, /*position*/onEachStep, condition) + .addNext(uiContext, 3 * SECOND, 7, /*position*/onEachStep, condition) + .addNext(uiContext, 3 * SECOND, 6, /*position*/onEachStep, condition) + .addNext(uiContext, 3 * SECOND, 5, /*position*/onEachStep, condition) + .addNext(uiContext, 3 * SECOND, 4, /*position*/onEachStep, condition) + .addNext(uiContext, 3 * SECOND, 3, /*position*/onEachStep, condition) + .addNext(uiContext, 3 * SECOND, 2, /*position*/onEachStep, condition) + .addNext(uiContext, 3 * SECOND, 1, /*position*/onEachStep, condition) + .addNext(uiContext, 3 * SECOND, 0, /*position*/onEachStep, condition) + .addNext(uiContext, 10 * SECOND, 6, /*position*/onEachStep, condition) + .addNext(uiContext, 10 * SECOND, 30, /*position*/onEachStep, condition) + .addNext(uiContext, 10 * SECOND, 50, /*position*/onEachStep, condition) + .addNext(uiContext, 10 * SECOND, 70, /*position*/onEachStep, condition) + .addNext(uiContext, 10 * SECOND, 95, /*position*/onEachStep, condition) + .addNext(uiContext, 10 * SECOND, 50, /*position*/onEachStep, condition) + .addNext(uiContext, 10 * SECOND, 70, /*position*/onEachStep, condition) + .addNext(uiContext, 10 * SECOND, 4, /*position*/onEachStep, condition) + .addNext(uiContext, 10 * SECOND, 0, /*position*/onEachStep, condition) ; return result; } diff --git a/java_console/ui/src/main/java/com/rusefi/etb/TestSequenceStep.java b/java_console/ui/src/main/java/com/rusefi/etb/TestSequenceStep.java index 384a57db71..91e1d3ba2b 100644 --- a/java_console/ui/src/main/java/com/rusefi/etb/TestSequenceStep.java +++ b/java_console/ui/src/main/java/com/rusefi/etb/TestSequenceStep.java @@ -2,6 +2,7 @@ package com.rusefi.etb; import com.rusefi.FileLog; import com.rusefi.core.MessagesCentral; +import com.rusefi.ui.UIContext; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -45,7 +46,7 @@ public abstract class TestSequenceStep { protected abstract void doJob(); - public TestSequenceStep addNext(long duration, double position, Runnable onEachStep, Condition condition) { + public TestSequenceStep addNext(UIContext uiContext, long duration, double position, Runnable onEachStep, Condition condition) { return addNext(new EtbTarget(duration, position, onEachStep, condition)); } diff --git a/java_console/ui/src/main/java/com/rusefi/ui/GaugesPanel.java b/java_console/ui/src/main/java/com/rusefi/ui/GaugesPanel.java index 1fea51ed10..cabe0f3827 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/GaugesPanel.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/GaugesPanel.java @@ -213,7 +213,7 @@ public class GaugesPanel { leftUpperPanel.add(createPauseButton()); leftUpperPanel.add(createSaveImageButton()); leftUpperPanel.add(new RpmLabel(uiContext, 2).getContent()); - AnyCommand command = AnyCommand.createField(config, false, false); + AnyCommand command = AnyCommand.createField(uiContext, config, false, false); leftUpperPanel.add(command.getContent()); return leftUpperPanel; } diff --git a/java_console/ui/src/main/java/com/rusefi/ui/console/MainFrame.java b/java_console/ui/src/main/java/com/rusefi/ui/console/MainFrame.java index e8a5cde230..2307bb4b92 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/console/MainFrame.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/console/MainFrame.java @@ -59,7 +59,7 @@ public class MainFrame { if (ConnectionStatusLogic.INSTANCE.getValue() == ConnectionStatusValue.CONNECTED) { long unixGmtTime = System.currentTimeMillis() / 1000L; long withOffset = unixGmtTime + TimeZone.getDefault().getOffset(System.currentTimeMillis()) / 1000; - CommandQueue.getInstance().write("set " + + consoleUI.uiContext.getCommandQueue().write("set " + Fields.CMD_DATE + " " + withOffset, CommandQueue.DEFAULT_TIMEOUT, InvocationConfirmationListener.VOID, false); diff --git a/java_console/ui/src/main/java/com/rusefi/ui/engine/EngineSnifferPanel.java b/java_console/ui/src/main/java/com/rusefi/ui/engine/EngineSnifferPanel.java index 26952ce307..ac0f2db587 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/engine/EngineSnifferPanel.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/engine/EngineSnifferPanel.java @@ -110,7 +110,7 @@ public class EngineSnifferPanel { upperPanel.add(new RpmLabel(uiContext,2).getContent()); if (!uiContext.getLinkManager().isLogViewer()) { - command = AnyCommand.createField(config, "chartsize " + EFI_DEFAULT_CHART_SIZE, true, true); + command = AnyCommand.createField(uiContext, config, "chartsize " + EFI_DEFAULT_CHART_SIZE, true, true); upperPanel.add(command.getContent()); } diff --git a/java_console/ui/src/main/java/com/rusefi/ui/etb/CalibrationPanel.java b/java_console/ui/src/main/java/com/rusefi/ui/etb/CalibrationPanel.java index 7297271c3d..c9c43172d5 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/etb/CalibrationPanel.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/etb/CalibrationPanel.java @@ -14,8 +14,10 @@ import java.awt.event.ActionEvent; */ public class CalibrationPanel { private final JPanel content = new JPanel(new VerticalFlowLayout()); + private final UIContext uiContext; public CalibrationPanel(UIContext uiContext) { + this.uiContext = uiContext; content.setBorder(BorderFactory.createTitledBorder("Calibration")); content.add(createCommandButton("Grab TPS#1 fully closed", "calibrate_tps_1_closed")); content.add(createCommandButton("Grab TPS#1 Wide Open", "calibrate_tps_1_wot")); @@ -30,7 +32,7 @@ public class CalibrationPanel { button.addActionListener(new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { - CommandQueue.getInstance().write(command); + uiContext.getCommandQueue().write(command); } }); return button; diff --git a/java_console/ui/src/main/java/com/rusefi/ui/etb/DirectDrivePanel.java b/java_console/ui/src/main/java/com/rusefi/ui/etb/DirectDrivePanel.java index a989a2cb2f..fa72c7efe2 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/etb/DirectDrivePanel.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/etb/DirectDrivePanel.java @@ -2,6 +2,7 @@ package com.rusefi.ui.etb; import com.rusefi.config.generated.Fields; import com.rusefi.io.CommandQueue; +import com.rusefi.ui.UIContext; import org.putgemin.VerticalFlowLayout; import javax.swing.*; @@ -24,10 +25,10 @@ public class DirectDrivePanel { private final JButton reset = new JButton("Cancel Direct Drive"); private double directDriverValue; - public DirectDrivePanel() { + public DirectDrivePanel(UIContext uiContext) { content.setBorder(BorderFactory.createTitledBorder("Direct Drive")); - CommandQueue.getInstance().addListener(command -> { + uiContext.getCommandQueue().addListener(command -> { if (command.startsWith(CMD_ETB_DUTY + " ")) { command = command.substring((CMD_ETB_DUTY + " ").length()); directDriverValue = parseDouble(command, Double.NaN); @@ -43,7 +44,7 @@ public class DirectDrivePanel { @Override public void actionPerformed(ActionEvent e) { double newValue = getCurrent() + getIncrement(); - CommandQueue.getInstance().write(CMD_ETB_DUTY + " " + newValue); + uiContext.getCommandQueue().write(CMD_ETB_DUTY + " " + newValue); } }); upDownPanel.add(more); @@ -53,7 +54,7 @@ public class DirectDrivePanel { @Override public void actionPerformed(ActionEvent e) { double newValue = getCurrent() - getIncrement(); - CommandQueue.getInstance().write(CMD_ETB_DUTY + " " + newValue); + uiContext.getCommandQueue().write(CMD_ETB_DUTY + " " + newValue); } }); @@ -61,7 +62,7 @@ public class DirectDrivePanel { reset.addActionListener(new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { - CommandQueue.getInstance().write(CANCEL_DIRECT_DRIVE_COMMAND); + uiContext.getCommandQueue().write(CANCEL_DIRECT_DRIVE_COMMAND); } }); diff --git a/java_console/ui/src/main/java/com/rusefi/ui/etb/EtbCommandsPanel.java b/java_console/ui/src/main/java/com/rusefi/ui/etb/EtbCommandsPanel.java index fe02579833..af2ea135c6 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/etb/EtbCommandsPanel.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/etb/EtbCommandsPanel.java @@ -24,11 +24,11 @@ public class EtbCommandsPanel { private final JPanel content = new JPanel(new VerticalFlowLayout()); public EtbCommandsPanel(UIContext uiContext) { - content.add(new DirectDrivePanel().getContent()); + content.add(new DirectDrivePanel(uiContext).getContent()); JPanel testParameters = new JPanel(new VerticalFlowLayout()); testParameters.setBorder(BorderFactory.createTitledBorder("Try PID settings")); - EtbTestSequence etbTestSequence = new EtbTestSequence(); + EtbTestSequence etbTestSequence = new EtbTestSequence(uiContext); testParameters.add(etbTestSequence.getButton()); testParameters.add(UiUtils.wrap(etbTestSequence.getCancelButton())); testParameters.add(etbTestSequence.getResult()); diff --git a/java_console/ui/src/main/java/com/rusefi/ui/etb/EtbMonteCarloSequence.java b/java_console/ui/src/main/java/com/rusefi/ui/etb/EtbMonteCarloSequence.java index e5b832b269..8b4fb940b4 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/etb/EtbMonteCarloSequence.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/etb/EtbMonteCarloSequence.java @@ -41,7 +41,7 @@ public class EtbMonteCarloSequence { executor.execute(new Runnable() { @Override public void run() { - CommandQueue.getInstance().write(CANCEL_DIRECT_DRIVE_COMMAND); + uiContext.getCommandQueue().write(CANCEL_DIRECT_DRIVE_COMMAND); sleep(3 * SECOND); // 30000 data points at 100Hz should be 300 seconds worth of data StandardTestSequence.metric.start(/* buffer size: */durationSeconds * frequencyHz, /*period, ms: */ 1000 / frequencyHz); @@ -63,11 +63,11 @@ public class EtbMonteCarloSequence { ":iFactor:" + iFactor + ":dFactor:" + dFactor; MessagesCentral.getInstance().postMessage(EtbMonteCarloSequence.class, stats); - CommandQueue.getInstance().write("etbreset"); - CommandQueue.getInstance().write("set etb_o " + offset); - CommandQueue.getInstance().write("set etb_p " + pFactor); - CommandQueue.getInstance().write("set etb_i " + iFactor); - CommandQueue.getInstance().write("set etb_d " + dFactor); + uiContext.getCommandQueue().write("etbreset"); + uiContext.getCommandQueue().write("set etb_o " + offset); + uiContext.getCommandQueue().write("set etb_p " + pFactor); + uiContext.getCommandQueue().write("set etb_i " + iFactor); + uiContext.getCommandQueue().write("set etb_d " + dFactor); MessagesCentral.getInstance().postMessage(EtbMonteCarloSequence.class, uiContext.sensorLogger.getSecondsSinceFileStart() + " running " + stats); @@ -96,7 +96,7 @@ public class EtbMonteCarloSequence { MessagesCentral.getInstance().postMessage(EtbMonteCarloSequence.class,"Running " + state + ", current=" + value); }); - TestSequenceStep last = StandardTestSequence.addSequence(firstStep, onEachStep, condition); + TestSequenceStep last = StandardTestSequence.addSequence(uiContext, firstStep, onEachStep, condition); last.addNext(new TestSequenceStep(5 * SECOND, EtbTarget.Condition.YES) { @Override protected void doJob() { @@ -134,6 +134,6 @@ public class EtbMonteCarloSequence { } private void stopETB() { - CommandQueue.getInstance().write(CMD_ETB_DUTY + " " + 0); + uiContext.getCommandQueue().write(CMD_ETB_DUTY + " " + 0); } } diff --git a/java_console/ui/src/main/java/com/rusefi/ui/etb/EtbTestSequence.java b/java_console/ui/src/main/java/com/rusefi/ui/etb/EtbTestSequence.java index 82f70daf85..7b650eaee1 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/etb/EtbTestSequence.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/etb/EtbTestSequence.java @@ -5,6 +5,7 @@ import com.rusefi.core.Sensor; import com.rusefi.etb.EtbTarget; import com.rusefi.etb.StandardTestSequence; import com.rusefi.etb.TestSequenceStep; +import com.rusefi.ui.UIContext; import javax.swing.*; import java.awt.event.ActionEvent; @@ -41,7 +42,7 @@ public class EtbTestSequence { private final JButton cancelButton = new JButton("Cancel"); private boolean isCancelled; - public EtbTestSequence() { + public EtbTestSequence(UIContext uiContext) { cancelButton.setEnabled(false); button.addActionListener(e -> { @@ -70,7 +71,7 @@ public class EtbTestSequence { }); TestSequenceStep firstStep = new EtbTarget(10 * SECOND, 4, /*position*/onEachStep, TestSequenceStep.Condition.YES); - TestSequenceStep result = StandardTestSequence.addSequence(firstStep, onEachStep, new TestSequenceStep.Condition() { + TestSequenceStep result = StandardTestSequence.addSequence(uiContext, firstStep, onEachStep, new TestSequenceStep.Condition() { @Override public boolean shouldRunTask() { if (isCancelled) diff --git a/java_console/ui/src/main/java/com/rusefi/ui/widgets/AnyCommand.java b/java_console/ui/src/main/java/com/rusefi/ui/widgets/AnyCommand.java index 726618e6dd..d70027c8ca 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/widgets/AnyCommand.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/widgets/AnyCommand.java @@ -7,6 +7,7 @@ import com.rusefi.InfixConverter; import com.rusefi.core.MessagesCentral; import com.rusefi.io.CommandQueue; import com.rusefi.ui.RecentCommands; +import com.rusefi.ui.UIContext; import com.rusefi.ui.storage.Node; import com.rusefi.ui.util.JTextFieldWithWidth; @@ -252,11 +253,11 @@ public class AnyCommand { void onSend(); } - public static AnyCommand createField(Node config, boolean listenToCommands, boolean withCommandCaption) { - return createField(config, config.getProperty(KEY), listenToCommands, withCommandCaption); + public static AnyCommand createField(UIContext uiContext, Node config, boolean listenToCommands, boolean withCommandCaption) { + return createField(uiContext, config, config.getProperty(KEY), listenToCommands, withCommandCaption); } - public static AnyCommand createField(Node config, String defaultCommand, boolean listenToCommands, boolean withCommandCaption) { + public static AnyCommand createField(UIContext uiContext, Node config, String defaultCommand, boolean listenToCommands, boolean withCommandCaption) { final JTextField text = new JTextFieldWithWidth(200); final AnyCommand command = new AnyCommand(text, config, defaultCommand, listenToCommands, withCommandCaption);