From ba0efda2aaa0b0f1956194d1f776d50ae8b8f848 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Sun, 23 Apr 2023 01:57:07 +0300 Subject: [PATCH] hal: gpio: don't trigger furi_check on furi_hal_gpio_add_int_callback() with same parameters --- firmware/targets/f7/furi_hal/furi_hal_gpio.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/firmware/targets/f7/furi_hal/furi_hal_gpio.c b/firmware/targets/f7/furi_hal/furi_hal_gpio.c index e8318afcf..c0e409775 100644 --- a/firmware/targets/f7/furi_hal/furi_hal_gpio.c +++ b/firmware/targets/f7/furi_hal/furi_hal_gpio.c @@ -178,10 +178,13 @@ void furi_hal_gpio_add_int_callback(const GpioPin* gpio, GpioExtiCallback cb, vo FURI_CRITICAL_ENTER(); uint8_t pin_num = furi_hal_gpio_get_pin_num(gpio); - furi_assert(gpio_interrupt[pin_num].callback == NULL); - gpio_interrupt[pin_num].callback = cb; - gpio_interrupt[pin_num].context = ctx; - gpio_interrupt[pin_num].ready = true; + volatile GpioInterrupt* interrupt = &gpio_interrupt[pin_num]; + furi_check( + (interrupt->callback == NULL) || + ((interrupt->callback == cb) && (interrupt->context == ctx))); + interrupt->callback = cb; + interrupt->context = ctx; + interrupt->ready = true; FURI_CRITICAL_EXIT(); }