blind attempt at openblt serial firmware update

This commit is contained in:
Matthew Kennedy 2023-10-24 16:08:04 -07:00 committed by rusefillc
parent 7a0f7b76af
commit 3334e1f9c4
1 changed files with 32 additions and 3 deletions

View File

@ -30,6 +30,7 @@ public class ProgramSelector {
private static final String MANUAL_DFU = "Manual DFU Update";
private static final String DFU_SWITCH = "Switch to DFU Mode";
private static final String OPENBLT_SWITCH = "Switch to OpenBLT Mode";
private static final String OPENBLT_MANUAL = "Manual OpenBLT Update";
private static final String DFU_ERASE = "Full Chip Erase";
private static final String ST_LINK = "ST-LINK Update";
private static final String OPENBLT_CAN = "OpenBLT via CAN";
@ -51,7 +52,7 @@ public class ProgramSelector {
controls.add(mode);
String persistedMode = getConfig().getRoot().getProperty(getClass().getSimpleName());
if (Arrays.asList(AUTO_DFU, MANUAL_DFU, OPENBLT_CAN, OPENBLT_SWITCH, DFU_ERASE, DFU_SWITCH).contains(persistedMode))
if (Arrays.asList(AUTO_DFU, MANUAL_DFU, OPENBLT_CAN, OPENBLT_SWITCH, OPENBLT_MANUAL, DFU_ERASE, DFU_SWITCH).contains(persistedMode))
mode.setSelectedItem(persistedMode);
JButton updateFirmware = createUpdateFirmwareButton();
@ -86,6 +87,9 @@ public class ProgramSelector {
case OPENBLT_CAN:
flashOpenBltCan();
break;
case OPENBLT_MANUAL:
flashOpenbltSerial(selectedPort);
break;
case DFU_ERASE:
DfuFlasher.runDfuEraseAsync(createStatusWindow("DFU erase"));
break;
@ -123,11 +127,36 @@ public class ProgramSelector {
OPENBLT_BINARY_LOCATION + "/" + BOOT_COMMANDER_EXE +
" -s=xcp -t=xcp_can -d=peak_pcanusb -t1=1000 -t3=2000 -t4=10000 -t5=1000 -t7=2000 ../../rusefi_update.srec",
BOOT_COMMANDER_EXE, callbacks, new StringBuffer());
callbacks.done();
// it's a lengthy operation let's signal end
Toolkit.getDefaultToolkit().beep();
}, "OpenBLT via CAN");
}
private void flashOpenbltSerial(String port) {
UpdateOperationCallbacks callbacks = createStatusWindow("OpenBLT via CAN");
// We can't auto detect OpenBLT port yet
if (port == null || PortDetector.AUTO.equals(port)) {
callbacks.log("Invalid serial port for OpenBLT: " + port);
callbacks.error();
return;
}
ExecHelper.submitAction(() -> {
ExecHelper.executeCommand(OPENBLT_BINARY_LOCATION,
OPENBLT_BINARY_LOCATION + "/" + BOOT_COMMANDER_EXE +
" -s=xcp -t=xcp_rs232 -d" + port + " ../../rusefi_update.srec",
BOOT_COMMANDER_EXE, callbacks, new StringBuffer());
callbacks.done();
// it's a lengthy operation let's signal end
Toolkit.getDefaultToolkit().beep();
}, "OpenBLT via serial");
}
@NotNull
public static JComponent createHelpButton() {
return new URLLabel("HOWTO Update Firmware", HELP);
@ -162,11 +191,11 @@ public class ProgramSelector {
}
// If any serial port is detected, offer the option to switch to DFU
if (hasSerialPorts) {
if (true) {
// mode.addItem(AUTO_OPENBLT);
mode.addItem(DFU_SWITCH);
mode.addItem(OPENBLT_SWITCH);
// mode.addItem(MANUAL_OPENBLT);
mode.addItem(OPENBLT_MANUAL);
}
trueLayout(mode);