From 19bf208cdead323cf92b37f37c6eb34b3c92dba6 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Sat, 26 Dec 2020 15:12:36 -0800 Subject: [PATCH] use limp mgr for trigger disable (#2145) Co-authored-by: Matthew Kennedy --- firmware/controllers/trigger/trigger_central.cpp | 5 +++++ .../hw_layer/digital_input/trigger/trigger_input_exti.cpp | 2 -- .../hw_layer/digital_input/trigger/trigger_input_icu.cpp | 5 +---- firmware/hw_layer/hardware.cpp | 2 -- firmware/hw_layer/trigger_input_adc.cpp | 5 ----- 5 files changed, 6 insertions(+), 13 deletions(-) diff --git a/firmware/controllers/trigger/trigger_central.cpp b/firmware/controllers/trigger/trigger_central.cpp index 234caec65f..94f39aba97 100644 --- a/firmware/controllers/trigger/trigger_central.cpp +++ b/firmware/controllers/trigger/trigger_central.cpp @@ -276,6 +276,11 @@ uint32_t triggerMaxDuration = 0; void hwHandleShaftSignal(trigger_event_e signal, efitick_t timestamp) { ScopePerf perf(PE::HandleShaftSignal); + // Don't accept trigger input in case of some problems + if (!engine->limpManager.allowTriggerInput()) { + return; + } + #if VR_HW_CHECK_MODE // some boards do not have hardware VR input LEDs which makes such boards harder to validate // from experience we know that assembly mistakes happen and quality control is required diff --git a/firmware/hw_layer/digital_input/trigger/trigger_input_exti.cpp b/firmware/hw_layer/digital_input/trigger/trigger_input_exti.cpp index 52835c62de..fc944f031e 100644 --- a/firmware/hw_layer/digital_input/trigger/trigger_input_exti.cpp +++ b/firmware/hw_layer/digital_input/trigger/trigger_input_exti.cpp @@ -37,8 +37,6 @@ static void shaft_callback(void *arg) { // todo: support for 3rd trigger input channel // todo: start using real event time from HW event, not just software timer? - if (hasFirmwareErrorFlag) - return; bool isPrimary = pal_line == primary_line; if (!isPrimary && !TRIGGER_WAVEFORM(needSecondTriggerInput)) { diff --git a/firmware/hw_layer/digital_input/trigger/trigger_input_icu.cpp b/firmware/hw_layer/digital_input/trigger/trigger_input_icu.cpp index b3a5eaf517..4f37e67d21 100644 --- a/firmware/hw_layer/digital_input/trigger/trigger_input_icu.cpp +++ b/firmware/hw_layer/digital_input/trigger/trigger_input_icu.cpp @@ -65,8 +65,7 @@ static void shaftRisingCallback(bool isPrimary) { } icuRisingCallbackCounter++; // todo: support for 3rd trigger input channel - if (hasFirmwareErrorFlag) - return; + if (!isPrimary && !TRIGGER_WAVEFORM(needSecondTriggerInput)) { return; } @@ -86,8 +85,6 @@ static void shaftFallingCallback(bool isPrimary) { icuFallingCallbackCounter++; - if (hasFirmwareErrorFlag) - return; if (!isPrimary && !TRIGGER_WAVEFORM(needSecondTriggerInput)) { return; } diff --git a/firmware/hw_layer/hardware.cpp b/firmware/hw_layer/hardware.cpp index d0b7d93674..9f857402d3 100644 --- a/firmware/hw_layer/hardware.cpp +++ b/firmware/hw_layer/hardware.cpp @@ -71,8 +71,6 @@ EXTERN_ENGINE; -extern bool hasFirmwareErrorFlag; - #if HAL_USE_SPI extern bool isSpiInitialized[5]; diff --git a/firmware/hw_layer/trigger_input_adc.cpp b/firmware/hw_layer/trigger_input_adc.cpp index 51176c9758..c3a3410d1d 100644 --- a/firmware/hw_layer/trigger_input_adc.cpp +++ b/firmware/hw_layer/trigger_input_adc.cpp @@ -20,9 +20,6 @@ extern "C" void toggleLed(int led, int mode); #define BOARD_MOD1_PORT GPIOD #define BOARD_MOD1_PIN 5 - -extern bool hasFirmwareErrorFlag; - EXTERN_ENGINE ; static Logging *logger; @@ -116,8 +113,6 @@ static void onTriggerChanged(efitick_t stamp, bool isPrimary, bool isRising) { #if 1 // todo: support for 3rd trigger input channel // todo: start using real event time from HW event, not just software timer? - if (hasFirmwareErrorFlag) - return; if (!isPrimary && !TRIGGER_WAVEFORM(needSecondTriggerInput)) { return;