[LR11x0] Generalize IRQ checks

This commit is contained in:
StevenCellist 2024-08-16 00:04:34 +02:00
parent 19ec9da281
commit 0eb987a83c
2 changed files with 33 additions and 8 deletions

View file

@ -1328,10 +1328,35 @@ int16_t LR11x0::irqRxDoneRxTimeout(uint32_t &irqFlags, uint32_t &irqMask) {
return(RADIOLIB_ERR_NONE); return(RADIOLIB_ERR_NONE);
} }
bool LR11x0::isRxTimeout() { bool LR11x0::isIrqSet(uint8_t irq) {
uint32_t irq = getIrqStatus(); uint16_t flags = getIrqStatus();
bool rxTimedOut = irq & RADIOLIB_LR11X0_IRQ_TIMEOUT; switch(irq) {
return(rxTimedOut); case RADIOLIB_IRQ_TX_DONE:
return(flags & RADIOLIB_LR11X0_IRQ_TX_DONE);
case RADIOLIB_IRQ_RX_DONE:
return(flags & RADIOLIB_LR11X0_IRQ_RX_DONE);
case RADIOLIB_IRQ_PREAMBLE_DETECTED:
return(flags & RADIOLIB_LR11X0_IRQ_PREAMBLE_DETECTED);
case RADIOLIB_IRQ_SYNC_WORD_VALID:
return(flags & RADIOLIB_LR11X0_IRQ_SYNC_WORD_HEADER_VALID);
case RADIOLIB_IRQ_HEADER_VALID:
return(flags & RADIOLIB_LR11X0_IRQ_SYNC_WORD_HEADER_VALID);
case RADIOLIB_IRQ_HEADER_ERR:
return(flags & RADIOLIB_LR11X0_IRQ_HEADER_ERR);
case RADIOLIB_IRQ_CRC_ERR:
return(flags & RADIOLIB_LR11X0_IRQ_CRC_ERR);
case RADIOLIB_IRQ_CAD_DONE:
return(flags & RADIOLIB_LR11X0_IRQ_CAD_DONE);
case RADIOLIB_IRQ_CAD_DETECTED:
return(flags & RADIOLIB_LR11X0_IRQ_CAD_DETECTED);
case RADIOLIB_IRQ_TIMEOUT:
return(flags & RADIOLIB_LR11X0_IRQ_TIMEOUT);
case RADIOLIB_IRQ_LR_FHSS_HOP:
return(flags & RADIOLIB_LR11X0_IRQ_LR_FHSS_HOP);
default:
return(false);
}
return(false);
} }
uint8_t LR11x0::randomByte() { uint8_t LR11x0::randomByte() {

View file

@ -1229,10 +1229,10 @@ class LR11x0: public PhysicalLayer {
int16_t irqRxDoneRxTimeout(uint32_t &irqFlags, uint32_t &irqMask) override; int16_t irqRxDoneRxTimeout(uint32_t &irqFlags, uint32_t &irqMask) override;
/*! /*!
\brief Check whether the IRQ bit for RxTimeout is set \brief Check whether a specific IRQ bit is set (e.g. RxTimeout, CadDone).
\returns Whether RxTimeout IRQ is set \returns Whether requested IRQ is set.
*/ */
bool isRxTimeout() override; bool isIrqSet(uint8_t irq) override;
/*! /*!
\brief Get one truly random byte from RSSI noise. \brief Get one truly random byte from RSSI noise.