From d116101e1adfc1829c92f03ff30704dcbc192762 Mon Sep 17 00:00:00 2001 From: rusefillc Date: Sun, 31 Jan 2021 22:10:10 -0500 Subject: [PATCH] trigger: exti: callback parameter is now index --- .../digital_input/digital_input_exti.cpp | 2 +- .../digital_input/trigger/trigger_input.cpp | 9 +------ .../trigger/trigger_input_exti.cpp | 25 +++++++++++-------- .../trigger/trigger_input_icu.cpp | 4 --- 4 files changed, 17 insertions(+), 23 deletions(-) diff --git a/firmware/hw_layer/digital_input/digital_input_exti.cpp b/firmware/hw_layer/digital_input/digital_input_exti.cpp index 2b7849275c..efa8c6b5f6 100644 --- a/firmware/hw_layer/digital_input/digital_input_exti.cpp +++ b/firmware/hw_layer/digital_input/digital_input_exti.cpp @@ -2,7 +2,7 @@ * digital_input_exti.cpp * * Created on: Dec 18, 2018 - * @author Andrey Belomutskiy, (c) 2012-2020 + * @author Andrey Belomutskiy, (c) 2012-2021 */ #include "global.h" diff --git a/firmware/hw_layer/digital_input/trigger/trigger_input.cpp b/firmware/hw_layer/digital_input/trigger/trigger_input.cpp index 24d4da6df7..0037fb4fbf 100644 --- a/firmware/hw_layer/digital_input/trigger/trigger_input.cpp +++ b/firmware/hw_layer/digital_input/trigger/trigger_input.cpp @@ -2,7 +2,7 @@ * @file trigger_input.cpp * * @date Nov 11, 2019 - * @author Andrey Belomutskiy, (c) 2012-2020 + * @author Andrey Belomutskiy, (c) 2012-2021 */ #include "global.h" @@ -22,7 +22,6 @@ EXTERN_ENGINE; void icuTriggerTurnOnInputPins(Logging *sharedLogger); int icuTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft); void icuTriggerTurnOffInputPin(brain_pin_e brainPin); - void icuTriggerSetPrimaryChannel(brain_pin_e brainPin); #else #define icuTriggerTurnOnInputPins(sharedLogger) ((void)0) int icuTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft) { @@ -33,14 +32,12 @@ EXTERN_ENGINE; return -2; } #define icuTriggerTurnOffInputPin(brainPin) ((void)0) - #define icuTriggerSetPrimaryChannel(brainPin) ((void)0) #endif #if (HAL_TRIGGER_USE_PAL == TRUE) void extiTriggerTurnOnInputPins(Logging *sharedLogger); int extiTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft); void extiTriggerTurnOffInputPin(brain_pin_e brainPin); - void extiTriggerSetPrimaryChannel(brain_pin_e brainPin); #else #define extiTriggerTurnOnInputPins(sharedLogger) ((void)0) int extiTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft) { @@ -51,7 +48,6 @@ EXTERN_ENGINE; return -2; } #define extiTriggerTurnOffInputPin(brainPin) ((void)0) - #define extiTriggerSetPrimaryChannel(brainPin) ((void)0) #endif enum triggerType { @@ -163,9 +159,6 @@ void startTriggerInputPins(void) { turnOnTriggerInputPin("Cam", i, false); } } - - icuTriggerSetPrimaryChannel(CONFIG(triggerInputPins)[0]); - extiTriggerSetPrimaryChannel(CONFIG(triggerInputPins)[0]); } void turnOnTriggerInputPins(Logging *sharedLogger) { 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 fc944f031e..4ce4cb85bf 100644 --- a/firmware/hw_layer/digital_input/trigger/trigger_input_exti.cpp +++ b/firmware/hw_layer/digital_input/trigger/trigger_input_exti.cpp @@ -7,7 +7,7 @@ * see digital_input_icu.cp * * @date Dec 30, 2012 - * @author Andrey Belomutskiy, (c) 2012-2020 + * @author Andrey Belomutskiy, (c) 2012-2021 */ #include "global.h" @@ -24,7 +24,9 @@ static Logging *logger; EXTERN_ENGINE; -static ioline_t primary_line; + +static ioline_t shaftLines[TRIGGER_SUPPORTED_CHANNELS]; +static ioline_t camLines[CAM_INPUTS_COUNT]; static void shaft_callback(void *arg) { // do the time sensitive things as early as possible! @@ -32,13 +34,14 @@ static void shaft_callback(void *arg) { if (!engine->hwTriggerInputEnabled) { return; } - ioline_t pal_line = (ioline_t)arg; + int index = (int)arg; + ioline_t pal_line = shaftLines[index]; bool rise = (palReadLine(pal_line) == PAL_HIGH); // todo: support for 3rd trigger input channel // todo: start using real event time from HW event, not just software timer? - bool isPrimary = pal_line == primary_line; + bool isPrimary = index == 0; if (!isPrimary && !TRIGGER_WAVEFORM(needSecondTriggerInput)) { return; } @@ -64,7 +67,8 @@ static void cam_callback(void *arg) { return; } - ioline_t pal_line = (ioline_t)arg; + int index = (int)arg; + ioline_t pal_line = camLines[index]; bool rise = (palReadLine(pal_line) == PAL_HIGH); @@ -88,7 +92,12 @@ int extiTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft) { * * do not set to both edges if we need only one * * simplify callback in case of one edge */ ioline_t pal_line = PAL_LINE(getHwPort("trg", brainPin), getHwPin("trg", brainPin)); - efiExtiEnablePin(msg, brainPin, PAL_EVENT_MODE_BOTH_EDGES, isTriggerShaft ? shaft_callback : cam_callback, (void *)pal_line); + if (isTriggerShaft) { + shaftLines[index] = pal_line; + } else { + camLines[index] = pal_line; + } + efiExtiEnablePin(msg, brainPin, PAL_EVENT_MODE_BOTH_EDGES, isTriggerShaft ? shaft_callback : cam_callback, (void *)index); return 0; } @@ -97,10 +106,6 @@ void extiTriggerTurnOffInputPin(brain_pin_e brainPin) { efiExtiDisablePin(brainPin); } -void extiTriggerSetPrimaryChannel(brain_pin_e brainPin) { - primary_line = PAL_LINE(getHwPort("trg", brainPin), getHwPin("trg", brainPin)); -} - void extiTriggerTurnOnInputPins(Logging *sharedLogger) { logger = sharedLogger; } 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 d733dfe581..133de59445 100644 --- a/firmware/hw_layer/digital_input/trigger/trigger_input_icu.cpp +++ b/firmware/hw_layer/digital_input/trigger/trigger_input_icu.cpp @@ -128,10 +128,6 @@ void icuTriggerTurnOffInputPin(brain_pin_e brainPin) { stopDigitalCapture("trigger", brainPin); } -void icuTriggerSetPrimaryChannel(brain_pin_e brainPin) { - (void)brainPin; -} - void icuTriggerTurnOnInputPins(Logging *sharedLogger) { logger = sharedLogger; }