From 31bd25483e103470fcef290f9b885decb00998b8 Mon Sep 17 00:00:00 2001 From: rusEfi Date: Wed, 26 Nov 2014 08:03:07 -0600 Subject: [PATCH] auto-sync --- firmware/controllers/error_handling.c | 4 ++- .../controllers/trigger/trigger_central.cpp | 33 ++++++++++--------- firmware/rusefi.cpp | 2 +- .../simulator/rusEfiFunctionalTest.cpp | 3 ++ 4 files changed, 24 insertions(+), 18 deletions(-) diff --git a/firmware/controllers/error_handling.c b/firmware/controllers/error_handling.c index 7588f74a25..18dd6aff9e 100644 --- a/firmware/controllers/error_handling.c +++ b/firmware/controllers/error_handling.c @@ -90,6 +90,8 @@ char *getWarninig(void) { uint64_t lastLockTime; uint32_t maxLockTime = 0; +bool isInsideTriggerHandler = false; + void onLockHook(void) { lastLockTime = getTimeNowNt(); } @@ -100,7 +102,7 @@ void onUnlockHook(void) { maxLockTime = t; } // if (t > 2800) { -// // uncomment this if you want a nice stop for a breakpoint +// // un-comment this if you want a nice stop for a breakpoint // maxLockTime = t + 1; // } } diff --git a/firmware/controllers/trigger/trigger_central.cpp b/firmware/controllers/trigger/trigger_central.cpp index 11acbf8188..7dc615e7ed 100644 --- a/firmware/controllers/trigger/trigger_central.cpp +++ b/firmware/controllers/trigger/trigger_central.cpp @@ -69,8 +69,11 @@ uint32_t triggerBegin; uint32_t triggerDuration; uint32_t triggerMaxDuration = 0; +extern bool isInsideTriggerHandler; + void hwHandleShaftSignal(trigger_event_e signal) { triggerBegin = GET_TIMESTAMP(); + isInsideTriggerHandler = true; if (triggerReentraint > maxTriggerReentraint) maxTriggerReentraint = triggerReentraint; triggerReentraint++; @@ -78,7 +81,8 @@ void hwHandleShaftSignal(trigger_event_e signal) { triggerCentral.handleShaftSignal(signal, engine, engine->engineConfiguration); triggerReentraint--; triggerDuration = GET_TIMESTAMP() - triggerBegin; - if(triggerDuration > triggerMaxDuration) + isInsideTriggerHandler = false; + if (triggerDuration > triggerMaxDuration) triggerMaxDuration = triggerDuration; } #endif /* EFI_PROD_CODE */ @@ -98,26 +102,27 @@ static ALWAYS_INLINE void reportEventToWaveChart(trigger_event_e ckpSignalType, itoa10(&shaft_signal_msg_index[2], index); if (ckpSignalType == SHAFT_PRIMARY_UP) { shaft_signal_msg_index[0] = 'u'; - addWaveChartEvent(WC_CRANK1, (char*) shaft_signal_msg_index); + addWaveChartEvent(WC_CRANK1, (char* ) shaft_signal_msg_index); } else if (ckpSignalType == SHAFT_PRIMARY_DOWN) { shaft_signal_msg_index[0] = 'd'; - addWaveChartEvent(WC_CRANK1, (char*) shaft_signal_msg_index); + addWaveChartEvent(WC_CRANK1, (char* ) shaft_signal_msg_index); } else if (ckpSignalType == SHAFT_SECONDARY_UP) { shaft_signal_msg_index[0] = 'u'; - addWaveChartEvent(WC_CRANK2, (char*) shaft_signal_msg_index); + addWaveChartEvent(WC_CRANK2, (char* ) shaft_signal_msg_index); } else if (ckpSignalType == SHAFT_SECONDARY_DOWN) { shaft_signal_msg_index[0] = 'd'; - addWaveChartEvent(WC_CRANK2, (char*) shaft_signal_msg_index); + addWaveChartEvent(WC_CRANK2, (char* ) shaft_signal_msg_index); } else if (ckpSignalType == SHAFT_3RD_UP) { shaft_signal_msg_index[0] = 'u'; - addWaveChartEvent(WC_CRANK3, (char*) shaft_signal_msg_index); + addWaveChartEvent(WC_CRANK3, (char* ) shaft_signal_msg_index); } else if (ckpSignalType == SHAFT_3RD_DOWN) { shaft_signal_msg_index[0] = 'd'; - addWaveChartEvent(WC_CRANK3, (char*) shaft_signal_msg_index); + addWaveChartEvent(WC_CRANK3, (char* ) shaft_signal_msg_index); } } -void TriggerCentral::handleShaftSignal(trigger_event_e signal, Engine *engine, engine_configuration_s *engineConfiguration) { +void TriggerCentral::handleShaftSignal(trigger_event_e signal, Engine *engine, + engine_configuration_s *engineConfiguration) { efiAssertVoid(engine!=NULL, "configuration"); nowNt = getTimeNowNt(); @@ -178,7 +183,7 @@ void TriggerCentral::handleShaftSignal(trigger_event_e signal, Engine *engine, e * Here we invoke all the listeners - the main engine control logic is inside these listeners */ for (int i = 0; i < triggerListeneres.currentListenersCount; i++) { - ShaftPositionListener listener = (ShaftPositionListener)triggerListeneres.callbacks[i]; + ShaftPositionListener listener = (ShaftPositionListener) triggerListeneres.callbacks[i]; (listener)(signal, triggerIndexForListeners PASS_ENGINE_PARAMETER); } @@ -241,18 +246,14 @@ static void triggerInfo(Engine *engine) { scheduleMsg(&logger, "expected duty #0=%f/#1=%f", ts->dutyCycle[0], ts->dutyCycle[1]); scheduleMsg(&logger, "isError %s/total errors=%d ord_err=%d/total revolutions=%d/self=%s", - boolToString(isTriggerDecoderError()), - triggerCentral.triggerState.totalTriggerErrorCounter, - triggerCentral.triggerState.orderingErrorCounter, - triggerCentral.triggerState.getTotalRevolutionCounter(), + boolToString(isTriggerDecoderError()), triggerCentral.triggerState.totalTriggerErrorCounter, + triggerCentral.triggerState.orderingErrorCounter, triggerCentral.triggerState.getTotalRevolutionCounter(), boolToString(engineConfiguration->directSelfStimulation)); #endif #if EFI_PROD_CODE scheduleMsg(&logger, "sn=%s ignitionMathTime=%d schTime=%d triggerMaxDuration=%d", - boolToString(ts->isSynchronizationNeeded), - engine->ignitionMathTime, - engine->ignitionSchTime, + boolToString(ts->isSynchronizationNeeded), engine->ignitionMathTime, engine->ignitionSchTime, triggerMaxDuration); triggerMaxDuration = 0; diff --git a/firmware/rusefi.cpp b/firmware/rusefi.cpp index 02af5fd3b3..289e70ddb8 100644 --- a/firmware/rusefi.cpp +++ b/firmware/rusefi.cpp @@ -265,5 +265,5 @@ int getRusEfiVersion(void) { return 1; // this is here to make the compiler happy about the unused array if (UNUSED_CCM_SIZE == 0) return 1; // this is here to make the compiler happy about the unused array - return 20141125; + return 20141126; } diff --git a/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp b/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp index b558244fb6..958c1b6e73 100644 --- a/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp +++ b/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp @@ -36,6 +36,9 @@ extern WaveChart waveChart; uint32_t maxLockTime = 0; +// todo: move this field to trigger_central +bool isInsideTriggerHandler; + persistent_config_container_s persistentState; static engine_configuration2_s ec2;