diff --git a/java_console/shared_io/src/main/java/com/rusefi/rusEFIVersion.java b/java_console/shared_io/src/main/java/com/rusefi/rusEFIVersion.java index d2692e536e..e1ec3e91b0 100644 --- a/java_console/shared_io/src/main/java/com/rusefi/rusEFIVersion.java +++ b/java_console/shared_io/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 = 20211022; + public static final int CONSOLE_VERSION = 20211023; public static AtomicReference firmwareVersion = new AtomicReference<>("N/A"); public static long classBuildTimeMillis() { 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 ad8e231969..ef2e86a697 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 @@ -102,11 +102,17 @@ public class DfuFlasher { 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"); + } 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 manually from 'drivers/silent_st_drivers/DFU_Driver' folder"); + wnd.setErrorState(true); } else { wnd.appendMsg(stdout.length() + " / " + errorResponse.length()); wnd.appendMsg("ERROR: does not look like DFU has worked!"); + wnd.setErrorState(true); } - wnd.appendMsg("Please power cycle device to exit DFU mode"); } private static void timeForDfuSwitch(StatusWindow wnd) { 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 961b378ac1..1fefe8afec 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 @@ -13,6 +13,8 @@ import java.awt.*; * 3/7/2015 */ public class StatusWindow implements StatusConsumer { + private static final Color LIGHT_RED = new Color(255, 102, 102); + private static final Color LIGHT_GREEN = new Color(102, 255 ,102); // todo: extract driver from console bundle? find a separate driver bundle? private final JTextArea logTextArea = new JTextArea(); private final JPanel content = new JPanel(new BorderLayout()); @@ -41,6 +43,14 @@ public class StatusWindow implements StatusConsumer { return content; } + public void setErrorState(boolean isErrorState) { + if (isErrorState) { + logTextArea.setBackground(LIGHT_RED); + } else { + logTextArea.setBackground(LIGHT_GREEN); + } + } + public JFrame getFrame() { return frameHelper.getFrame(); } @@ -55,7 +65,7 @@ public class StatusWindow implements StatusConsumer { @Override public void appendMsg(final String string) { SwingUtilities.invokeLater(() -> { - String s = string.replaceAll(Character.toString((char)219), ""); + String s = string.replaceAll(Character.toString((char) 219), ""); FileLog.MAIN.logLine(s); logTextArea.append(s + "\r\n"); UiUtils.trueLayout(logTextArea);