diff --git a/src/shared/radio/SX1278/SX1278Common.cpp b/src/shared/radio/SX1278/SX1278Common.cpp index a815363c73d24140323201f86528f45b2262e675..cdd1675044ad17cfdc71b011910b5b4000e4a25f 100644 --- a/src/shared/radio/SX1278/SX1278Common.cpp +++ b/src/shared/radio/SX1278/SX1278Common.cpp @@ -45,10 +45,18 @@ void SX1278Common::handleDioIRQ() } } -void SX1278Common::enableIrqs() { - enableExternalInterrupt(dio0.getPort(), dio0.getNumber(), InterruptTrigger::RISING_EDGE); - enableExternalInterrupt(dio1.getPort(), dio1.getNumber(), InterruptTrigger::RISING_EDGE); - enableExternalInterrupt(dio3.getPort(), dio3.getNumber(), InterruptTrigger::RISING_EDGE); +void SX1278Common::enableIrqs() +{ + enableExternalInterrupt(dio0, InterruptTrigger::RISING_EDGE); + enableExternalInterrupt(dio1, InterruptTrigger::RISING_EDGE); + enableExternalInterrupt(dio3, InterruptTrigger::RISING_EDGE); +} + +void SX1278Common::disableIrqs() +{ + disableExternalInterrupt(dio0); + disableExternalInterrupt(dio1); + disableExternalInterrupt(dio3); } void SX1278Common::setDefaultMode(Mode mode, DioMapping mapping, @@ -236,7 +244,7 @@ void SX1278Common::enterMode(Mode mode, DioMapping mapping, // Change DIO1 interrupt kind if (dio1_trigger != state.dio1_trigger) { - enableExternalInterrupt(dio1.getPort(), dio1.getNumber(), dio1_trigger); + changeInterruptTrigger(dio1, dio1_trigger); state.dio1_trigger = dio1_trigger; } diff --git a/src/shared/radio/SX1278/SX1278Common.h b/src/shared/radio/SX1278/SX1278Common.h index 2ac8cc60748473ad249192fcea54b43d77351491..fb142ae91a059c0d2f5b8237aedae394de027f8e 100644 --- a/src/shared/radio/SX1278/SX1278Common.h +++ b/src/shared/radio/SX1278/SX1278Common.h @@ -136,6 +136,8 @@ protected: enableIrqs(); } + ~SX1278Common() { disableIrqs(); } + /** * @brief RAII scoped bus lock guard. */ @@ -217,6 +219,7 @@ protected: private: void enableIrqs(); + void disableIrqs(); void waitForIrqInner(LockMode &guard, bool unlock);