From aacb5184ad4544fe465a079e15dee1c8f01db20a Mon Sep 17 00:00:00 2001 From: rusefillc Date: Sun, 4 Oct 2020 16:03:35 -0400 Subject: [PATCH] get_performance_trace automation --- firmware/get_performance_trace.bat | 5 ++ .../main/java/com/rusefi/rusEFIVersion.java | 2 +- .../main/java/com/rusefi/BenchTestPane.java | 29 +---------- .../com/rusefi/PerformanceTraceHelper.java | 51 +++++++++++++++++++ .../java/com/rusefi/tools/ConsoleTools.java | 3 +- 5 files changed, 60 insertions(+), 30 deletions(-) create mode 100644 firmware/get_performance_trace.bat create mode 100644 java_console/ui/src/main/java/com/rusefi/PerformanceTraceHelper.java diff --git a/firmware/get_performance_trace.bat b/firmware/get_performance_trace.bat new file mode 100644 index 0000000000..0b963cff53 --- /dev/null +++ b/firmware/get_performance_trace.bat @@ -0,0 +1,5 @@ +rem +rem auto-detects connected running rusEfi serial port and downloads performance trace +rem + +java -jar ../java_console_binary/rusefi_console.jar get_performance_trace diff --git a/java_console/models/src/main/java/com/rusefi/rusEFIVersion.java b/java_console/models/src/main/java/com/rusefi/rusEFIVersion.java index f93dab8bbf..c7fbf84e79 100644 --- a/java_console/models/src/main/java/com/rusefi/rusEFIVersion.java +++ b/java_console/models/src/main/java/com/rusefi/rusEFIVersion.java @@ -6,7 +6,7 @@ import java.net.URL; import java.util.concurrent.atomic.AtomicReference; public class rusEFIVersion { - public static final int CONSOLE_VERSION = 20201001; + public static final int CONSOLE_VERSION = 20201004; public static AtomicReference firmwareVersion = new AtomicReference<>("N/A"); public static long classBuildTimeMillis() { diff --git a/java_console/ui/src/main/java/com/rusefi/BenchTestPane.java b/java_console/ui/src/main/java/com/rusefi/BenchTestPane.java index 2abcd31d55..18b7238c8d 100644 --- a/java_console/ui/src/main/java/com/rusefi/BenchTestPane.java +++ b/java_console/ui/src/main/java/com/rusefi/BenchTestPane.java @@ -1,12 +1,8 @@ package com.rusefi; -import com.opensr5.Logger; import com.rusefi.binaryprotocol.BinaryProtocol; import com.rusefi.config.generated.Fields; -import com.rusefi.tracing.Entry; -import com.rusefi.tracing.JsonOutput; import com.rusefi.ui.MessagesView; -import com.rusefi.ui.RpmModel; import com.rusefi.ui.UIContext; import com.rusefi.ui.util.UiUtils; import org.jetbrains.annotations.NotNull; @@ -15,13 +11,8 @@ import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.List; import static com.rusefi.CommandControl.TEST; -import static com.rusefi.binaryprotocol.BinaryProtocolCommands.RESPONSE_OK; -import static com.rusefi.binaryprotocol.IoHelper.checkResponseCode; public class BenchTestPane { private final JPanel content = new JPanel(new GridLayout(2, 5)); @@ -62,25 +53,7 @@ public class BenchTestPane { @Override public void actionPerformed(ActionEvent e) { BinaryProtocol bp = uiContext.getLinkManager().getCurrentStreamState(); - bp.executeCommand(new byte[]{Fields.TS_PERF_TRACE_BEGIN}, "begin trace"); - - try { - Thread.sleep(500); - - byte[] packet = bp.executeCommand(new byte[]{Fields.TS_PERF_TRACE_GET_BUFFER}, "get trace", true); - if (!checkResponseCode(packet, RESPONSE_OK) || ((packet.length - 1) % 8) != 0) - throw new IllegalStateException("Unexpected packet"); - - List data = Entry.parseBuffer(packet); - - int rpm = RpmModel.getInstance().getValue(); - String fileName = Logger.getDate() + "_rpm_" + rpm + "_rusEFI_trace" + ".json"; - - - JsonOutput.writeToStream(data, new FileOutputStream(fileName)); - } catch (IOException | InterruptedException e1) { - throw new IllegalStateException(e1); - } + PerformanceTraceHelper.grabPerformanceTrace(bp); } }); return UiUtils.wrap(button); diff --git a/java_console/ui/src/main/java/com/rusefi/PerformanceTraceHelper.java b/java_console/ui/src/main/java/com/rusefi/PerformanceTraceHelper.java new file mode 100644 index 0000000000..73c9bacd0b --- /dev/null +++ b/java_console/ui/src/main/java/com/rusefi/PerformanceTraceHelper.java @@ -0,0 +1,51 @@ +package com.rusefi; + +import com.opensr5.ConfigurationImage; +import com.opensr5.Logger; +import com.opensr5.ini.IniFileModel; +import com.rusefi.binaryprotocol.BinaryProtocol; +import com.rusefi.config.generated.Fields; +import com.rusefi.tracing.Entry; +import com.rusefi.tracing.JsonOutput; +import com.rusefi.ui.RpmModel; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.List; + +import static com.rusefi.binaryprotocol.BinaryProtocolCommands.RESPONSE_OK; +import static com.rusefi.binaryprotocol.IoHelper.checkResponseCode; +import static com.rusefi.tools.ConsoleTools.startAndConnect; + +public class PerformanceTraceHelper { + public static void grabPerformanceTrace(BinaryProtocol bp) { + bp.executeCommand(new byte[]{Fields.TS_PERF_TRACE_BEGIN}, "begin trace"); + + try { + Thread.sleep(500); + + byte[] packet = bp.executeCommand(new byte[]{Fields.TS_PERF_TRACE_GET_BUFFER}, "get trace", true); + if (!checkResponseCode(packet, RESPONSE_OK) || ((packet.length - 1) % 8) != 0) + throw new IllegalStateException("Unexpected packet"); + + List data = Entry.parseBuffer(packet); + + int rpm = RpmModel.getInstance().getValue(); + String fileName = Logger.getDate() + "_rpm_" + rpm + "_rusEFI_trace" + ".json"; + + + JsonOutput.writeToStream(data, new FileOutputStream(fileName)); + } catch (IOException | InterruptedException e1) { + throw new IllegalStateException(e1); + } + } + + public static void getPerformanceTune() { + startAndConnect(linkManager -> { + BinaryProtocol binaryProtocol = linkManager.getConnector().getBinaryProtocol(); + grabPerformanceTrace(binaryProtocol); + System.exit(0); + return null; + }); + } +} diff --git a/java_console/ui/src/main/java/com/rusefi/tools/ConsoleTools.java b/java_console/ui/src/main/java/com/rusefi/tools/ConsoleTools.java index 9030adb4b9..905a0f4cf5 100644 --- a/java_console/ui/src/main/java/com/rusefi/tools/ConsoleTools.java +++ b/java_console/ui/src/main/java/com/rusefi/tools/ConsoleTools.java @@ -71,6 +71,7 @@ public class ConsoleTools { registerTool("read_tune", args -> readTune(), "Read tune from controller"); registerTool("write_tune", ConsoleTools::writeTune, "Write specified XML tune into controller"); + registerTool("get_performance_trace", args -> PerformanceTraceHelper.getPerformanceTune(), "DEV TOOL: Get performance trace from ECU"); registerTool("version", ConsoleTools::version, "Only print version"); @@ -216,7 +217,7 @@ public class ConsoleTools { }); } - private static void startAndConnect(final Function onConnectionEstablished) { + public static void startAndConnect(final Function onConnectionEstablished) { String autoDetectedPort = PortDetector.autoDetectSerial(null); if (autoDetectedPort == null) {