diff --git a/src/modules/CC1101/CC1101.cpp b/src/modules/CC1101/CC1101.cpp index d0770ef0..d9d7e048 100644 --- a/src/modules/CC1101/CC1101.cpp +++ b/src/modules/CC1101/CC1101.cpp @@ -191,6 +191,10 @@ void CC1101::setGdo0Action(void (*func)(void), uint8_t dir) { attachInterrupt(digitalPinToInterrupt(_mod->getIrq()), func, dir); } +void CC1101::clearGdo0Action() { + detachInterrupt(digitalPinToInterrupt(_mod->getIrq())); +} + void CC1101::setGdo2Action(void (*func)(void), uint8_t dir) { if(_mod->getGpio() != RADIOLIB_PIN_UNUSED) { return; @@ -199,6 +203,13 @@ void CC1101::setGdo2Action(void (*func)(void), uint8_t dir) { attachInterrupt(digitalPinToInterrupt(_mod->getGpio()), func, dir); } +void CC1101::clearGdo2Action() { + if(_mod->getGpio() != RADIOLIB_PIN_UNUSED) { + return; + } + detachInterrupt(digitalPinToInterrupt(_mod->getGpio())); +} + int16_t CC1101::startTransmit(uint8_t* data, size_t len, uint8_t addr) { // check packet length if(len > CC1101_MAX_PACKET_LENGTH) { diff --git a/src/modules/CC1101/CC1101.h b/src/modules/CC1101/CC1101.h index f349da20..0568de8f 100644 --- a/src/modules/CC1101/CC1101.h +++ b/src/modules/CC1101/CC1101.h @@ -601,6 +601,11 @@ class CC1101: public PhysicalLayer { */ void setGdo0Action(void (*func)(void), uint8_t dir = FALLING); + /*! + \brief Clears interrupt service routine to call when GDO0 activates. + */ + void clearGdo0Action(); + /*! \brief Sets interrupt service routine to call when GDO2 activates. @@ -610,6 +615,11 @@ class CC1101: public PhysicalLayer { */ void setGdo2Action(void (*func)(void), uint8_t dir = FALLING); + /*! + \brief Clears interrupt service routine to call when GDO0 activates. + */ + void clearGdo2Action(); + /*! \brief Interrupt-driven binary transmit method. Overloads for string-based transmissions are implemented in PhysicalLayer.