From 6bde5d19668fdc5d33888c43b44b510f04a90d9e Mon Sep 17 00:00:00 2001 From: rusEfi Date: Sat, 27 Sep 2014 18:02:54 -0500 Subject: [PATCH] auto-sync --- firmware/config/engines/dodge_neon.cpp | 2 +- firmware/controllers/algo/engine.cpp | 36 +++++++++++++++---- firmware/controllers/algo/engine.h | 2 +- firmware/controllers/algo/rusefi_enums.h | 8 +++-- firmware/controllers/system/efiGpio.cpp | 2 ++ .../controllers/trigger/trigger_decoder.cpp | 2 +- firmware/util/efilib.cpp | 2 +- .../test_event_registry.cpp | 2 -- 8 files changed, 41 insertions(+), 15 deletions(-) diff --git a/firmware/config/engines/dodge_neon.cpp b/firmware/config/engines/dodge_neon.cpp index f3893caa76..2efd0368fd 100644 --- a/firmware/config/engines/dodge_neon.cpp +++ b/firmware/config/engines/dodge_neon.cpp @@ -21,7 +21,7 @@ void setDodgeNeonEngineConfiguration(engine_configuration_s *engineConfiguration, board_configuration_s *boardConfiguration) { - engineConfiguration->triggerConfig.triggerType = TT_DODGE_NEON; + engineConfiguration->triggerConfig.triggerType = TT_DODGE_NEON_1995; engineConfiguration->algorithm = LM_TPS; diff --git a/firmware/controllers/algo/engine.cpp b/firmware/controllers/algo/engine.cpp index 13ec06ff85..b512e321a9 100644 --- a/firmware/controllers/algo/engine.cpp +++ b/firmware/controllers/algo/engine.cpp @@ -12,6 +12,7 @@ #include "main.h" #include "engine.h" #include "engine_state.h" +#include "efiGpio.h" #if EFI_PROD_CODE || EFI_SIMULATOR static Logging logger; @@ -35,8 +36,34 @@ void Engine::init() { initLogging(&logger, "engine"); #endif } + +static bool stopPin(io_pin_e pin) { + if (getOutputPinValue(pin)) { + setOutputPinValue(pin, 0); +#if EFI_PROD_CODE || EFI_SIMULATOR + scheduleMsg(&logger, "turning off %s", getPinName(pin)); +#endif + return true; + } + return false; +} + +bool Engine::stopPins() { + bool result = false; + for (int i = 0; i < engineConfiguration->cylindersCount; i++) { + io_pin_e pin = (io_pin_e) ((int) INJECTOR_1_OUTPUT + i); + result |= stopPin(pin); + pin = (io_pin_e) ((int) SPARKOUT_1_OUTPUT + i); + result |= stopPin(pin); + } + return result; +} + void Engine::watchdog() { if (!isSpinning) { + if (stopPins()) { + firmwareError("Some pins were turned off by 2nd pass watchdog"); + } return; } uint64_t nowUs = getTimeNowUs(); @@ -47,15 +74,10 @@ void Engine::watchdog() { if (nowUs - lastTriggerEventTimeUs < 250000) { return; } - isSpinning = true; + isSpinning = false; #if EFI_PROD_CODE || EFI_SIMULATOR scheduleMsg(&logger, "engine has STOPPED"); #endif - for (int i = 0; i < engineConfiguration->cylindersCount; i++) { -// io_pin_e pin = (io_pin_e) ((int) INJECTOR_1_OUTPUT + i); - - //pin = (io_pin_e) ((int) SPARKOUT_1_OUTPUT + i); - } - + stopPins(); } diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index 550dd136da..7b01b9a953 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -45,7 +45,7 @@ private: * 'spinning' means the engine is not stopped */ bool isSpinning; - + bool stopPins(); }; #endif /* ENGINE_H_ */ diff --git a/firmware/controllers/algo/rusefi_enums.h b/firmware/controllers/algo/rusefi_enums.h index 2211e6e331..156751b04e 100644 --- a/firmware/controllers/algo/rusefi_enums.h +++ b/firmware/controllers/algo/rusefi_enums.h @@ -89,7 +89,9 @@ typedef enum { SUBARU_2003_WRX = 22, - ET_UNUSED = 23, + DODGE_NEON_2003 = 23, + + ET_UNUSED = 24, Force_4b_engine_type = ENUM_SIZE_HACK, } engine_type_e; @@ -97,7 +99,7 @@ typedef enum { typedef enum { TT_TOOTHED_WHEEL = 0, TT_FORD_ASPIRE = 1, - TT_DODGE_NEON = 2, + TT_DODGE_NEON_1995 = 2, TT_MAZDA_MIATA_NA = 3, TT_MAZDA_MIATA_NB = 4, TT_GM_7X = 5, @@ -114,6 +116,8 @@ typedef enum { TT_HONDA_ACCORD_CD_DIP = 13, + TT_DODGE_NEON_2003 = 14, + Force_4b_trigger_type = ENUM_SIZE_HACK, } trigger_type_e; diff --git a/firmware/controllers/system/efiGpio.cpp b/firmware/controllers/system/efiGpio.cpp index adbe29ce72..931a198772 100644 --- a/firmware/controllers/system/efiGpio.cpp +++ b/firmware/controllers/system/efiGpio.cpp @@ -59,8 +59,10 @@ void setPinValue(OutputPin * outputPin, int electricalValue, int logicValue) { * @brief Sets the value according to current electrical settings */ void setOutputPinValue(io_pin_e pin, int logicValue) { +#if EFI_PROD_CODE if (outputs[pin].port == GPIO_NULL) return; +#endif efiAssertVoid(pinDefaultState[pin]!=NULL, "pin mode not initialized"); pin_output_mode_e mode = *pinDefaultState[pin]; setPinValue(&outputs[pin], getElectricalValue(logicValue, mode), logicValue); diff --git a/firmware/controllers/trigger/trigger_decoder.cpp b/firmware/controllers/trigger/trigger_decoder.cpp index 284a454703..edfe6c511d 100644 --- a/firmware/controllers/trigger/trigger_decoder.cpp +++ b/firmware/controllers/trigger/trigger_decoder.cpp @@ -208,7 +208,7 @@ void initializeTriggerShape(Logging *logger, engine_configuration_s const *engin initializeMazdaMiataNbShape(triggerShape); return; - case TT_DODGE_NEON: + case TT_DODGE_NEON_1995: configureNeonTriggerShape(triggerShape); return; diff --git a/firmware/util/efilib.cpp b/firmware/util/efilib.cpp index c961399f7e..e02d9c715c 100644 --- a/firmware/util/efilib.cpp +++ b/firmware/util/efilib.cpp @@ -54,7 +54,7 @@ uint32_t efiStrlen(const char *param) { } bool startsWith(const char *line, const char *prefix) { - int len = efiStrlen(prefix); + uint32_t len = efiStrlen(prefix); if(efiStrlen(line) < len) { return false; } diff --git a/unit_tests/test_data_structures/test_event_registry.cpp b/unit_tests/test_data_structures/test_event_registry.cpp index 8735929320..da4b52023e 100644 --- a/unit_tests/test_data_structures/test_event_registry.cpp +++ b/unit_tests/test_data_structures/test_event_registry.cpp @@ -13,8 +13,6 @@ static ActuatorEventList eventList; static ActuatorEventList result; -int pinDefaultState[IO_PIN_COUNT]; - extern int outputSignalCount; void testEventRegistry(void) {