[PHY, modules, LoRaWAN] Integrate feedback
This commit is contained in:
parent
2717ef5c21
commit
0bc0e3d9c8
11 changed files with 35 additions and 35 deletions
|
@ -1328,7 +1328,7 @@ int16_t LR11x0::irqRxDoneRxTimeout(uint32_t &irqFlags, uint32_t &irqMask) {
|
|||
return(RADIOLIB_ERR_NONE);
|
||||
}
|
||||
|
||||
bool LR11x0::isIrqSet(uint8_t irq) {
|
||||
int16_t LR11x0::checkIrq(uint8_t irq) {
|
||||
uint16_t flags = getIrqStatus();
|
||||
switch(irq) {
|
||||
case RADIOLIB_IRQ_TX_DONE:
|
||||
|
@ -1351,12 +1351,10 @@ bool LR11x0::isIrqSet(uint8_t irq) {
|
|||
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(RADIOLIB_ERR_UNSUPPORTED);
|
||||
}
|
||||
return(false);
|
||||
return(RADIOLIB_ERR_UNSUPPORTED);
|
||||
}
|
||||
|
||||
uint8_t LR11x0::randomByte() {
|
||||
|
|
|
@ -1232,7 +1232,7 @@ class LR11x0: public PhysicalLayer {
|
|||
\brief Check whether a specific IRQ bit is set (e.g. RxTimeout, CadDone).
|
||||
\returns Whether requested IRQ is set.
|
||||
*/
|
||||
bool isIrqSet(uint8_t irq) override;
|
||||
int16_t checkIrq(uint8_t irq) override;
|
||||
|
||||
/*!
|
||||
\brief Get one truly random byte from RSSI noise.
|
||||
|
|
|
@ -1466,7 +1466,7 @@ int16_t SX126x::irqRxDoneRxTimeout(uint32_t &irqFlags, uint32_t &irqMask) {
|
|||
return(RADIOLIB_ERR_NONE);
|
||||
}
|
||||
|
||||
bool SX126x::isIrqSet(uint8_t irq) {
|
||||
int16_t SX126x::checkIrq(uint8_t irq) {
|
||||
uint16_t flags = getIrqStatus();
|
||||
switch(irq) {
|
||||
case RADIOLIB_IRQ_TX_DONE:
|
||||
|
@ -1489,12 +1489,10 @@ bool SX126x::isIrqSet(uint8_t irq) {
|
|||
return(flags & RADIOLIB_SX126X_IRQ_CAD_DETECTED);
|
||||
case RADIOLIB_IRQ_TIMEOUT:
|
||||
return(flags & RADIOLIB_SX126X_IRQ_TIMEOUT);
|
||||
case RADIOLIB_IRQ_LR_FHSS_HOP:
|
||||
return(flags & RADIOLIB_SX126X_IRQ_LR_FHSS_HOP);
|
||||
default:
|
||||
return(false);
|
||||
return(RADIOLIB_ERR_UNSUPPORTED);
|
||||
}
|
||||
return(false);
|
||||
return(RADIOLIB_ERR_UNSUPPORTED);
|
||||
}
|
||||
|
||||
int16_t SX126x::implicitHeader(size_t len) {
|
||||
|
|
|
@ -1000,7 +1000,7 @@ class SX126x: public PhysicalLayer {
|
|||
\brief Check whether a specific IRQ bit is set (e.g. RxTimeout, CadDone).
|
||||
\returns Whether requested IRQ is set.
|
||||
*/
|
||||
bool isIrqSet(uint8_t irq) override;
|
||||
int16_t checkIrq(uint8_t irq) override;
|
||||
|
||||
/*!
|
||||
\brief Set implicit header mode for future reception/transmission.
|
||||
|
|
|
@ -1302,7 +1302,7 @@ int16_t SX127x::irqRxDoneRxTimeout(uint32_t &irqFlags, uint32_t &irqMask) {
|
|||
return(RADIOLIB_ERR_NONE);
|
||||
}
|
||||
|
||||
bool SX127x::isIrqSet(uint8_t irq) {
|
||||
int16_t SX127x::checkIrq(uint8_t irq) {
|
||||
uint16_t flags = getIRQFlags();
|
||||
switch(irq) {
|
||||
case RADIOLIB_IRQ_TX_DONE:
|
||||
|
@ -1320,9 +1320,9 @@ bool SX127x::isIrqSet(uint8_t irq) {
|
|||
case RADIOLIB_IRQ_TIMEOUT:
|
||||
return(flags & RADIOLIB_SX127X_CLEAR_IRQ_FLAG_RX_TIMEOUT);
|
||||
default:
|
||||
return(false);
|
||||
return(RADIOLIB_ERR_UNSUPPORTED);
|
||||
}
|
||||
return(false);
|
||||
return(RADIOLIB_ERR_UNSUPPORTED);
|
||||
}
|
||||
|
||||
int16_t SX127x::setCrcFiltering(bool enable) {
|
||||
|
|
|
@ -1076,7 +1076,7 @@ class SX127x: public PhysicalLayer {
|
|||
\brief Check whether a specific IRQ bit is set (e.g. RxTimeout, CadDone).
|
||||
\returns Whether requested IRQ is set.
|
||||
*/
|
||||
bool isIrqSet(uint8_t irq) override;
|
||||
int16_t checkIrq(uint8_t irq) override;
|
||||
|
||||
/*!
|
||||
\brief Enable CRC filtering and generation.
|
||||
|
|
|
@ -638,7 +638,7 @@ int16_t SX128x::readData(uint8_t* data, size_t len) {
|
|||
return(state);
|
||||
}
|
||||
|
||||
bool SX128x::isIrqSet(uint8_t irq) {
|
||||
int16_t SX128x::checkIrq(uint8_t irq) {
|
||||
uint16_t flags = getIrqStatus();
|
||||
switch(irq) {
|
||||
case RADIOLIB_IRQ_TX_DONE:
|
||||
|
@ -649,8 +649,6 @@ bool SX128x::isIrqSet(uint8_t irq) {
|
|||
return(flags & RADIOLIB_SX128X_IRQ_PREAMBLE_DETECTED);
|
||||
case RADIOLIB_IRQ_SYNC_WORD_VALID:
|
||||
return(flags & RADIOLIB_SX128X_IRQ_SYNC_WORD_VALID);
|
||||
case RADIOLIB_IRQ_SYNC_WORD_ERROR:
|
||||
return(flags & RADIOLIB_SX128X_IRQ_SYNC_WORD_ERROR);
|
||||
case RADIOLIB_IRQ_HEADER_VALID:
|
||||
return(flags & RADIOLIB_SX128X_IRQ_HEADER_VALID);
|
||||
case RADIOLIB_IRQ_HEADER_ERR:
|
||||
|
@ -664,9 +662,9 @@ bool SX128x::isIrqSet(uint8_t irq) {
|
|||
case RADIOLIB_IRQ_TIMEOUT:
|
||||
return(flags & RADIOLIB_SX128X_IRQ_RX_TX_TIMEOUT);
|
||||
default:
|
||||
return(false);
|
||||
return(RADIOLIB_ERR_UNSUPPORTED);
|
||||
}
|
||||
return(false);
|
||||
return(RADIOLIB_ERR_UNSUPPORTED);
|
||||
}
|
||||
|
||||
int16_t SX128x::startChannelScan() {
|
||||
|
|
|
@ -580,7 +580,7 @@ class SX128x: public PhysicalLayer {
|
|||
\brief Check whether a specific IRQ bit is set (e.g. RxTimeout, CadDone).
|
||||
\returns Whether requested IRQ is set.
|
||||
*/
|
||||
bool isIrqSet(uint8_t irq) override;
|
||||
int16_t checkIrq(uint8_t irq) override;
|
||||
|
||||
/*!
|
||||
\brief Interrupt-driven channel activity detection method. DIO1 will be activated
|
||||
|
|
|
@ -1226,7 +1226,11 @@ int16_t LoRaWANNode::downlinkCommon() {
|
|||
RADIOLIB_DEBUG_PROTOCOL_PRINTLN("Closing Rx%d window", i+1);
|
||||
|
||||
// check if the IRQ bit for Rx Timeout is set
|
||||
if(!this->phyLayer->isIrqSet(RADIOLIB_IRQ_TIMEOUT)) {
|
||||
state = this->phyLayer->checkIrq(RADIOLIB_IRQ_TIMEOUT);
|
||||
if(state == RADIOLIB_ERR_UNSUPPORTED) {
|
||||
return(state);
|
||||
}
|
||||
if(state == 0) {
|
||||
break;
|
||||
|
||||
} else if(i == 0) {
|
||||
|
@ -1248,7 +1252,11 @@ int16_t LoRaWANNode::downlinkCommon() {
|
|||
this->rxDelayEnd = mod->hal->millis();
|
||||
|
||||
// if we got here due to a timeout, stop ongoing activities
|
||||
if(this->phyLayer->isIrqSet(RADIOLIB_IRQ_TIMEOUT)) {
|
||||
state = this->phyLayer->checkIrq(RADIOLIB_IRQ_TIMEOUT);
|
||||
if(state == RADIOLIB_ERR_UNSUPPORTED) {
|
||||
return(state);
|
||||
}
|
||||
if(state == 1) {
|
||||
this->phyLayer->standby(); // TODO check: this should be done automagically due to RxSingle?
|
||||
if(this->modulation == RADIOLIB_LORAWAN_MODULATION_LORA) {
|
||||
this->phyLayer->invertIQ(false);
|
||||
|
|
|
@ -316,9 +316,9 @@ int16_t PhysicalLayer::irqRxDoneRxTimeout(uint32_t &irqFlags, uint32_t &irqMask)
|
|||
return(RADIOLIB_ERR_UNSUPPORTED);
|
||||
}
|
||||
|
||||
bool PhysicalLayer::isIrqSet(uint8_t irq) {
|
||||
int16_t PhysicalLayer::checkIrq(uint8_t irq) {
|
||||
(void)irq;
|
||||
return(false);
|
||||
return(RADIOLIB_ERR_UNSUPPORTED);
|
||||
}
|
||||
|
||||
int16_t PhysicalLayer::startChannelScan() {
|
||||
|
|
|
@ -9,14 +9,12 @@
|
|||
#define RADIOLIB_IRQ_RX_DONE 0x01
|
||||
#define RADIOLIB_IRQ_PREAMBLE_DETECTED 0x02
|
||||
#define RADIOLIB_IRQ_SYNC_WORD_VALID 0x03
|
||||
#define RADIOLIB_IRQ_SYNC_WORD_ERROR 0x04
|
||||
#define RADIOLIB_IRQ_HEADER_VALID 0x05
|
||||
#define RADIOLIB_IRQ_HEADER_ERR 0x06
|
||||
#define RADIOLIB_IRQ_CRC_ERR 0x07
|
||||
#define RADIOLIB_IRQ_CAD_DONE 0x08
|
||||
#define RADIOLIB_IRQ_CAD_DETECTED 0x09
|
||||
#define RADIOLIB_IRQ_TIMEOUT 0x0A
|
||||
#define RADIOLIB_IRQ_LR_FHSS_HOP 0x0B
|
||||
#define RADIOLIB_IRQ_HEADER_VALID 0x04
|
||||
#define RADIOLIB_IRQ_HEADER_ERR 0x05
|
||||
#define RADIOLIB_IRQ_CRC_ERR 0x06
|
||||
#define RADIOLIB_IRQ_CAD_DONE 0x07
|
||||
#define RADIOLIB_IRQ_CAD_DETECTED 0x08
|
||||
#define RADIOLIB_IRQ_TIMEOUT 0x09
|
||||
|
||||
/*!
|
||||
\struct LoRaRate_t
|
||||
|
@ -379,7 +377,7 @@ class PhysicalLayer {
|
|||
\brief Check whether a specific IRQ bit is set (e.g. RxTimeout, CadDone).
|
||||
\returns Whether requested IRQ is set.
|
||||
*/
|
||||
virtual bool isIrqSet(uint8_t irq);
|
||||
virtual int16_t checkIrq(uint8_t irq);
|
||||
|
||||
/*!
|
||||
\brief Interrupt-driven channel activity detection method. Interrupt will be activated
|
||||
|
|
Loading…
Add table
Reference in a new issue