mirror of https://github.com/rusefi/rusefi.git
only: actually both DFU and St-link use same .bin file?
This commit is contained in:
parent
8896f05520
commit
9394443397
|
@ -13,12 +13,13 @@ import com.rusefi.io.serial.BufferedSerialIoStream;
|
|||
import com.rusefi.io.tcp.TcpConnector;
|
||||
import com.rusefi.maintenance.DfuFlasher;
|
||||
import com.rusefi.io.UpdateOperationCallbacks;
|
||||
import com.rusefi.maintenance.MaintenanceUtil;
|
||||
import com.rusefi.maintenance.StLinkFlasher;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
|
@ -266,8 +267,8 @@ public enum SerialPortScanner {
|
|||
ports.add(new PortResult(tcpPort, SerialPortType.Ecu));
|
||||
}
|
||||
dfuConnected = DfuFlasher.detectSTM32BootloaderDriverState(UpdateOperationCallbacks.DUMMY);
|
||||
stLinkConnected = DfuFlasher.detectStLink(UpdateOperationCallbacks.DUMMY);
|
||||
PCANConnected = DfuFlasher.detectPcan(UpdateOperationCallbacks.DUMMY);
|
||||
stLinkConnected = StLinkFlasher.detectStLink(UpdateOperationCallbacks.DUMMY);
|
||||
PCANConnected = MaintenanceUtil.detectPcan(UpdateOperationCallbacks.DUMMY);
|
||||
} else {
|
||||
dfuConnected = false;
|
||||
stLinkConnected = false;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package com.rusefi.maintenance;
|
||||
|
||||
import com.opensr5.ini.IniFileModel;
|
||||
import com.rusefi.FileLog;
|
||||
import com.rusefi.Launcher;
|
||||
import com.rusefi.Timeouts;
|
||||
|
@ -33,8 +32,6 @@ public class DfuFlasher {
|
|||
private static final String DFU_BINARY_LOCATION = Launcher.TOOLS_PATH + File.separator + "STM32_Programmer_CLI/bin";
|
||||
private static final String DFU_BINARY = "STM32_Programmer_CLI.exe";
|
||||
private static final String WMIC_DFU_QUERY_COMMAND = "wmic path win32_pnpentity where \"Caption like '%STM32%' and Caption like '%Bootloader%'\" get Caption,ConfigManagerErrorCode /format:list";
|
||||
private static final String WMIC_STLINK_QUERY_COMMAND = "wmic path win32_pnpentity where \"Caption like '%STLink%'\" get Caption,ConfigManagerErrorCode /format:list";
|
||||
private static final String WMIC_PCAN_QUERY_COMMAND = "wmic path win32_pnpentity where \"Caption like '%PCAN-USB%'\" get Caption,ConfigManagerErrorCode /format:list";
|
||||
|
||||
public static void doAutoDfu(JComponent parent, String port, UpdateOperationCallbacks callbacks) {
|
||||
if (port == null) {
|
||||
|
@ -190,26 +187,7 @@ public class DfuFlasher {
|
|||
}
|
||||
|
||||
public static boolean detectSTM32BootloaderDriverState(UpdateOperationCallbacks callbacks) {
|
||||
return detectDevice(callbacks, WMIC_DFU_QUERY_COMMAND, "ConfigManagerErrorCode=0");
|
||||
}
|
||||
|
||||
public static boolean detectStLink(UpdateOperationCallbacks wnd) {
|
||||
return detectDevice(wnd, WMIC_STLINK_QUERY_COMMAND, "STLink");
|
||||
}
|
||||
public static boolean detectPcan(UpdateOperationCallbacks wnd) {
|
||||
return detectDevice(wnd, WMIC_PCAN_QUERY_COMMAND, "PCAN");
|
||||
}
|
||||
|
||||
private static boolean detectDevice(UpdateOperationCallbacks callbacks, String queryCommand, String pattern) {
|
||||
// long now = System.currentTimeMillis();
|
||||
StringBuffer output = new StringBuffer();
|
||||
StringBuffer error = new StringBuffer();
|
||||
ExecHelper.executeCommand(queryCommand, callbacks, output, error, null);
|
||||
callbacks.log(output.toString());
|
||||
callbacks.log(error.toString());
|
||||
// long cost = System.currentTimeMillis() - now;
|
||||
// System.out.println("DFU lookup cost " + cost + "ms");
|
||||
return output.toString().contains(pattern);
|
||||
return MaintenanceUtil.detectDevice(callbacks, WMIC_DFU_QUERY_COMMAND, "ConfigManagerErrorCode=0");
|
||||
}
|
||||
|
||||
private static void appendWindowsVersion(UpdateOperationCallbacks callbacks) {
|
||||
|
@ -238,11 +216,7 @@ public class DfuFlasher {
|
|||
}
|
||||
|
||||
private static String getDfuWriteCommand() throws FileNotFoundException {
|
||||
String prefix = "rusefi";
|
||||
String suffix = ".bin";
|
||||
String fileName = IniFileModel.findFile(Launcher.INPUT_FILES_PATH, prefix, suffix);
|
||||
if (fileName == null)
|
||||
throw new FileNotFoundException("File not found " + prefix + "*" + suffix);
|
||||
String fileName = MaintenanceUtil.FIRMWARE_BIN_FILE;
|
||||
// we need quotes in case if absolute path contains spaces
|
||||
String quotedAbsolutePath = quote(new File(fileName).getAbsolutePath());
|
||||
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
package com.rusefi.maintenance;
|
||||
|
||||
import com.rusefi.io.UpdateOperationCallbacks;
|
||||
|
||||
import static com.rusefi.Launcher.INPUT_FILES_PATH;
|
||||
|
||||
public class MaintenanceUtil {
|
||||
/**
|
||||
* Same .bin used by primary DFU and a bit unneeded ST-LINK options
|
||||
*/
|
||||
public static final String FIRMWARE_BIN_FILE = INPUT_FILES_PATH + "/" + "rusefi.bin";
|
||||
|
||||
private static final String WMIC_PCAN_QUERY_COMMAND = "wmic path win32_pnpentity where \"Caption like '%PCAN-USB%'\" get Caption,ConfigManagerErrorCode /format:list";
|
||||
|
||||
static boolean detectDevice(UpdateOperationCallbacks callbacks, String queryCommand, String pattern) {
|
||||
// long now = System.currentTimeMillis();
|
||||
StringBuffer output = new StringBuffer();
|
||||
StringBuffer error = new StringBuffer();
|
||||
ExecHelper.executeCommand(queryCommand, callbacks, output, error, null);
|
||||
callbacks.log(output.toString());
|
||||
callbacks.log(error.toString());
|
||||
// long cost = System.currentTimeMillis() - now;
|
||||
// System.out.println("DFU lookup cost " + cost + "ms");
|
||||
return output.toString().contains(pattern);
|
||||
}
|
||||
|
||||
public static boolean detectPcan(UpdateOperationCallbacks wnd) {
|
||||
return detectDevice(wnd, WMIC_PCAN_QUERY_COMMAND, "PCAN");
|
||||
}
|
||||
}
|
|
@ -81,7 +81,7 @@ public class ProgramSelector {
|
|||
case ST_LINK:
|
||||
job = updateOperationCallbacks -> {
|
||||
// todo: add ST-LINK no-assert mode? or not?
|
||||
StLinkFlasher.doUpdateFirmware(StLinkFlasher.IMAGE_FILE, updateFirmware);
|
||||
StLinkFlasher.doUpdateFirmware(MaintenanceUtil.FIRMWARE_BIN_FILE, updateFirmware);
|
||||
};
|
||||
break;
|
||||
case DFU_SWITCH:
|
||||
|
|
|
@ -10,7 +10,6 @@ import javax.swing.*;
|
|||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
|
||||
import static com.rusefi.Launcher.INPUT_FILES_PATH;
|
||||
import static com.rusefi.core.preferences.storage.PersistentConfiguration.getConfig;
|
||||
|
||||
/**
|
||||
|
@ -20,10 +19,6 @@ import static com.rusefi.core.preferences.storage.PersistentConfiguration.getCon
|
|||
* 2/4/15
|
||||
*/
|
||||
public class StLinkFlasher {
|
||||
/**
|
||||
* this file is used for ST-LINK flashing option, do we still need it at all?
|
||||
*/
|
||||
public static final String IMAGE_FILE = INPUT_FILES_PATH + "/" + "rusefi.bin";
|
||||
/**
|
||||
* SWD ST-LINK/V2 mode
|
||||
*/
|
||||
|
@ -34,6 +29,7 @@ public class StLinkFlasher {
|
|||
private static final String FAILED_MESSAGE_TAG = "failed";
|
||||
public static final String TITLE = "rusEFI ST-LINK Firmware Flasher";
|
||||
public static final String DONE = "DONE!";
|
||||
private static final String WMIC_STLINK_QUERY_COMMAND = "wmic path win32_pnpentity where \"Caption like '%STLink%'\" get Caption,ConfigManagerErrorCode /format:list";
|
||||
|
||||
private final JButton button;
|
||||
|
||||
|
@ -95,6 +91,10 @@ public class StLinkFlasher {
|
|||
}
|
||||
}
|
||||
|
||||
public static boolean detectStLink(UpdateOperationCallbacks wnd) {
|
||||
return MaintenanceUtil.detectDevice(wnd, WMIC_STLINK_QUERY_COMMAND, "STLink");
|
||||
}
|
||||
|
||||
public JButton getButton() {
|
||||
return button;
|
||||
}
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
package com.rusefi.maintenance;
|
||||
|
||||
import com.rusefi.io.UpdateOperationCallbacks;
|
||||
import com.rusefi.ui.StatusConsumer;
|
||||
|
||||
import static com.rusefi.maintenance.DfuFlasher.detectPcan;
|
||||
import static com.rusefi.maintenance.DfuFlasher.detectStLink;
|
||||
import static com.rusefi.maintenance.MaintenanceUtil.detectPcan;
|
||||
import static com.rusefi.maintenance.StLinkFlasher.detectStLink;
|
||||
|
||||
public class DfuFlasherSandbox {
|
||||
public static void main(String[] args) {
|
||||
|
|
Loading…
Reference in New Issue