From 6fee1a5f9dec681f5f616b6c60fe8c870a3502cf Mon Sep 17 00:00:00 2001 From: rusefi Date: Tue, 12 Nov 2019 00:25:10 -0500 Subject: [PATCH] refactoring: time to unify digital pin API --- firmware/hw_layer/trigger_input.cpp | 4 ++-- firmware/hw_layer/trigger_input.h | 2 +- firmware/hw_layer/trigger_input_exti.cpp | 4 +++- firmware/hw_layer/trigger_input_icu.cpp | 8 +++++++- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/firmware/hw_layer/trigger_input.cpp b/firmware/hw_layer/trigger_input.cpp index ec10a36a03..3bf42ff9e2 100644 --- a/firmware/hw_layer/trigger_input.cpp +++ b/firmware/hw_layer/trigger_input.cpp @@ -30,13 +30,13 @@ void startTriggerInputPins(void) { for (int i = 0; i < TRIGGER_SUPPORTED_CHANNELS; i++) { if (isConfigurationChanged(bc.triggerInputPins[i])) { const char * msg = (i == 0 ? "trigger#1" : (i == 1 ? "trigger#2" : "trigger#3")); - turnOnTriggerInputPin(msg, CONFIGB(triggerInputPins)[i], true); + turnOnTriggerInputPin(msg, i, true); } } for (int i = 0; i < CAM_INPUTS_COUNT; i++) { if (isConfigurationChanged(camInputs[i])) { - turnOnTriggerInputPin("cam", engineConfiguration->camInputs[i], false); + turnOnTriggerInputPin("cam", i, false); } } diff --git a/firmware/hw_layer/trigger_input.h b/firmware/hw_layer/trigger_input.h index cf7c44422c..2d087d4729 100644 --- a/firmware/hw_layer/trigger_input.h +++ b/firmware/hw_layer/trigger_input.h @@ -22,6 +22,6 @@ void startTriggerInputPins(void); void stopTriggerInputPins(void); void setPrimaryChannel(brain_pin_e brainPin); void turnOffTriggerInputPin(brain_pin_e brainPin); -int turnOnTriggerInputPin(const char *msg, brain_pin_e brainPin, bool isVvtShaft); +int turnOnTriggerInputPin(const char *msg, int index, bool isVvtShaft); #endif /* CRANK_INPUT_H_ */ diff --git a/firmware/hw_layer/trigger_input_exti.cpp b/firmware/hw_layer/trigger_input_exti.cpp index 493a153725..5198a79c5e 100644 --- a/firmware/hw_layer/trigger_input_exti.cpp +++ b/firmware/hw_layer/trigger_input_exti.cpp @@ -64,7 +64,9 @@ static void cam_callback(void *arg) { } } -int turnOnTriggerInputPin(const char *msg, brain_pin_e brainPin, bool isVvtShaft) { +int turnOnTriggerInputPin(const char *msg, int index, bool isVvtShaft) { + brain_pin_e brainPin = isVvtShaft ? engineConfiguration->camInputs[index] : CONFIGB(triggerInputPins)[index]; + scheduleMsg(logger, "turnOnTriggerInputPin(PAL) %s %s", msg, hwPortname(brainPin)); /* TODO: diff --git a/firmware/hw_layer/trigger_input_icu.cpp b/firmware/hw_layer/trigger_input_icu.cpp index bfdf516bd5..4c717803df 100644 --- a/firmware/hw_layer/trigger_input_icu.cpp +++ b/firmware/hw_layer/trigger_input_icu.cpp @@ -105,13 +105,18 @@ static ICUConfig cam_icucfg = { ICU_INPUT_ACTIVE_LOW, ICU_CHANNEL_1, 0}; -int turnOnTriggerInputPin(const char *msg, brain_pin_e brainPin, bool isVvtShaft) { +int turnOnTriggerInputPin(const char *msg, int index, bool isVvtShaft) { + + brain_pin_e brainPin = isVvtShaft ? engineConfiguration->camInputs[index] : CONFIGB(triggerInputPins)[index]; + + ICUConfig *icucfg; if (brainPin == GPIO_UNASSIGNED) { return -1; } + //digital_input_s* input = startDigitalCapture("trigger", brainPin, true); if (isVvtShaft) { icucfg = &shaft_icucfg; } else { @@ -148,6 +153,7 @@ int turnOnTriggerInputPin(const char *msg, brain_pin_e brainPin, bool isVvtShaft } void turnOffTriggerInputPin(brain_pin_e brainPin) { + ICUDriver *driver = getInputCaptureDriver("trigger_off", brainPin); if (driver != NULL) { icuDisableNotifications(driver);