From d7fd0ce6c1469b5f42157606676c3e3218c77de2 Mon Sep 17 00:00:00 2001 From: rusefi Date: Tue, 7 May 2019 19:32:08 -0400 Subject: [PATCH] refactoring: better method name --- firmware/controllers/algo/advance_map.cpp | 8 ++++---- firmware/controllers/algo/engine.cpp | 4 ++-- firmware/controllers/core/error_handling.cpp | 4 ++-- firmware/controllers/engine_controller.cpp | 10 +++++----- firmware/controllers/map_averaging.cpp | 4 ++-- firmware/controllers/scheduling/event_queue.cpp | 4 ++-- .../controllers/scheduling/single_timer_executor.cpp | 4 ++-- firmware/controllers/trigger/main_trigger_callback.cpp | 4 ++-- firmware/controllers/trigger/rpm_calculator.cpp | 4 ++-- firmware/controllers/trigger/spark_logic.cpp | 4 ++-- firmware/controllers/trigger/trigger_central.cpp | 4 ++-- firmware/hw_layer/hip9011.cpp | 4 ++-- firmware/hw_layer/microsecond_timer.cpp | 4 ++-- firmware/util/efitime.h | 7 +++++-- firmware/util/math/interpolation.cpp | 8 ++++---- 15 files changed, 40 insertions(+), 37 deletions(-) diff --git a/firmware/controllers/algo/advance_map.cpp b/firmware/controllers/algo/advance_map.cpp index 9878075cb8..e284bbc42a 100644 --- a/firmware/controllers/algo/advance_map.cpp +++ b/firmware/controllers/algo/advance_map.cpp @@ -79,14 +79,14 @@ static angle_t getRunningAdvance(int rpm, float engineLoad DECLARE_ENGINE_PARAME if (CONFIG(timingMode) == TM_FIXED) return engineConfiguration->fixedTiming; - engine->m.beforeAdvance = GET_TIMESTAMP(); + engine->m.beforeAdvance = getTimeNowLowerNt(); if (cisnan(engineLoad)) { warning(CUSTOM_NAN_ENGINE_LOAD, "NaN engine load"); return NAN; } efiAssert(CUSTOM_ERR_ASSERT, !cisnan(engineLoad), "invalid el", NAN); - engine->m.beforeZeroTest = GET_TIMESTAMP(); - engine->m.zeroTestTime = GET_TIMESTAMP() - engine->m.beforeZeroTest; + engine->m.beforeZeroTest = getTimeNowLowerNt(); + engine->m.zeroTestTime = getTimeNowLowerNt() - engine->m.beforeZeroTest; if (isStep1Condition(rpm PASS_ENGINE_PARAMETER_SUFFIX)) { return engineConfiguration->step1timing; @@ -108,7 +108,7 @@ static angle_t getRunningAdvance(int rpm, float engineLoad DECLARE_ENGINE_PARAME advanceAngle = interpolateClamped(0.0f, idleAdvance, CONFIGB(idlePidDeactivationTpsThreshold), advanceAngle, tps); } - engine->m.advanceLookupTime = GET_TIMESTAMP() - engine->m.beforeAdvance; + engine->m.advanceLookupTime = getTimeNowLowerNt() - engine->m.beforeAdvance; return advanceAngle; } diff --git a/firmware/controllers/algo/engine.cpp b/firmware/controllers/algo/engine.cpp index ec4fd6e2ef..562ae7c8b8 100644 --- a/firmware/controllers/algo/engine.cpp +++ b/firmware/controllers/algo/engine.cpp @@ -337,14 +337,14 @@ void Engine::periodicFastCallback(DECLARE_ENGINE_PARAMETER_SIGNATURE) { engineState.periodicFastCallback(PASS_ENGINE_PARAMETER_SIGNATURE); - engine->m.beforeFuelCalc = GET_TIMESTAMP(); + engine->m.beforeFuelCalc = getTimeNowLowerNt(); int rpm = GET_RPM(); /** * we have same assignment of 'getInjectionDuration' to 'injectionDuration' in handleFuel() * Open question why do we refresh that in two places? */ ENGINE(injectionDuration) = getInjectionDuration(rpm PASS_ENGINE_PARAMETER_SUFFIX); - engine->m.fuelCalcTime = GET_TIMESTAMP() - engine->m.beforeFuelCalc; + engine->m.fuelCalcTime = getTimeNowLowerNt() - engine->m.beforeFuelCalc; } diff --git a/firmware/controllers/core/error_handling.cpp b/firmware/controllers/core/error_handling.cpp index 9242038294..400c2fb526 100644 --- a/firmware/controllers/core/error_handling.cpp +++ b/firmware/controllers/core/error_handling.cpp @@ -165,11 +165,11 @@ uint32_t maxLockedDuration = 0; #endif */ void onLockHook(void) { - lastLockTime = GET_TIMESTAMP(); + lastLockTime = getTimeNowLowerNt(); } void onUnlockHook(void) { - uint32_t lockedDuration = GET_TIMESTAMP() - lastLockTime; + uint32_t lockedDuration = getTimeNowLowerNt() - lastLockTime; if (lockedDuration > maxLockedDuration) { maxLockedDuration = lockedDuration; } diff --git a/firmware/controllers/engine_controller.cpp b/firmware/controllers/engine_controller.cpp index 31839a2a46..68ff2bddf8 100644 --- a/firmware/controllers/engine_controller.cpp +++ b/firmware/controllers/engine_controller.cpp @@ -147,7 +147,7 @@ efitick_t getTimeNowNt(void) { efitime_t localH = halTime.state.highBits; uint32_t localLow = halTime.state.lowBits; - uint32_t value = GET_TIMESTAMP(); + uint32_t value = getTimeNowLowerNt(); if (value < localLow) { // new value less than previous value means there was an overflow in that 32 bit counter @@ -184,7 +184,7 @@ efitick_t getTimeNowNt(void) { /** * We need to take current counter after making a local 64 bit snapshot */ - uint32_t value = GET_TIMESTAMP(); + uint32_t value = getTimeNowLowerNt(); if (value < localLow) { // new value less than previous value means there was an overflow in that 32 bit counter @@ -249,7 +249,7 @@ typedef FLStack irq_enter_timestamps_t; static irq_enter_timestamps_t irqEnterTimestamps; void irqEnterHook(void) { - irqEnterTimestamps.push(GET_TIMESTAMP()); + irqEnterTimestamps.push(getTimeNowLowerNt()); } static int currentIrqDurationAccumulator = 0; @@ -261,7 +261,7 @@ int perSecondIrqDuration = 0; int perSecondIrqCounter = 0; void irqExitHook(void) { int enterTime = irqEnterTimestamps.pop(); - currentIrqDurationAccumulator += (GET_TIMESTAMP() - enterTime); + currentIrqDurationAccumulator += (getTimeNowLowerNt() - enterTime); currentIrqCounter++; } #endif /* EFI_CLOCK_LOCKS */ @@ -283,7 +283,7 @@ static void periodicSlowCallback(Engine *engine) { * We need to push current value into the 64 bit counter often enough so that we do not miss an overflow */ bool alreadyLocked = lockAnyContext(); - updateAndSet(&halTime.state, GET_TIMESTAMP()); + updateAndSet(&halTime.state, getTimeNowLowerNt()); if (!alreadyLocked) { unlockAnyContext(); } diff --git a/firmware/controllers/map_averaging.cpp b/firmware/controllers/map_averaging.cpp index f25c6c4e87..71b06e98bc 100644 --- a/firmware/controllers/map_averaging.cpp +++ b/firmware/controllers/map_averaging.cpp @@ -261,7 +261,7 @@ static void mapAveragingTriggerCallback(trigger_event_e ckpEventType, if (index != CONFIG(mapAveragingSchedulingAtIndex)) return; - engine->m.beforeMapAveragingCb = GET_TIMESTAMP(); + engine->m.beforeMapAveragingCb = getTimeNowLowerNt(); int rpm = GET_RPM_VALUE; if (!isValidRpm(rpm)) { return; @@ -302,7 +302,7 @@ static void mapAveragingTriggerCallback(trigger_event_e ckpEventType, startAveraging, NULL, &engine->rpmCalculator); scheduleByAngle(rpm, &endTimer[i][structIndex], samplingEnd, endAveraging, NULL, &engine->rpmCalculator); - engine->m.mapAveragingCbTime = GET_TIMESTAMP() + engine->m.mapAveragingCbTime = getTimeNowLowerNt() - engine->m.beforeMapAveragingCb; } #endif diff --git a/firmware/controllers/scheduling/event_queue.cpp b/firmware/controllers/scheduling/event_queue.cpp index 1d98e25d7f..57e4bd836a 100644 --- a/firmware/controllers/scheduling/event_queue.cpp +++ b/firmware/controllers/scheduling/event_queue.cpp @@ -165,7 +165,7 @@ int EventQueue::executeAll(efitime_t now) { LL_FOREACH_SAFE(executionList, current, tmp) { efiAssert(CUSTOM_ERR_ASSERT, current->callback != NULL, "callback==null2", 0); - uint32_t before = GET_TIMESTAMP(); + uint32_t before = getTimeNowLowerNt(); current->isScheduled = false; uint32_t howFarOff = now - current->momentX; maxSchedulingPrecisionLoss = maxI(maxSchedulingPrecisionLoss, howFarOff); @@ -174,7 +174,7 @@ int EventQueue::executeAll(efitime_t now) { #endif current->callback(current->param); // even with overflow it's safe to subtract here - lastEventCallbackDuration = GET_TIMESTAMP() - before; + lastEventCallbackDuration = getTimeNowLowerNt() - before; if (lastEventCallbackDuration > maxEventCallbackDuration) maxEventCallbackDuration = lastEventCallbackDuration; if (lastEventCallbackDuration > 2000) { diff --git a/firmware/controllers/scheduling/single_timer_executor.cpp b/firmware/controllers/scheduling/single_timer_executor.cpp index be2f30a88e..783da7b991 100644 --- a/firmware/controllers/scheduling/single_timer_executor.cpp +++ b/firmware/controllers/scheduling/single_timer_executor.cpp @@ -154,9 +154,9 @@ void SingleTimerExecutor::scheduleTimerCallback() { if (nextEventTimeNt == EMPTY_QUEUE) return; // no pending events in the queue int32_t hwAlarmTime = NT2US((int32_t)nextEventTimeNt - (int32_t)nowNt); - uint32_t beforeHwSetTimer = GET_TIMESTAMP(); + uint32_t beforeHwSetTimer = getTimeNowLowerNt(); setHardwareUsTimer(hwAlarmTime == 0 ? 1 : hwAlarmTime); - hwSetTimerDuration = GET_TIMESTAMP() - beforeHwSetTimer; + hwSetTimerDuration = getTimeNowLowerNt() - beforeHwSetTimer; } void initSingleTimerExecutorHardware(void) { diff --git a/firmware/controllers/trigger/main_trigger_callback.cpp b/firmware/controllers/trigger/main_trigger_callback.cpp index d0bc1828dd..7ad790bf23 100644 --- a/firmware/controllers/trigger/main_trigger_callback.cpp +++ b/firmware/controllers/trigger/main_trigger_callback.cpp @@ -439,7 +439,7 @@ uint32_t *cyccnt = (uint32_t*) &DWT->CYCCNT; void mainTriggerCallback(trigger_event_e ckpSignalType, uint32_t trgEventIndex DECLARE_ENGINE_PARAMETER_SUFFIX) { (void) ckpSignalType; - ENGINE(m.beforeMainTrigger) = GET_TIMESTAMP(); + ENGINE(m.beforeMainTrigger) = getTimeNowLowerNt(); if (hasFirmwareError()) { /** * In case on a major error we should not process any more events. @@ -538,7 +538,7 @@ void mainTriggerCallback(trigger_event_e ckpSignalType, uint32_t trgEventIndex D #endif /* EFI_HISTOGRAMS */ if (trgEventIndex == 0) { - ENGINE(m.mainTriggerCallbackTime) = GET_TIMESTAMP() - ENGINE(m.beforeMainTrigger); + ENGINE(m.mainTriggerCallbackTime) = getTimeNowLowerNt() - ENGINE(m.beforeMainTrigger); } } diff --git a/firmware/controllers/trigger/rpm_calculator.cpp b/firmware/controllers/trigger/rpm_calculator.cpp index 0c7a6d52a2..2e2168f367 100644 --- a/firmware/controllers/trigger/rpm_calculator.cpp +++ b/firmware/controllers/trigger/rpm_calculator.cpp @@ -234,7 +234,7 @@ void rpmShaftPositionCallback(trigger_event_e ckpSignalType, RpmCalculator *rpmState = &engine->rpmCalculator; if (index == 0) { - ENGINE(m.beforeRpmCb) = GET_TIMESTAMP(); + ENGINE(m.beforeRpmCb) = getTimeNowLowerNt(); bool hadRpmRecently = rpmState->checkIfSpinning(nowNt PASS_ENGINE_PARAMETER_SUFFIX); @@ -257,7 +257,7 @@ void rpmShaftPositionCallback(trigger_event_e ckpSignalType, } rpmState->onNewEngineCycle(); rpmState->lastRpmEventTimeNt = nowNt; - ENGINE(m.rpmCbTime) = GET_TIMESTAMP() - ENGINE(m.beforeRpmCb); + ENGINE(m.rpmCbTime) = getTimeNowLowerNt() - ENGINE(m.beforeRpmCb); } diff --git a/firmware/controllers/trigger/spark_logic.cpp b/firmware/controllers/trigger/spark_logic.cpp index 3fe9ad4ddf..144163518f 100644 --- a/firmware/controllers/trigger/spark_logic.cpp +++ b/firmware/controllers/trigger/spark_logic.cpp @@ -313,7 +313,7 @@ static void initializeIgnitionActions(IgnitionEventList *list DECLARE_ENGINE_PAR static ALWAYS_INLINE void prepareIgnitionSchedule(DECLARE_ENGINE_PARAMETER_SIGNATURE) { - engine->m.beforeIgnitionSch = GET_TIMESTAMP(); + engine->m.beforeIgnitionSch = getTimeNowLowerNt(); /** * TODO: warning. there is a bit of a hack here, todo: improve. * currently output signals/times signalTimerUp from the previous revolutions could be @@ -339,7 +339,7 @@ static ALWAYS_INLINE void prepareIgnitionSchedule(DECLARE_ENGINE_PARAMETER_SIGNA IgnitionEventList *list = &engine->ignitionEvents; initializeIgnitionActions(list PASS_ENGINE_PARAMETER_SUFFIX); - engine->m.ignitionSchTime = GET_TIMESTAMP() - engine->m.beforeIgnitionSch; + engine->m.ignitionSchTime = getTimeNowLowerNt() - engine->m.beforeIgnitionSch; } diff --git a/firmware/controllers/trigger/trigger_central.cpp b/firmware/controllers/trigger/trigger_central.cpp index e578db3cad..6930eddea0 100644 --- a/firmware/controllers/trigger/trigger_central.cpp +++ b/firmware/controllers/trigger/trigger_central.cpp @@ -192,7 +192,7 @@ void hwHandleShaftSignal(trigger_event_e signal) { return; } } - uint32_t triggerHandlerEntryTime = GET_TIMESTAMP(); + uint32_t triggerHandlerEntryTime = getTimeNowLowerNt(); isInsideTriggerHandler = true; if (triggerReentraint > maxTriggerReentraint) maxTriggerReentraint = triggerReentraint; @@ -200,7 +200,7 @@ void hwHandleShaftSignal(trigger_event_e signal) { efiAssertVoid(CUSTOM_ERR_6636, getCurrentRemainingStack() > 128, "lowstck#8"); engine->triggerCentral.handleShaftSignal(signal PASS_ENGINE_PARAMETER_SUFFIX); triggerReentraint--; - triggerDuration = GET_TIMESTAMP() - triggerHandlerEntryTime; + triggerDuration = getTimeNowLowerNt() - triggerHandlerEntryTime; isInsideTriggerHandler = false; if (triggerDuration > triggerMaxDuration) triggerMaxDuration = triggerDuration; diff --git a/firmware/hw_layer/hip9011.cpp b/firmware/hw_layer/hip9011.cpp index 761fe6d5e2..c9f72576e5 100644 --- a/firmware/hw_layer/hip9011.cpp +++ b/firmware/hw_layer/hip9011.cpp @@ -242,7 +242,7 @@ static void intHoldCallback(trigger_event_e ckpEventType, uint32_t index DECLARE // this callback is invoked on interrupt thread if (index != 0) return; - engine->m.beforeHipCb = GET_TIMESTAMP(); + engine->m.beforeHipCb = getTimeNowLowerNt(); int rpm = GET_RPM_VALUE; if (!isValidRpm(rpm)) @@ -258,7 +258,7 @@ static void intHoldCallback(trigger_event_e ckpEventType, uint32_t index DECLARE scheduleByAngle(rpm, &endTimer[structIndex], engineConfiguration->knockDetectionWindowEnd, (schfunc_t) &endIntegration, NULL, &engine->rpmCalculator); - engine->m.hipCbTime = GET_TIMESTAMP() - engine->m.beforeHipCb; + engine->m.hipCbTime = getTimeNowLowerNt() - engine->m.beforeHipCb; } void setMaxKnockSubDeg(int value) { diff --git a/firmware/hw_layer/microsecond_timer.cpp b/firmware/hw_layer/microsecond_timer.cpp index 9831e2849d..254e5718cf 100644 --- a/firmware/hw_layer/microsecond_timer.cpp +++ b/firmware/hw_layer/microsecond_timer.cpp @@ -101,9 +101,9 @@ static void hwTimerCallback(GPTDriver *gptp) { } isTimerPending = false; - uint32_t before = GET_TIMESTAMP(); + uint32_t before = getTimeNowLowerNt(); globalTimerCallback(NULL); - uint32_t precisionCallbackDuration = GET_TIMESTAMP() - before; + uint32_t precisionCallbackDuration = getTimeNowLowerNt() - before; if (precisionCallbackDuration > maxPrecisionCallbackDuration) { maxPrecisionCallbackDuration = precisionCallbackDuration; } diff --git a/firmware/util/efitime.h b/firmware/util/efitime.h index 3e599f705f..d76b7b02fb 100644 --- a/firmware/util/efitime.h +++ b/firmware/util/efitime.h @@ -40,6 +40,9 @@ efitimeus_t getTimeNowUs(void); /** * 64-bit counter CPU cycles since MCU reset + * + * See getTimeNowLowerNt for a quicker version which returns only lower 32 bits + * Lower 32 bits are enough if all we need is to measure relatively short time durations */ efitick_t getTimeNowNt(void); @@ -60,9 +63,9 @@ efitimesec_t getTimeNowSeconds(void); #endif /* __cplusplus */ #if EFI_PROD_CODE || EFI_SIMULATOR - #define GET_TIMESTAMP() port_rt_get_counter_value() + #define getTimeNowLowerNt() port_rt_get_counter_value() #else - #define GET_TIMESTAMP() 0 + #define getTimeNowLowerNt() 0 #endif #endif /* EFITIME_H_ */ diff --git a/firmware/util/math/interpolation.cpp b/firmware/util/math/interpolation.cpp index d1533379af..d99a805657 100644 --- a/firmware/util/math/interpolation.cpp +++ b/firmware/util/math/interpolation.cpp @@ -40,21 +40,21 @@ static void testBinary(void) { for (int v = 0; v <= 16; v++) { uint32_t timeOld; { - uint32_t start = GET_TIMESTAMP(); + uint32_t start = getTimeNowLowerNt(); int temp = 0; for (int i = 0; i < COUNT; i++) { temp += findIndex(array16, size16, v); } - timeOld = GET_TIMESTAMP() - start; + timeOld = getTimeNowLowerNt() - start; } uint32_t timeNew; { - uint32_t start = GET_TIMESTAMP(); + uint32_t start = getTimeNowLowerNt(); int temp = 0; for (int i = 0; i < COUNT; i++) { temp += findIndex2(array16, size16, v); } - timeNew = GET_TIMESTAMP() - start; + timeNew = getTimeNowLowerNt() - start; } scheduleMsg(logger, "for v=%d old=%d ticks", v, timeOld); scheduleMsg(logger, "for v=%d new=%d ticks", v, timeNew);