From f4cd6de86d673b6086e067912191afa82990279d Mon Sep 17 00:00:00 2001 From: Andrey Gusakov Date: Tue, 5 Mar 2024 23:30:08 +0300 Subject: [PATCH] efiExtiEnablePin: return status to caller --- .../digital_input/digital_input_exti.cpp | 27 +++++++++++-------- .../digital_input/digital_input_exti.h | 2 +- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/firmware/hw_layer/digital_input/digital_input_exti.cpp b/firmware/hw_layer/digital_input/digital_input_exti.cpp index 988bf9052d..6eea733501 100644 --- a/firmware/hw_layer/digital_input/digital_input_exti.cpp +++ b/firmware/hw_layer/digital_input/digital_input_exti.cpp @@ -35,24 +35,24 @@ struct ExtiChannel static ExtiChannel channels[16]; // EXT is not able to give you the front direction but you could read the pin in the callback. -void efiExtiEnablePin(const char *msg, brain_pin_e brainPin, uint32_t mode, ExtiCallback cb, void *cb_data) { +int efiExtiEnablePin(const char *msg, brain_pin_e brainPin, uint32_t mode, ExtiCallback cb, void *cb_data) { /* paranoid check, in case of Gpio::Unassigned getHwPort will return NULL * and we will fail on next check */ if (!isBrainPinValid(brainPin)) { - return; + return -1; } - criticalAssertVoid(msg, "efiExtiEnablePin msg must not be null"); + criticalAssert(msg, "efiExtiEnablePin msg must not be null", -1); ioportid_t port = getHwPort(msg, brainPin); if (port == NULL) { - return; + return -1; } bool wasUsed = brain_pin_markUsed(brainPin, msg); if (wasUsed) { // error condition we shall bail - return; + return -1; } int index = getHwPin(msg, brainPin); @@ -62,11 +62,11 @@ void efiExtiEnablePin(const char *msg, brain_pin_e brainPin, uint32_t mode, Exti /* is this index already used? */ if (channel.Callback) { firmwareError(ObdCode::CUSTOM_ERR_PIN_ALREADY_USED_2, "%s: pin %s/index %d: exti index already used by %s", - msg, - hwPortname(brainPin), - index, - channel.Name); - return; + msg, + hwPortname(brainPin), + index, + channel.Name); + return -1; } channel.Callback = cb; @@ -75,6 +75,8 @@ void efiExtiEnablePin(const char *msg, brain_pin_e brainPin, uint32_t mode, Exti ioline_t line = PAL_LINE(port, index); palEnableLineEvent(line, mode); + + return 0; } void efiExtiDisablePin(brain_pin_e brainPin) @@ -256,7 +258,10 @@ void efiExtiInit() { criticalError("exti not supported"); } -void efiExtiEnablePin(const char *, brain_pin_e, uint32_t, ExtiCallback, void *) { } +int efiExtiEnablePin(const char *, brain_pin_e, uint32_t, ExtiCallback, void *) +{ + return 0; +} void efiExtiDisablePin(brain_pin_e) { } uint8_t getExtiOverflowCounter() { diff --git a/firmware/hw_layer/digital_input/digital_input_exti.h b/firmware/hw_layer/digital_input/digital_input_exti.h index ce2fb6b69c..3f615f22a3 100644 --- a/firmware/hw_layer/digital_input/digital_input_exti.h +++ b/firmware/hw_layer/digital_input/digital_input_exti.h @@ -12,7 +12,7 @@ using ExtiCallback = void(*)(void*, efitick_t); void efiExtiInit(); -void efiExtiEnablePin(const char *msg, brain_pin_e pin, uint32_t mode, ExtiCallback cb, void *cb_data); +int efiExtiEnablePin(const char *msg, brain_pin_e pin, uint32_t mode, ExtiCallback cb, void *cb_data); void efiExtiDisablePin(brain_pin_e brainPin); uint8_t getExtiOverflowCounter(); #endif /* HAL_USE_PAL */