From df006b2a029015108ddd861311bb4a278505f88c Mon Sep 17 00:00:00 2001 From: rusEfi Date: Tue, 25 Nov 2014 08:03:01 -0600 Subject: [PATCH] auto-sync --- firmware/controllers/algo/engine.cpp | 1 + firmware/controllers/algo/engine.h | 14 ++++++++++++++ firmware/controllers/algo/engine_configuration.cpp | 3 ++- firmware/controllers/trigger/trigger_central.cpp | 2 +- firmware/controllers/trigger/trigger_decoder.cpp | 4 ++-- firmware/controllers/trigger/trigger_structure.cpp | 2 +- firmware/rusefi.cpp | 2 +- 7 files changed, 22 insertions(+), 6 deletions(-) diff --git a/firmware/controllers/algo/engine.cpp b/firmware/controllers/algo/engine.cpp index 7148ef2f04..66e947c3d3 100644 --- a/firmware/controllers/algo/engine.cpp +++ b/firmware/controllers/algo/engine.cpp @@ -42,6 +42,7 @@ void Engine::onTriggerEvent(uint64_t nowNt) { Engine::Engine() { lastTriggerEventTimeNt = 0; isCylinderCleanupMode = false; + engineCycleEventCount = 0; } void Engine::init() { diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index de24fc4745..4d525113ce 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -54,9 +54,23 @@ public: */ bool isCylinderCleanupMode; + /** + * pre-calculating this value is a performance optimization + */ + int engineCycleEventCount; + uint32_t beforeIgnitionMath; uint32_t ignitionMathTime; + uint32_t time2; + uint32_t time3; + uint32_t time4; + + uint32_t before2; + uint32_t before3; + uint32_t before4; + + void updateSlowSensors(); void watchdog(); diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp index 73dc5ef3c4..28ea4daf28 100644 --- a/firmware/controllers/algo/engine_configuration.cpp +++ b/firmware/controllers/algo/engine_configuration.cpp @@ -590,10 +590,11 @@ void applyNonPersistentConfiguration(Logging * logger, Engine *engine) { firmwareError("triggerShape size is zero"); return; } - if (engine->triggerShape.shaftPositionEventCount == 0) { + if (engine->triggerShape.getSize() == 0) { firmwareError("shaftPositionEventCount is zero"); return; } + engine->engineCycleEventCount = engine->triggerShape.getLength(); } void prepareShapes(Engine *engine) { diff --git a/firmware/controllers/trigger/trigger_central.cpp b/firmware/controllers/trigger/trigger_central.cpp index b508ea6e17..356a39d786 100644 --- a/firmware/controllers/trigger/trigger_central.cpp +++ b/firmware/controllers/trigger/trigger_central.cpp @@ -162,7 +162,7 @@ void TriggerCentral::handleShaftSignal(trigger_event_e signal, Engine *engine, e } reportEventToWaveChart(signal, triggerIndexForListeners); - if (triggerState.getCurrentIndex() >= engine->triggerShape.shaftPositionEventCount) { + if (triggerState.getCurrentIndex() >= engine->triggerShape.getSize()) { warning(OBD_PCM_Processor_Fault, "unexpected eventIndex=%d", triggerState.getCurrentIndex()); } else { diff --git a/firmware/controllers/trigger/trigger_decoder.cpp b/firmware/controllers/trigger/trigger_decoder.cpp index 62dddd0670..47b6edc0e4 100644 --- a/firmware/controllers/trigger/trigger_decoder.cpp +++ b/firmware/controllers/trigger/trigger_decoder.cpp @@ -85,7 +85,7 @@ static ALWAYS_INLINE bool noSynchronizationResetNeeded(TriggerState *shaftPositi /** * in case of noise the counter could be above the expected number of events */ - return shaftPositionState->getCurrentIndex() >= triggerShape->shaftPositionEventCount - 1; + return shaftPositionState->getCurrentIndex() >= triggerShape->getSize() - 1; } float TriggerState::getTriggerDutyCycle(int index) { @@ -178,7 +178,7 @@ void TriggerState::decodeTriggerEvent(trigger_shape_s const*triggerShape, trigge // this call would update duty cycle values nextTriggerEvent(triggerWheel, nowNt); - nextRevolution(triggerShape->shaftPositionEventCount, nowNt); + nextRevolution(triggerShape->getSize(), nowNt); } else { nextTriggerEvent(triggerWheel, nowNt); } diff --git a/firmware/controllers/trigger/trigger_structure.cpp b/firmware/controllers/trigger/trigger_structure.cpp index 767f4604f5..f095ab4c3f 100644 --- a/firmware/controllers/trigger/trigger_structure.cpp +++ b/firmware/controllers/trigger/trigger_structure.cpp @@ -177,7 +177,7 @@ void TriggerState::clear() { } uint32_t trigger_shape_s::getLength() const { - return operationMode == FOUR_STROKE_CAM_SENSOR ? shaftPositionEventCount : 2 * shaftPositionEventCount; + return operationMode == FOUR_STROKE_CAM_SENSOR ? getSize() : 2 * getSize(); } float trigger_shape_s::getAngle(int index) const { diff --git a/firmware/rusefi.cpp b/firmware/rusefi.cpp index eac89f13d4..f205d62c8d 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 20141124; + return 20141125; }