From 9d7792f453b696efb21f68933644afe4a758e9c7 Mon Sep 17 00:00:00 2001 From: rusefillc Date: Tue, 23 Nov 2021 16:48:11 -0500 Subject: [PATCH] rusEFI console to has "Erase via DFU" button #2250 --- .../src/main/java/com/rusefi/app/rusEFI.java | 3 +- .../java/com/rusefi/ui/StatusConsumer.java | 3 +- .../main/java/com/rusefi/UploadChanges.java | 6 ++-- .../com/rusefi/maintenance/DfuFlasher.java | 30 +++++++++---------- .../com/rusefi/maintenance/DriverInstall.java | 2 +- .../com/rusefi/maintenance/ExecHelper.java | 14 ++++----- .../rusefi/maintenance/FirmwareFlasher.java | 8 ++--- .../main/java/com/rusefi/ui/StatusWindow.java | 7 +---- 8 files changed, 35 insertions(+), 38 deletions(-) diff --git a/android/app/src/main/java/com/rusefi/app/rusEFI.java b/android/app/src/main/java/com/rusefi/app/rusEFI.java index 1a6a11f009..db8b7ad635 100644 --- a/android/app/src/main/java/com/rusefi/app/rusEFI.java +++ b/android/app/src/main/java/com/rusefi/app/rusEFI.java @@ -57,6 +57,7 @@ import com.rusefi.io.LinkManager; import com.rusefi.io.serial.StreamConnector; import com.rusefi.proxy.NetworkConnector; import com.rusefi.proxy.NetworkConnectorContext; +import com.rusefi.ui.StatusConsumer; import java.util.Date; @@ -212,7 +213,7 @@ public class rusEFI extends Activity { } mResultView.append("Switching to DFU\n"); - DfuHelper.sendDfuRebootCommand(serial, new StringBuilder()); + DfuHelper.sendDfuRebootCommand(serial, StatusConsumer.VOID); } private void dfuUpdate(UsbDevice dfuDevice) { diff --git a/java_console/io/src/main/java/com/rusefi/ui/StatusConsumer.java b/java_console/io/src/main/java/com/rusefi/ui/StatusConsumer.java index 45154a6827..bcdfef7a7c 100644 --- a/java_console/io/src/main/java/com/rusefi/ui/StatusConsumer.java +++ b/java_console/io/src/main/java/com/rusefi/ui/StatusConsumer.java @@ -1,7 +1,8 @@ package com.rusefi.ui; public interface StatusConsumer { - void appendMsg(String s); + StatusConsumer VOID = s -> { + }; void append(String s); } diff --git a/java_console/ui/src/main/java/com/rusefi/UploadChanges.java b/java_console/ui/src/main/java/com/rusefi/UploadChanges.java index ea1f576e90..ccb6aa93a1 100644 --- a/java_console/ui/src/main/java/com/rusefi/UploadChanges.java +++ b/java_console/ui/src/main/java/com/rusefi/UploadChanges.java @@ -104,7 +104,7 @@ public class UploadChanges { @Override public void run() { // System.out.println(msg); -// wnd.appendMsg(msg); +// wnd.append(msg); } }); } @@ -115,7 +115,7 @@ public class UploadChanges { @Override public void run() { System.out.println(msg); - wnd.appendMsg(msg); + wnd.append(msg); } }); } @@ -126,7 +126,7 @@ public class UploadChanges { @Override public void run() { System.out.println(msg); - wnd.appendMsg(msg); + wnd.append(msg); } }); } diff --git a/java_console/ui/src/main/java/com/rusefi/maintenance/DfuFlasher.java b/java_console/ui/src/main/java/com/rusefi/maintenance/DfuFlasher.java index dedabb78e1..b96064541c 100644 --- a/java_console/ui/src/main/java/com/rusefi/maintenance/DfuFlasher.java +++ b/java_console/ui/src/main/java/com/rusefi/maintenance/DfuFlasher.java @@ -48,8 +48,8 @@ public class DfuFlasher { if (isSignatureValidated == null) return; if (isSignatureValidated.get()) { if (!ProgramSelector.IS_WIN) { - wnd.appendMsg("Switched to DFU mode!"); - wnd.appendMsg("rusEFI console can only program on Windows"); + wnd.append("Switched to DFU mode!"); + wnd.append("rusEFI console can only program on Windows"); return; } submitAction(() -> { @@ -57,7 +57,7 @@ public class DfuFlasher { executeDFU(wnd); }); } else { - wnd.appendMsg("Please use manual DFU to change bundle type."); + wnd.append("Please use manual DFU to change bundle type."); } } @@ -131,17 +131,17 @@ public class DfuFlasher { DFU_BINARY, wnd, stdout); if (stdout.toString().contains("Download verified successfully")) { // looks like sometimes we are not catching the last line of the response? 'Upgrade' happens before 'Verify' - wnd.appendMsg("SUCCESS!"); - wnd.appendMsg("Please power cycle device to exit DFU mode"); + wnd.append("SUCCESS!"); + wnd.append("Please power cycle device to exit DFU mode"); } else if (stdout.toString().contains("Target device not found")) { - wnd.appendMsg("ERROR: Device not connected or STM32 Bootloader driver not installed?"); - wnd.appendMsg("ERROR: Please try installing drivers using 'Install Drivers' button on rusEFI splash screen"); - wnd.appendMsg("ERROR: Alternatively please install drivers using Device Manager pointing at 'drivers/silent_st_drivers/DFU_Driver' folder"); + wnd.append("ERROR: Device not connected or STM32 Bootloader driver not installed?"); + wnd.append("ERROR: Please try installing drivers using 'Install Drivers' button on rusEFI splash screen"); + wnd.append("ERROR: Alternatively please install drivers using Device Manager pointing at 'drivers/silent_st_drivers/DFU_Driver' folder"); appendDeviceReport(wnd); wnd.setErrorState(true); } else { - wnd.appendMsg(stdout.length() + " / " + errorResponse.length()); - wnd.appendMsg("ERROR: does not look like DFU has worked!"); + wnd.append(stdout.length() + " / " + errorResponse.length()); + wnd.append("ERROR: does not look like DFU has worked!"); appendDeviceReport(wnd); wnd.setErrorState(true); } @@ -150,16 +150,16 @@ public class DfuFlasher { private static void appendDeviceReport(StatusWindow wnd) { for (String line : getDevicesReport()) { if (line.contains("STM Device in DFU Mode")) { - wnd.appendMsg(" ******************************************************************"); - wnd.appendMsg(" ************* YOU NEED TO REMOVE LEGACY DFU DRIVER ***************"); - wnd.appendMsg(" ******************************************************************"); + wnd.append(" ******************************************************************"); + wnd.append(" ************* YOU NEED TO REMOVE LEGACY DFU DRIVER ***************"); + wnd.append(" ******************************************************************"); } - wnd.appendMsg("Devices: " + line); + wnd.append("Devices: " + line); } } private static void timeForDfuSwitch(StatusWindow wnd) { - wnd.appendMsg("Giving time for USB enumeration..."); + wnd.append("Giving time for USB enumeration..."); try { // two seconds not enough on my Windows 10 Thread.sleep(3 * Timeouts.SECOND); diff --git a/java_console/ui/src/main/java/com/rusefi/maintenance/DriverInstall.java b/java_console/ui/src/main/java/com/rusefi/maintenance/DriverInstall.java index b409ab91db..287026bfce 100644 --- a/java_console/ui/src/main/java/com/rusefi/maintenance/DriverInstall.java +++ b/java_console/ui/src/main/java/com/rusefi/maintenance/DriverInstall.java @@ -48,7 +48,7 @@ public class DriverInstall { FileLog.MAIN.logLine("IsWindows=" + FileLog.isWindows()); if (!new File(FOLDER).exists()) { String message = FOLDER + " not found"; - wnd.appendMsg(message); + wnd.append(message); FileLog.MAIN.logLine(message); return; } diff --git a/java_console/ui/src/main/java/com/rusefi/maintenance/ExecHelper.java b/java_console/ui/src/main/java/com/rusefi/maintenance/ExecHelper.java index 4f06023e8d..c26a450a7c 100644 --- a/java_console/ui/src/main/java/com/rusefi/maintenance/ExecHelper.java +++ b/java_console/ui/src/main/java/com/rusefi/maintenance/ExecHelper.java @@ -39,12 +39,12 @@ public class ExecHelper { String line = bis.readLine(); if (line == null) break; - wnd.appendMsg(line); + wnd.append(line); buffer.append(line); wasRunningTime = System.currentTimeMillis(); } } catch (IOException e) { - wnd.appendMsg("Stream " + e); + wnd.append("Stream " + e); } }); t.setDaemon(true); @@ -65,11 +65,11 @@ public class ExecHelper { StringBuffer error = new StringBuffer(); String binaryFullName = workingDirPath + File.separator + binaryRelativeName; if (!new File(binaryFullName).exists()) { - wnd.appendMsg(binaryFullName + " not found :("); + wnd.append(binaryFullName + " not found :("); return error.toString(); } - wnd.appendMsg("Executing " + command); + wnd.append("Executing " + command); try { File workingDir = new File(workingDirPath); Process p = Runtime.getRuntime().exec(command, null, workingDir); @@ -77,11 +77,11 @@ public class ExecHelper { startStreamThread(p, p.getErrorStream(), error, wnd); p.waitFor(3, TimeUnit.MINUTES); } catch (IOException e) { - wnd.appendMsg("IOError: " + e); + wnd.append("IOError: " + e); } catch (InterruptedException e) { - wnd.appendMsg("WaitError: " + e); + wnd.append("WaitError: " + e); } - wnd.appendMsg("Done!"); + wnd.append("Done!"); return error.toString(); } diff --git a/java_console/ui/src/main/java/com/rusefi/maintenance/FirmwareFlasher.java b/java_console/ui/src/main/java/com/rusefi/maintenance/FirmwareFlasher.java index ec1c24e112..c1f6b6fcea 100644 --- a/java_console/ui/src/main/java/com/rusefi/maintenance/FirmwareFlasher.java +++ b/java_console/ui/src/main/java/com/rusefi/maintenance/FirmwareFlasher.java @@ -65,7 +65,7 @@ public class FirmwareFlasher { private static void doFlashFirmware(StatusWindow wnd, String fileName) { if (!new File(fileName).exists()) { - wnd.appendMsg(fileName + " not found, cannot proceed !!!"); + wnd.append(fileName + " not found, cannot proceed !!!"); wnd.setStatus("ERROR"); return; } @@ -74,13 +74,13 @@ public class FirmwareFlasher { fileName + " verify reset exit 0x08000000\"", wnd); if (error.contains(NO_DRIVER_MESSAGE_TAG)) { - wnd.appendMsg(" !!! ERROR: looks like stm32 driver is not installed? The link is above !!!"); + wnd.append(" !!! ERROR: looks like stm32 driver is not installed? The link is above !!!"); } else if (error.contains(SUCCESS_MESSAGE_TAG) && !error.toLowerCase().contains(FAILED_MESSAGE_TAG)) { - wnd.appendMsg("Flashing looks good!"); + wnd.append("Flashing looks good!"); sa.stop(); wnd.setStatus(DONE); } else { - wnd.appendMsg("!!! FIRMWARE FLASH: DOES NOT LOOK RIGHT !!!"); + wnd.append("!!! FIRMWARE FLASH: DOES NOT LOOK RIGHT !!!"); } } diff --git a/java_console/ui/src/main/java/com/rusefi/ui/StatusWindow.java b/java_console/ui/src/main/java/com/rusefi/ui/StatusWindow.java index a2eeee02b2..7412ec001b 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/StatusWindow.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/StatusWindow.java @@ -63,7 +63,7 @@ public class StatusWindow implements StatusConsumer { } @Override - public void appendMsg(final String string) { + public void append(final String string) { SwingUtilities.invokeLater(() -> { String s = string.replaceAll(Character.toString((char) 219), ""); FileLog.MAIN.logLine(s); @@ -72,11 +72,6 @@ public class StatusWindow implements StatusConsumer { }); } - @Override - public void append(String s) { - appendMsg(s); - } - public void setStatus(String status) { bottomStatusLabel.setText(status); }