diff --git a/firmware/hw_layer/digital_input_exti.cpp b/firmware/hw_layer/digital_input_exti.cpp index 6656f3b2bb..dfa9d71da7 100644 --- a/firmware/hw_layer/digital_input_exti.cpp +++ b/firmware/hw_layer/digital_input_exti.cpp @@ -23,23 +23,23 @@ static ioportmask_t ext_used = 0; // EXT is not able to give you the front direction but you could read the pin in the callback. -int efiExtiEnablePin(const char *msg, brain_pin_e brainPin, uint32_t mode, palcallback_t cb, void *cb_data) { +void efiExtiEnablePin(const char *msg, brain_pin_e brainPin, uint32_t mode, palcallback_t cb, void *cb_data) { /* paranoid check, in case of GPIO_UNASSIGNED getHwPort will return NULL * and we will fail on next check */ if (brainPin == GPIO_UNASSIGNED) - return -1; + return; ioportid_t port = getHwPort(msg, brainPin); if (port == NULL) - return -1; + return; int index = getHwPin(msg, brainPin); /* is this index already used? */ if (ext_used & PAL_PORT_BIT(index)) { firmwareError(CUSTOM_ERR_PIN_ALREADY_USED_2, "%s: pin %d: exti index already used", msg, brainPin); - return -1; + return; } ioline_t line = PAL_LINE(port, index); @@ -48,8 +48,6 @@ int efiExtiEnablePin(const char *msg, brain_pin_e brainPin, uint32_t mode, palca /* mark used */ ext_used |= PAL_PORT_BIT(index); - - return 0; } void efiExtiDisablePin(brain_pin_e brainPin) diff --git a/firmware/hw_layer/digital_input_exti.h b/firmware/hw_layer/digital_input_exti.h index cc4112928c..6d4ab49f07 100644 --- a/firmware/hw_layer/digital_input_exti.h +++ b/firmware/hw_layer/digital_input_exti.h @@ -10,6 +10,6 @@ #include "digital_input.h" #if HAL_USE_PAL -int efiExtiEnablePin(const char *msg, brain_pin_e pin, uint32_t mode, palcallback_t cb, void *cb_data); +void efiExtiEnablePin(const char *msg, brain_pin_e pin, uint32_t mode, palcallback_t cb, void *cb_data); void efiExtiDisablePin(brain_pin_e brainPin); #endif /* HAL_USE_PAL */ diff --git a/firmware/hw_layer/digital_input_icu.cpp b/firmware/hw_layer/digital_input_icu.cpp index 73fb062534..f21370088f 100644 --- a/firmware/hw_layer/digital_input_icu.cpp +++ b/firmware/hw_layer/digital_input_icu.cpp @@ -221,6 +221,7 @@ void stopDigitalCapture(const char *msg, brain_pin_e brainPin) { if (brainPin == GPIO_UNASSIGNED) { return; } + brain_pin_markUnused(brainPin); ICUDriver *driver = getInputCaptureDriver(msg, brainPin); if (driver == NULL) { diff --git a/firmware/hw_layer/trigger_input.cpp b/firmware/hw_layer/trigger_input.cpp index b209dfc7b8..ac7efb9541 100644 --- a/firmware/hw_layer/trigger_input.cpp +++ b/firmware/hw_layer/trigger_input.cpp @@ -82,7 +82,6 @@ static int turnOnTriggerInputPin(const char *msg, int index, bool isTriggerShaft shaftTriggerType[index] = TRIGGER_ICU; else camTriggerType[index] = TRIGGER_ICU; - brain_pin_markUsed(brainPin, msg); return 0; } #endif @@ -93,7 +92,6 @@ static int turnOnTriggerInputPin(const char *msg, int index, bool isTriggerShaft shaftTriggerType[index] = TRIGGER_EXTI; else camTriggerType[index] = TRIGGER_EXTI; - brain_pin_markUsed(brainPin, msg); return 0; } @@ -125,7 +123,6 @@ static void turnOffTriggerInputPin(int index, bool isTriggerShaft) { camTriggerType[index] = TRIGGER_NONE; } - brain_pin_markUnused(brainPin); } /*==========================================================================*/ diff --git a/firmware/hw_layer/trigger_input_exti.cpp b/firmware/hw_layer/trigger_input_exti.cpp index c36b6bc5c1..981446029f 100644 --- a/firmware/hw_layer/trigger_input_exti.cpp +++ b/firmware/hw_layer/trigger_input_exti.cpp @@ -76,7 +76,6 @@ static void cam_callback(void *arg) { /*==========================================================================*/ int extiTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft) { - int ret; brain_pin_e brainPin = isTriggerShaft ? CONFIG(triggerInputPins)[index] : engineConfiguration->camInputs[index]; scheduleMsg(logger, "extiTriggerTurnOnInputPin %s %s", msg, hwPortname(brainPin)); @@ -84,10 +83,8 @@ int extiTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft) { /* TODO: * * 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(msg, brainPin), getHwPin(msg, brainPin)); - ret = efiExtiEnablePin(msg, brainPin, PAL_EVENT_MODE_BOTH_EDGES, isTriggerShaft ? shaft_callback : cam_callback, (void *)pal_line); - if (ret) - return ret; + 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); return 0; }