diff --git a/java_console/ui/src/com/rusefi/maintenance/DfuFlasher.java b/java_console/ui/src/com/rusefi/maintenance/DfuFlasher.java index cd3316ace5..615d8c3d12 100644 --- a/java_console/ui/src/com/rusefi/maintenance/DfuFlasher.java +++ b/java_console/ui/src/com/rusefi/maintenance/DfuFlasher.java @@ -71,9 +71,16 @@ public class DfuFlasher { } catch (InterruptedException e) { throw new IllegalStateException(e); } - ExecHelper.executeCommand(FirmwareFlasher.BINARY_LOCATION, + StringBuffer stdout = new StringBuffer(); + String errorResponse = ExecHelper.executeCommand(FirmwareFlasher.BINARY_LOCATION, FirmwareFlasher.BINARY_LOCATION + File.separator + DFU_COMMAND, - DFU_BINARY, wnd); + DFU_BINARY, wnd, stdout); + if (stdout.toString().contains("Verify successful")) { + wnd.appendMsg("SUCCESS!"); + } else { + wnd.appendMsg(stdout.length() + " / " + errorResponse.length()); + wnd.appendMsg("ERROR: does not look like DFU has worked!"); + } wnd.appendMsg("Please power cycle device to exit DFU mode"); } diff --git a/java_console/ui/src/com/rusefi/maintenance/ExecHelper.java b/java_console/ui/src/com/rusefi/maintenance/ExecHelper.java index 0e76b8063b..9785930ee3 100644 --- a/java_console/ui/src/com/rusefi/maintenance/ExecHelper.java +++ b/java_console/ui/src/com/rusefi/maintenance/ExecHelper.java @@ -43,16 +43,24 @@ public class ExecHelper { } @NotNull - public static StringBuffer executeCommand(String workingDirPath, String command, String binaryRelativeName, StatusConsumer wnd) { + public static String executeCommand(String workingDirPath, String command, String binaryRelativeName, StatusConsumer wnd) { + return executeCommand(workingDirPath, command, binaryRelativeName, wnd, new StringBuffer()); + } + + /** + * @param output out parameter with stdout content + * @return stderr of invoked command + */ + @NotNull + public static String executeCommand(String workingDirPath, String command, String binaryRelativeName, StatusConsumer wnd, StringBuffer output) { StringBuffer error = new StringBuffer(); String binaryFullName = workingDirPath + File.separator + binaryRelativeName; if (!new File(binaryFullName).exists()) { wnd.appendMsg(binaryFullName + " not found :("); - return error; + return error.toString(); } wnd.appendMsg("Executing " + command); - StringBuffer output = new StringBuffer(); try { File workingDir = new File(workingDirPath); Process p = Runtime.getRuntime().exec(command, null, workingDir); @@ -65,7 +73,7 @@ public class ExecHelper { wnd.appendMsg("WaitError: " + e); } wnd.appendMsg("Done!"); - return error; + return error.toString(); } protected static void submitAction(Runnable runnable, String threadName) { diff --git a/java_console/ui/src/com/rusefi/maintenance/FirmwareFlasher.java b/java_console/ui/src/com/rusefi/maintenance/FirmwareFlasher.java index 3d7c70dd64..4131c8989b 100644 --- a/java_console/ui/src/com/rusefi/maintenance/FirmwareFlasher.java +++ b/java_console/ui/src/com/rusefi/maintenance/FirmwareFlasher.java @@ -61,7 +61,7 @@ public class FirmwareFlasher { return OPENOCD_EXE + " -f openocd/" + cfg; } - protected static StringBuffer executeOpenOCDCommand(String command, StatusWindow wnd) { + protected static String executeOpenOCDCommand(String command, StatusWindow wnd) { return ExecHelper.executeCommand(BINARY_LOCATION, BINARY_LOCATION + File.separator + command, OPENOCD_EXE, wnd); @@ -74,12 +74,12 @@ public class FirmwareFlasher { return; } StatusAnimation sa = new StatusAnimation(wnd); - StringBuffer error = executeOpenOCDCommand(getOpenocdCommand() + " -c \"program " + + String error = executeOpenOCDCommand(getOpenocdCommand() + " -c \"program " + fileName + " verify reset exit 0x08000000\"", wnd); - if (error.toString().contains(NO_DRIVER_MESSAGE_TAG)) { + if (error.contains(NO_DRIVER_MESSAGE_TAG)) { wnd.appendMsg(" !!! ERROR: looks like stm32 driver is not installed? The link is above !!!"); - } else if (error.toString().contains(SUCCESS_MESSAGE_TAG) && !error.toString().toLowerCase().contains(FAILED_MESSAGE_TAG)) { + } else if (error.contains(SUCCESS_MESSAGE_TAG) && !error.toLowerCase().contains(FAILED_MESSAGE_TAG)) { wnd.appendMsg("Flashing looks good!"); sa.stop(); wnd.setStatus(DONE);