From 83f097e5c31175d2698c2c72a79d1ba2800cd4a1 Mon Sep 17 00:00:00 2001 From: Manvendra Singh <16uec063@lnmiit.ac.in> Date: Fri, 20 Sep 2019 13:39:32 +0530 Subject: [PATCH] RSSI when snr>0 Due to linearity issues, we do (RSSI=-139+16/15*PacketRssi) [https://www.mouser.com/ds/2/761/sx1276-1278113.pdf, Section 5.5.5 Note-3] --- src/LoRa.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/LoRa.cpp b/src/LoRa.cpp index 6eb3d22..2371559 100644 --- a/src/LoRa.cpp +++ b/src/LoRa.cpp @@ -256,9 +256,17 @@ int LoRaClass::parsePacket(int size) int LoRaClass::packetRssi() { - return (readRegister(REG_PKT_RSSI_VALUE) - (_frequency < 868E6 ? 164 : 157)); +int8_t snr = ((int8_t)readRegister(REG_PKT_SNR_VALUE)) * 0.25; +int8_t rssi = readRegister(REG_PKT_RSSI_VALUE); + + if(snr>0) + return (rssi + ( rssi >> 4 ) + snr - (_frequency < 868E6 ? 164 : 157)); + + else + return (rssi + (rssi >> 4) - (_frequency < 868E6 ? 164 : 157)); } + float LoRaClass::packetSnr() { return ((int8_t)readRegister(REG_PKT_SNR_VALUE)) * 0.25;