From f7b95e16e31a357755570966f01fc5d07d5d8a18 Mon Sep 17 00:00:00 2001 From: rusEfi Date: Tue, 1 Nov 2016 23:01:54 -0400 Subject: [PATCH] auto-sync --- firmware/controllers/system/efiGpio.cpp | 4 ++-- firmware/controllers/system/efiGpio.h | 4 ++-- firmware/controllers/trigger/spark_logic.cpp | 14 +++++++------- unit_tests/test_trigger_decoder.cpp | 16 ++++++++-------- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/firmware/controllers/system/efiGpio.cpp b/firmware/controllers/system/efiGpio.cpp index 086b6d5798..f92bb2eb99 100644 --- a/firmware/controllers/system/efiGpio.cpp +++ b/firmware/controllers/system/efiGpio.cpp @@ -71,8 +71,8 @@ IgnitionOutputPin::IgnitionOutputPin() { } void IgnitionOutputPin::reset() { - outOfOrderCounter = 0; - sparkId = 0; + outOfOrder = false; + signalFallSparkId = 0; } OutputPin::OutputPin() { diff --git a/firmware/controllers/system/efiGpio.h b/firmware/controllers/system/efiGpio.h index 941ef216f0..85ef98fc29 100644 --- a/firmware/controllers/system/efiGpio.h +++ b/firmware/controllers/system/efiGpio.h @@ -60,8 +60,8 @@ class IgnitionOutputPin : public NamedOutputPin { public: IgnitionOutputPin(); void reset(); - int sparkId; - int outOfOrderCounter; // https://sourceforge.net/p/rusefi/tickets/319/ + int signalFallSparkId; + bool outOfOrder; // https://sourceforge.net/p/rusefi/tickets/319/ }; class engine_pins_s { diff --git a/firmware/controllers/trigger/spark_logic.cpp b/firmware/controllers/trigger/spark_logic.cpp index bf84ec45fd..54cd1155fa 100644 --- a/firmware/controllers/trigger/spark_logic.cpp +++ b/firmware/controllers/trigger/spark_logic.cpp @@ -28,7 +28,7 @@ void turnSparkPinLow(IgnitionEvent *event) { IgnitionOutputPin *output = event->output; #if SPARK_EXTREME_LOGGING || defined(__DOXYGEN__) scheduleMsg(logger, "spark goes low %d %s %d current=%d cnt=%d id=%d", getRevolutionCounter(), output->name, (int)getTimeNowUs(), - output->currentLogicValue, output->outOfOrderCounter, event->sparkId); + output->currentLogicValue, output->outOfOrder, event->sparkId); #endif /* FUEL_MATH_EXTREME_LOGGING */ /** @@ -39,11 +39,11 @@ void turnSparkPinLow(IgnitionEvent *event) { * */ - output->sparkId = event->sparkId; + output->signalFallSparkId = event->sparkId; if (!output->currentLogicValue) { warning(CUSTOM_ERR_6149, "out-of-order coil off %s", output->name); - output->outOfOrderCounter++; + output->outOfOrder = true; } turnPinLow(output); @@ -58,12 +58,12 @@ void turnSparkPinHigh(IgnitionEvent *event) { IgnitionOutputPin *output = event->output; #if SPARK_EXTREME_LOGGING || defined(__DOXYGEN__) scheduleMsg(logger, "spark goes high %d %s %d current=%d cnt=%d id=%d", getRevolutionCounter(), output->name, (int)getTimeNowUs(), - output->currentLogicValue, output->outOfOrderCounter, event->sparkId); + output->currentLogicValue, output->outOfOrder, event->sparkId); #endif /* FUEL_MATH_EXTREME_LOGGING */ - if (output->outOfOrderCounter > 0) { - output->outOfOrderCounter--; - if (output->sparkId == event->sparkId) { + if (output->outOfOrder) { + output->outOfOrder = false; + if (output->signalFallSparkId == event->sparkId) { // let's save this coil if things do not look right return; } diff --git a/unit_tests/test_trigger_decoder.cpp b/unit_tests/test_trigger_decoder.cpp index 4d502dc8ad..37ff31ca71 100644 --- a/unit_tests/test_trigger_decoder.cpp +++ b/unit_tests/test_trigger_decoder.cpp @@ -1171,13 +1171,13 @@ void testSparkReverseOrderBug319(void) { eth.firePrimaryTriggerFall(); schedulingQueue.executeAll(timeNow); - assertEqualsM("out-of-order #1", 1, enginePins.coils[3].outOfOrderCounter); + assertEqualsM("out-of-order #1", 1, enginePins.coils[3].outOfOrder); timeNow += MS2US(200); // moving time forward to execute all pending actions schedulingQueue.executeAll(timeNow); - assertEqualsM("out-of-order #2", 0, enginePins.coils[3].outOfOrderCounter); + assertEqualsM("out-of-order #2", 0, enginePins.coils[3].outOfOrder); printf("*************************************************** now let's have a good engine cycle and confirm things work\r\n"); @@ -1187,12 +1187,12 @@ void testSparkReverseOrderBug319(void) { assertEqualsM("RPM#2", 545, eth.engine.rpmCalculator.getRpm(PASS_ENGINE_PARAMETER_F)); - assertEqualsM("out-of-order #3", 0, enginePins.coils[3].outOfOrderCounter); + assertEqualsM("out-of-order #3", 0, enginePins.coils[3].outOfOrder); timeNow += MS2US(20); eth.firePrimaryTriggerFall(); schedulingQueue.executeAll(timeNow); - assertEqualsM("out-of-order #4", 1, enginePins.coils[3].outOfOrderCounter); + assertEqualsM("out-of-order #4", 1, enginePins.coils[3].outOfOrder); printf("*************************************************** (rpm is back) now let's have a good engine cycle and confirm things work\r\n"); @@ -1202,12 +1202,12 @@ void testSparkReverseOrderBug319(void) { assertEqualsM("RPM#3", 3000, eth.engine.rpmCalculator.getRpm(PASS_ENGINE_PARAMETER_F)); - assertEqualsM("out-of-order #5", 1, enginePins.coils[3].outOfOrderCounter); + assertEqualsM("out-of-order #5", 1, enginePins.coils[3].outOfOrder); timeNow += MS2US(20); eth.firePrimaryTriggerFall(); schedulingQueue.executeAll(timeNow); - assertEqualsM("out-of-order #6", 0, enginePins.coils[3].outOfOrderCounter); + assertEqualsM("out-of-order #6", 0, enginePins.coils[3].outOfOrder); printf("*************************************************** (rpm is back 2) now let's have a good engine cycle and confirm things work\r\n"); @@ -1217,10 +1217,10 @@ void testSparkReverseOrderBug319(void) { assertEqualsM("RPM#4", 3000, eth.engine.rpmCalculator.getRpm(PASS_ENGINE_PARAMETER_F)); - assertEqualsM("out-of-order #7", 0, enginePins.coils[3].outOfOrderCounter); + assertEqualsM("out-of-order #7", 0, enginePins.coils[3].outOfOrder); timeNow += MS2US(20); eth.firePrimaryTriggerFall(); schedulingQueue.executeAll(timeNow); - assertEqualsM("out-of-order #8", 0, enginePins.coils[3].outOfOrderCounter); + assertEqualsM("out-of-order #8", 0, enginePins.coils[3].outOfOrder); }