[SX127x] Added getIRQFlags and getModemStatus methods (#145)

This commit is contained in:
jgromes 2020-05-28 21:07:23 +02:00
parent 3a15335b59
commit f068a15029
3 changed files with 43 additions and 0 deletions

View file

@ -124,6 +124,8 @@ disableSyncWordFiltering KEYWORD2
setPromiscuous KEYWORD2 setPromiscuous KEYWORD2
setRSSIConfig KEYWORD2 setRSSIConfig KEYWORD2
setEncoding KEYWORD2 setEncoding KEYWORD2
getIRQFlags KEYWORD2
getModemStatus KEYWORD2
# RF69-specific # RF69-specific
setAESKey KEYWORD2 setAESKey KEYWORD2

View file

@ -909,6 +909,31 @@ int16_t SX127x::setEncoding(uint8_t encoding) {
} }
} }
uint16_t SX127x::getIRQFlags() {
// check active modem
if(getActiveModem() == SX127X_LORA) {
// LoRa, just 8-bit value
return((uint16_t)_mod->SPIreadRegister(SX127X_REG_IRQ_FLAGS));
} else {
// FSK, the IRQ flags are 16 bits in total
uint16_t flags = ((uint16_t)_mod->SPIreadRegister(SX127X_REG_IRQ_FLAGS_2)) << 8;
flags |= (uint16_t)_mod->SPIreadRegister(SX127X_REG_IRQ_FLAGS_1);
return(flags);
}
}
uint8_t SX127x::getModemStatus() {
// check active modem
if(getActiveModem() != SX127X_LORA) {
return(0x00);
}
// read the register
return(_mod->SPIreadRegister(SX127X_REG_MODEM_STAT));
}
int16_t SX127x::config() { int16_t SX127x::config() {
// turn off frequency hopping // turn off frequency hopping
int16_t state = _mod->SPIsetRegValue(SX127X_REG_HOP_PERIOD, SX127X_HOP_PERIOD_OFF); int16_t state = _mod->SPIsetRegValue(SX127X_REG_HOP_PERIOD, SX127X_HOP_PERIOD_OFF);

View file

@ -897,6 +897,22 @@ class SX127x: public PhysicalLayer {
*/ */
int16_t setEncoding(uint8_t encoding); int16_t setEncoding(uint8_t encoding);
/*!
\brief Reads currently active IRQ flags, can be used to check which event caused an interrupt.
In LoRa mode, this is the content of SX127X_REG_IRQ_FLAGS register.
In FSK mode, this is the contents of SX127X_REG_IRQ_FLAGS_2 (MSB) and SX127X_REG_IRQ_FLAGS_1 (LSB) registers.
\returns IRQ flags.
*/
uint16_t getIRQFlags();
/*!
\brief Reads modem status. Only available in LoRa mode.
\returns Modem status.
*/
uint8_t getModemStatus();
#ifdef RADIOLIB_DEBUG #ifdef RADIOLIB_DEBUG
void regDump(); void regDump();
#endif #endif