From 68aa2844278543b40edfedbd8d94d3c7caa81759 Mon Sep 17 00:00:00 2001 From: rusEfi Date: Sat, 18 Apr 2015 18:04:27 -0400 Subject: [PATCH] auto-sync --- firmware/console/status_loop.cpp | 14 +++++++++----- firmware/controllers/trigger/trigger_decoder.cpp | 2 +- firmware/rusefi.cpp | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp index 367b2a46ce..7fa0e764d8 100644 --- a/firmware/console/status_loop.cpp +++ b/firmware/console/status_loop.cpp @@ -473,6 +473,9 @@ static void setBlinkingPeriod(int value) { } #if EFI_PROD_CODE || defined(__DOXYGEN__) + +extern efitick_t lastDecodingErrorTime; + /** * this thread has a lower-then-usual stack size so we cannot afford *print* methods here */ @@ -483,24 +486,25 @@ static void blinkingThread(void *arg) { initialLedsBlink(); while (true) { - int delay = isConsoleReady() ? 3 * blinkingPeriod : blinkingPeriod; + int delayMs = isConsoleReady() ? 3 * blinkingPeriod : blinkingPeriod; #if EFI_INTERNAL_FLASH || defined(__DOXYGEN__) if (getNeedToWriteConfiguration()) { - delay = 2 * delay; + delayMs = 2 * delayMs; } #endif communicationPin.setValue(0); warningPin.setValue(0); - chThdSleepMilliseconds(delay); + chThdSleepMilliseconds(delayMs); communicationPin.setValue(1); #if EFI_ENGINE_CONTROL || defined(__DOXYGEN__) - if (isTriggerDecoderError() || isIgnitionTimingError()) + bool_t justHadError = (getTimeNowNt() - lastDecodingErrorTime) < US2NT(2 * 1000 * delayMs); + if (justHadError || isTriggerDecoderError() || isIgnitionTimingError()) warningPin.setValue(1); #endif - chThdSleepMilliseconds(delay); + chThdSleepMilliseconds(delayMs); } } diff --git a/firmware/controllers/trigger/trigger_decoder.cpp b/firmware/controllers/trigger/trigger_decoder.cpp index 5fccf7c77e..0fdbaac960 100644 --- a/firmware/controllers/trigger/trigger_decoder.cpp +++ b/firmware/controllers/trigger/trigger_decoder.cpp @@ -55,7 +55,7 @@ float actualSynchGap; static Logging * logger; -efitick_t lastDecodingErrorTime = 0; +efitick_t lastDecodingErrorTime = US2NT(-10000000LL); /** * @return TRUE is something is wrong with trigger decoding diff --git a/firmware/rusefi.cpp b/firmware/rusefi.cpp index 26e04c5fc8..1abe72fbc4 100644 --- a/firmware/rusefi.cpp +++ b/firmware/rusefi.cpp @@ -290,5 +290,5 @@ int getRusEfiVersion(void) { return 123; // this is here to make the compiler happy about the unused array if (UNUSED_CCM_SIZE[0] * 0 != 0) return 3211; // this is here to make the compiler happy about the unused array - return 20150417; + return 20150418; }