From 9f8ec689dd2fd8fda38c6ac1e9f788ecad748118 Mon Sep 17 00:00:00 2001 From: jgromes Date: Tue, 14 Apr 2020 15:02:33 +0200 Subject: [PATCH] [RF69] Replaced RSSI member variable with getRSSI method --- examples/RF69/RF69_Receive/RF69_Receive.ino | 6 ++++++ .../RF69_Receive_Interrupt.ino | 8 +++++++- src/modules/RF69/RF69.cpp | 9 +++++---- src/modules/RF69/RF69.h | 12 +++++++----- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/examples/RF69/RF69_Receive/RF69_Receive.ino b/examples/RF69/RF69_Receive/RF69_Receive.ino index 597ee63e..161173e3 100644 --- a/examples/RF69/RF69_Receive/RF69_Receive.ino +++ b/examples/RF69/RF69_Receive/RF69_Receive.ino @@ -68,6 +68,12 @@ void loop() { Serial.print(F("[RF69] Data:\t\t")); Serial.println(str); + // print RSSI (Received Signal Strength Indicator) + // of the last received packet + Serial.print(F("[RF69] RSSI:\t\t")); + Serial.print(rf.getRSSI()); + Serial.println(F(" dBm")); + } else if (state == ERR_RX_TIMEOUT) { // timeout occurred while waiting for a packet Serial.println(F("timeout!")); diff --git a/examples/RF69/RF69_Receive_Interrupt/RF69_Receive_Interrupt.ino b/examples/RF69/RF69_Receive_Interrupt/RF69_Receive_Interrupt.ino index 32aef55f..e028a678 100644 --- a/examples/RF69/RF69_Receive_Interrupt/RF69_Receive_Interrupt.ino +++ b/examples/RF69/RF69_Receive_Interrupt/RF69_Receive_Interrupt.ino @@ -112,9 +112,15 @@ void loop() { Serial.println(F("[RF69] Received packet!")); // print data of the packet - Serial.print(F("[RF69] Data:\t\t\t")); + Serial.print(F("[RF69] Data:\t\t")); Serial.println(str); + // print RSSI (Received Signal Strength Indicator) + // of the last received packet + Serial.print(F("[RF69] RSSI:\t\t")); + Serial.print(rf.getRSSI()); + Serial.println(F(" dBm")); + } else if (state == ERR_CRC_MISMATCH) { // packet was received, but is malformed Serial.println(F("CRC error!")); diff --git a/src/modules/RF69/RF69.cpp b/src/modules/RF69/RF69.cpp index c9e9fa90..35bb2070 100644 --- a/src/modules/RF69/RF69.cpp +++ b/src/modules/RF69/RF69.cpp @@ -147,7 +147,7 @@ int16_t RF69::receive(uint8_t* data, size_t len) { uint32_t start = micros(); while(!digitalRead(_mod->getIrq())) { yield(); - + if(micros() - start > timeout) { standby(); clearIRQFlags(); @@ -330,9 +330,6 @@ int16_t RF69::readData(uint8_t* data, size_t len) { // read packet data _mod->SPIreadRegisterBurst(RF69_REG_FIFO, length, data); - // update RSSI - lastPacketRSSI = -1.0 * (_mod->SPIgetRegValue(RF69_REG_RSSI_VALUE)/2.0); - // clear internal flag so getPacketLength can return the new packet length _packetLengthQueried = false; @@ -701,6 +698,10 @@ int16_t RF69::setEncoding(uint8_t encoding) { } } +float RF69::getRSSI() { + return(-1.0 * (_mod->SPIgetRegValue(RF69_REG_RSSI_VALUE)/2.0)); +} + int16_t RF69::config() { int16_t state = ERR_NONE; diff --git a/src/modules/RF69/RF69.h b/src/modules/RF69/RF69.h index 1a40e5dc..9f465df6 100644 --- a/src/modules/RF69/RF69.h +++ b/src/modules/RF69/RF69.h @@ -441,11 +441,6 @@ class RF69: public PhysicalLayer { */ RF69(Module* module); - /*! - \brief RSSI value of the last received packet. - */ - float lastPacketRSSI; - // basic methods /*! @@ -791,6 +786,13 @@ class RF69: public PhysicalLayer { */ int16_t setEncoding(uint8_t encoding); + /*! + \brief Gets RSSI (Recorded Signal Strength Indicator) of the last received packet. + + \returns Last packet RSSI in dBm. + */ + float getRSSI(); + #ifndef RADIOLIB_GODMODE protected: #endif