From 97204f089b8fd234068a426b751aebb79a3ea0f5 Mon Sep 17 00:00:00 2001 From: "Morgan 'ARR\\!' Allen" Date: Wed, 6 Sep 2023 16:45:20 -0700 Subject: [PATCH] cleanup of IRQ pin setting --- main/esp32-lora.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/main/esp32-lora.c b/main/esp32-lora.c index a5d9335..a6c14b7 100644 --- a/main/esp32-lora.c +++ b/main/esp32-lora.c @@ -567,17 +567,21 @@ uint8_t lora32_init(lora32_cfg_t *lora) { // TODO check at least one DIOx pin is not NULL + uint64_t pin_bit_mask = 0; + if(lora->dio0 > -1) + pin_bit_mask |= (1 << lora->dio0); + if(lora->dio1 > -1) + pin_bit_mask |= (1 << lora->dio1); + if(lora->dio2 > -1) + pin_bit_mask |= (1 << lora->dio2); + io_conf.intr_type = GPIO_PIN_INTR_POSEDGE; - io_conf.pin_bit_mask = ((1ULL << lora->dio0) | (1ULL << lora->dio1) | (1ULL << lora->dio2)); + io_conf.pin_bit_mask = pin_bit_mask; io_conf.mode = GPIO_MODE_INPUT; - io_conf.pull_down_en = 0; + io_conf.pull_down_en = 1; io_conf.pull_up_en = 0; gpio_config(&io_conf); - gpio_set_intr_type(lora->dio0, GPIO_INTR_POSEDGE); - gpio_set_intr_type(lora->dio1, GPIO_INTR_POSEDGE); - gpio_set_intr_type(lora->dio2, GPIO_INTR_POSEDGE); - // the DIO interrupt handling for every device is done from one task if(dio_task_handle == NULL) { ESP_LOGV(TAG, "Setting callback handler and ISR service"); @@ -603,5 +607,5 @@ uint8_t lora32_init(lora32_cfg_t *lora) { gpio_isr_handler_add(lora->dio2, lora32_on_dio, (void*)lora); } - return 1; + return ESP_OK; };