From 0bb499e70eef415bf4d618bf5acdd95066b9aaf3 Mon Sep 17 00:00:00 2001 From: rusefi Date: Wed, 5 Apr 2017 08:47:06 -0400 Subject: [PATCH 1/9] batter error message --- firmware/controllers/trigger/rpm_calculator.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firmware/controllers/trigger/rpm_calculator.cpp b/firmware/controllers/trigger/rpm_calculator.cpp index c32033d94e..86235638bc 100644 --- a/firmware/controllers/trigger/rpm_calculator.cpp +++ b/firmware/controllers/trigger/rpm_calculator.cpp @@ -181,7 +181,7 @@ void rpmShaftPositionCallback(trigger_event_e ckpSignalType, efitick_t nowNt = getTimeNowNt(); engine->m.beforeRpmCb = GET_TIMESTAMP(); #if EFI_PROD_CODE - efiAssertVoid(getRemainingStack(chThdGetSelfX()) > 256, "lowstck#2z"); + efiAssertVoid(getRemainingStack(chThdGetSelfX()) > 256, "lowstckRCL"); #endif #if EFI_SENSOR_CHART || defined(__DOXYGEN__) From a1fb0bd72f1dece151252e47bc772c35e92db5bf Mon Sep 17 00:00:00 2001 From: rusefi Date: Wed, 5 Apr 2017 17:28:38 -0400 Subject: [PATCH 2/9] better fatal error handling --- .../autotest/src/com/rusefi/AutoTest.java | 23 +++++++++++++++++-- .../src/com/rusefi/io/ConnectionStatus.java | 2 +- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/java_console/autotest/src/com/rusefi/AutoTest.java b/java_console/autotest/src/com/rusefi/AutoTest.java index 91d7fa57f6..83a9e37fcd 100644 --- a/java_console/autotest/src/com/rusefi/AutoTest.java +++ b/java_console/autotest/src/com/rusefi/AutoTest.java @@ -1,14 +1,15 @@ package com.rusefi; +import com.rusefi.core.MessagesCentral; import com.rusefi.core.Sensor; import com.rusefi.core.SensorCentral; +import com.rusefi.io.CommandQueue; +import com.rusefi.io.ConnectionStatus; import com.rusefi.waves.EngineChart; import com.rusefi.waves.EngineReport; -import static com.rusefi.IoUtil.changeRpm; import static com.rusefi.TestingUtils.nextChart; -import static com.rusefi.IoUtil.sendCommand; import static com.rusefi.IoUtil.sleep; import static com.rusefi.TestingUtils.*; import static com.rusefi.waves.EngineReport.isCloseEnough; @@ -24,8 +25,17 @@ import static com.rusefi.waves.EngineReport.isCloseEnough; public class AutoTest { public static final int COMPLEX_COMMAND_RETRY = 10000; static int currentEngineType; + private static String fatalError; static void mainTestBody() { + MessagesCentral.getInstance().addListener(new MessagesCentral.MessageListener() { + @Override + public void onMessage(Class clazz, String message) { + if (message.startsWith(ConnectionStatus.FATAL_MESSAGE_PREFIX)) + fatalError = message; + } + }); + sendCommand("fl 1"); // just in case it was disabled testCustomEngine(); testMazdaMiata2003(); @@ -410,6 +420,15 @@ public class AutoTest { assertWaveNull("hard limit check", chart, EngineChart.INJECTOR_1); } + private static void sendCommand(String command) { + sendCommand(command, CommandQueue.DEFAULT_TIMEOUT, Timeouts.CMD_TIMEOUT); + } + + private static void sendCommand(String command, int retryTimeoutMs, int totalTimeoutSeconds) { + assertNull("Fatal not expected", fatalError); + IoUtil.sendCommand(command, retryTimeoutMs, totalTimeoutSeconds); + } + private static void assertEquals(double expected, double actual) { assertEquals("", expected, actual); } diff --git a/java_console/io/src/com/rusefi/io/ConnectionStatus.java b/java_console/io/src/com/rusefi/io/ConnectionStatus.java index 46b5c610da..6e6c224f60 100644 --- a/java_console/io/src/com/rusefi/io/ConnectionStatus.java +++ b/java_console/io/src/com/rusefi/io/ConnectionStatus.java @@ -18,7 +18,7 @@ import java.util.concurrent.CopyOnWriteArrayList; */ public class ConnectionStatus { // todo: react to any message as connected? how to know if message from controller, not internal message? - private static final String FATAL_MESSAGE_PREFIX = "FATAL"; + public static final String FATAL_MESSAGE_PREFIX = "FATAL"; @NotNull private Value value = Value.NOT_CONNECTED; From d2581fcdba74a80a605352475a0f7c6dc5714247 Mon Sep 17 00:00:00 2001 From: rusefi Date: Wed, 5 Apr 2017 18:08:36 -0400 Subject: [PATCH 3/9] stop VSS pin --- firmware/hw_layer/hardware.cpp | 2 ++ firmware/hw_layer/vehicle_speed.cpp | 9 +++++++++ firmware/hw_layer/vehicle_speed.h | 2 ++ 3 files changed, 13 insertions(+) diff --git a/firmware/hw_layer/hardware.cpp b/firmware/hw_layer/hardware.cpp index 4f020ae5e0..1e5ffbcd22 100644 --- a/firmware/hw_layer/hardware.cpp +++ b/firmware/hw_layer/hardware.cpp @@ -231,6 +231,7 @@ void applyNewHardwareSettings(void) { stopIgnitionPins(); stopCanPins(); stopETBPins(); + stopVSSPins(); if (engineConfiguration->bc.is_enabled_spi_1 != activeConfiguration.bc.is_enabled_spi_1) stopSpi(SPI_DEVICE_1); @@ -288,6 +289,7 @@ void applyNewHardwareSettings(void) { startIgnitionPins(); startCanPins(); startETBPins(); + startVSSPins(); adcConfigListener(engine); } diff --git a/firmware/hw_layer/vehicle_speed.cpp b/firmware/hw_layer/vehicle_speed.cpp index e79dd1cbf0..03fd1f3bec 100644 --- a/firmware/hw_layer/vehicle_speed.cpp +++ b/firmware/hw_layer/vehicle_speed.cpp @@ -66,6 +66,15 @@ bool hasVehicleSpeedSensor() { return boardConfiguration->vehicleSpeedSensorInputPin != GPIO_UNASSIGNED; } +void stopVSSPins(void) { + unmarkPin(activeConfiguration.bc.vehicleSpeedSensorInputPin); + // todo: remove driver from registeredIcus +} + +void startVSSPins(void) { + // todo +} + void initVehicleSpeed(Logging *l) { logger = l; addConsoleAction("speedinfo", speedInfo); diff --git a/firmware/hw_layer/vehicle_speed.h b/firmware/hw_layer/vehicle_speed.h index 2a0a5d37ce..835e7de523 100644 --- a/firmware/hw_layer/vehicle_speed.h +++ b/firmware/hw_layer/vehicle_speed.h @@ -17,5 +17,7 @@ float getVehicleSpeed(void); void initVehicleSpeed(Logging *logger); void setMockVehicleSpeed(float speedKPH); bool hasVehicleSpeedSensor(); +void stopVSSPins(void); +void startVSSPins(void); #endif /* HW_LAYER_VEHICLE_SPEED_H_ */ From fdc3b6779b86a8dc4de9b4f715ac38dabf280ac0 Mon Sep 17 00:00:00 2001 From: rusefi Date: Wed, 5 Apr 2017 18:09:28 -0400 Subject: [PATCH 4/9] refactoring --- java_console/ui/src/com/rusefi/Launcher.java | 5 ++--- java_console/ui/src/com/rusefi/ui/WarningPanel.java | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/java_console/ui/src/com/rusefi/Launcher.java b/java_console/ui/src/com/rusefi/Launcher.java index 5290f574c9..64dd11ab5c 100644 --- a/java_console/ui/src/com/rusefi/Launcher.java +++ b/java_console/ui/src/com/rusefi/Launcher.java @@ -44,12 +44,11 @@ import static com.rusefi.ui.storage.PersistentConfiguration.getConfig; * @see EngineSnifferPanel */ public class Launcher { - public static final int CONSOLE_VERSION = 20170314; + public static final int CONSOLE_VERSION = 20170324; public static final boolean SHOW_STIMULATOR = false; private static final String TAB_INDEX = "main_tab"; protected static final String PORT_KEY = "port"; protected static final String SPEED_KEY = "speed"; - public static final String FATAL_ERROR_PREFIX = "FATAL"; private final String port; // todo: the logic around 'fatalError' could be implemented nicer private String fatalError; @@ -131,7 +130,7 @@ public class Launcher { MessagesCentral.getInstance().addListener(new MessagesCentral.MessageListener() { @Override public void onMessage(Class clazz, String message) { - if (message.startsWith(FATAL_ERROR_PREFIX)) + if (message.startsWith(ConnectionStatus.FATAL_MESSAGE_PREFIX)) fatalError = message; } }); diff --git a/java_console/ui/src/com/rusefi/ui/WarningPanel.java b/java_console/ui/src/com/rusefi/ui/WarningPanel.java index f7b9c7ea2c..b4fa8bc637 100644 --- a/java_console/ui/src/com/rusefi/ui/WarningPanel.java +++ b/java_console/ui/src/com/rusefi/ui/WarningPanel.java @@ -1,8 +1,8 @@ package com.rusefi.ui; import com.rusefi.FileLog; -import com.rusefi.Launcher; import com.rusefi.core.MessagesCentral; +import com.rusefi.io.ConnectionStatus; import com.rusefi.ui.util.UiUtils; import javax.swing.*; @@ -50,7 +50,7 @@ public class WarningPanel { if (haveFatalError) return; - if (message.startsWith(Launcher.FATAL_ERROR_PREFIX)) { + if (message.startsWith(ConnectionStatus.FATAL_MESSAGE_PREFIX)) { haveFatalError = true; fatalBlinking.start(); label.setText(message); From a7cd3972a3b6c7071cfe6eaaef485303a32f316e Mon Sep 17 00:00:00 2001 From: rusefi Date: Wed, 5 Apr 2017 18:10:26 -0400 Subject: [PATCH 5/9] #382 --- firmware/console/status_loop.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp index 0d7f34416e..e88984f838 100644 --- a/firmware/console/status_loop.cpp +++ b/firmware/console/status_loop.cpp @@ -256,7 +256,7 @@ static void printSensors(Logging *log, bool fileFormat) { reportSensorF(log, fileFormat, "ENGINE_LOAD", "x", engineLoad, 2); - reportSensorF(log, fileFormat, "dwell", "ms", ENGINE(engineState.sparkDwell), 2); + reportSensorF(log, fileFormat, GAUGE_COIL_DWELL_TIME, "ms", ENGINE(engineState.sparkDwell), 2); if (fileFormat) { reportSensorF(log, fileFormat, "timing", "deg", engine->engineState.timingAdvance, 2); From 30d71308039571848479388f6c6b53809bef8e69 Mon Sep 17 00:00:00 2001 From: rusefi Date: Wed, 5 Apr 2017 18:10:48 -0400 Subject: [PATCH 6/9] API progress --- firmware/util/listener_array.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/firmware/util/listener_array.h b/firmware/util/listener_array.h index 72aeb23ca3..0cf0d69d30 100644 --- a/firmware/util/listener_array.h +++ b/firmware/util/listener_array.h @@ -24,6 +24,7 @@ template class IntListenerArray { public: IntListenerArray(); + void clear(); void registerCallback(VoidInt handler, void *arg); void registerCallback(Void listener); void invokeJustArgCallbacks(); @@ -52,6 +53,11 @@ public: template IntListenerArray::IntListenerArray() { + clear(); +} + +template +void IntListenerArray::clear() { currentListenersCount = 0; memset(&args, 0, sizeof(args)); memset(&callbacks, 0, sizeof(callbacks)); From 3994fa77a0ffa59c1741ebd74fa92e5b5182acb9 Mon Sep 17 00:00:00 2001 From: rusefi Date: Wed, 5 Apr 2017 19:48:22 -0400 Subject: [PATCH 7/9] improving continues integration scripts --- misc/build_current_bundle.bat | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/misc/build_current_bundle.bat b/misc/build_current_bundle.bat index fea1dce94e..8a8ed88ee5 100644 --- a/misc/build_current_bundle.bat +++ b/misc/build_current_bundle.bat @@ -19,7 +19,12 @@ cd .. cd firmware echo %date% %time% -echo "CD to ${PWD}" + + +echo Erasing chip +call flash_erase + + echo Building firmware rm -fR .dep rm -fR build From fedb12f2f350e5699ff531410f41ec16038758bf Mon Sep 17 00:00:00 2001 From: rusefi Date: Wed, 5 Apr 2017 19:48:40 -0400 Subject: [PATCH 8/9] progress towards pin restart --- firmware/hw_layer/digital_input_hw.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/firmware/hw_layer/digital_input_hw.cpp b/firmware/hw_layer/digital_input_hw.cpp index 428f90b226..20ed738b2b 100644 --- a/firmware/hw_layer/digital_input_hw.cpp +++ b/firmware/hw_layer/digital_input_hw.cpp @@ -180,6 +180,8 @@ digital_input_s * initWaveAnalyzerDriver(const char *msg, brain_pin_e brainPin) ICUDriver *driver = getInputCaptureDriver(msg, brainPin); digital_input_s *hw = registeredIcus.add(); + hw->widthListeners.clear(); + hw->periodListeners.clear(); hw->brainPin = brainPin; hw->driver = driver; turnOnCapturePin(msg, brainPin); From 4da17d67b63b6c7ec8579419dfb57a809e1798c2 Mon Sep 17 00:00:00 2001 From: rusefi Date: Wed, 5 Apr 2017 20:52:16 -0400 Subject: [PATCH 9/9] fixing flash erase #374 --- firmware/flash_erase.bat | 2 +- java_console/ui/src/com/rusefi/maintenance/EraseChip.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/firmware/flash_erase.bat b/firmware/flash_erase.bat index 2e3872e001..aaaf09ceb3 100644 --- a/firmware/flash_erase.bat +++ b/firmware/flash_erase.bat @@ -14,6 +14,6 @@ if not exist openocd/openocd.exe echo openocd/openocd.exe NOT FOUND if not exist openocd/openocd.exe exit -1 -openocd\openocd.exe -f openocd/stm32f429disc1.cfg -c init -c targets -c "halt" -c "flash erase_address 0x08000000 0x080000" -c shutdown +openocd\openocd.exe -f openocd/stm32f429disc1.cfg -c init -c targets -c "halt" -c "flash erase_address 0x08000000 0x0100000" -c shutdown rem openocd-0.8.0.exe -f interface/stlink-v2.cfg -f board/stm32f4discovery.cfg -c init -c targets -c "halt" -c "flash erase_address 0x08000000 0x080000" -c shutdown \ No newline at end of file diff --git a/java_console/ui/src/com/rusefi/maintenance/EraseChip.java b/java_console/ui/src/com/rusefi/maintenance/EraseChip.java index 7870274999..51edcb97c0 100644 --- a/java_console/ui/src/com/rusefi/maintenance/EraseChip.java +++ b/java_console/ui/src/com/rusefi/maintenance/EraseChip.java @@ -9,8 +9,9 @@ import java.awt.event.ActionEvent; public class EraseChip extends ProcessStatusWindow { private final JButton button = new JButton("Erase Chip"); + private static final String FLASH_SIZE = "0x0100000"; private static final String OPEN_OCD_COMMAND = FirmwareFlasher.OPENOCD_CMD + - " -c init -c targets -c \"halt\" -c \"flash erase_address 0x08000000 0x080000\" -c shutdown"; + " -c init -c targets -c \"halt\" -c \"flash erase_address 0x08000000 " + FLASH_SIZE + "\" -c shutdown"; public EraseChip() { button.addActionListener(new AbstractAction() {