diff --git a/libraries/radio/SX127x/sx1272/sx1272-hal.cpp b/libraries/radio/SX127x/sx1272/sx1272-hal.cpp index 366e6818cd..87b3abd640 100644 --- a/libraries/radio/SX127x/sx1272/sx1272-hal.cpp +++ b/libraries/radio/SX127x/sx1272/sx1272-hal.cpp @@ -58,6 +58,12 @@ SX1272MB1xAS::SX1272MB1xAS( void ( *txDone )( ), void ( *txTimeout ) ( ), void ( this->settings.State = IDLE ; } + +SX1272MB1xAS::~SX1272MB1xAS ( ) +{ + IoIrqDeInit( ); +}; + //------------------------------------------------------------------------- // Board relative functions //------------------------------------------------------------------------- @@ -107,6 +113,15 @@ void SX1272MB1xAS::IoIrqInit( DioIrqHandler *irqHandlers ) dio4.rise( this, static_cast< TriggerMB1xASSX1272 > ( irqHandlers[4] ) ); } +void SX1272MB1xAS::IoIrqDeInit( ) +{ + dio0.disable_irq(); + dio1.disable_irq(); + dio2.disable_irq(); + dio3.disable_irq(); + dio4.disable_irq(); +} + void SX1272MB1xAS::IoDeInit( void ) { //nothing diff --git a/libraries/radio/SX127x/sx1272/sx1272-hal.h b/libraries/radio/SX127x/sx1272/sx1272-hal.h index 77cc2703de..e17c803b6e 100644 --- a/libraries/radio/SX127x/sx1272/sx1272-hal.h +++ b/libraries/radio/SX127x/sx1272/sx1272-hal.h @@ -37,7 +37,7 @@ public: PinName dio0, PinName dio1, PinName dio2, PinName dio3, PinName dio4, PinName dio5, PinName antSwitch ); - virtual ~SX1272MB1xAS( ) { }; + virtual ~SX1272MB1xAS( ); protected: /*! @@ -62,6 +62,11 @@ public: */ virtual void IoIrqInit( DioIrqHandler *irqHandlers ); + /*! + * @brief Deinitializes DIO IRQ handlers (switches off interrupts) + */ + virtual void IoIrqDeInit( void ); + /*! * @brief De-initializes the radio I/Os pins interface. *