Skip to content

Commit 682582e

Browse files
author
Harry
committed
modified rssi computation
1 parent 435651a commit 682582e

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

src/lora/LoRa.cpp

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,31 @@ int LoRaClass::parsePacket(int size)
193193

194194
int LoRaClass::packetRssi()
195195
{
196-
return (readRegister(REG_PKT_RSSI_VALUE) - (_frequency < 868E6 ? 164 : 157));
196+
int8_t snr=0;
197+
int8_t SnrValue = readRegister( 0x19 );
198+
int16_t rssi = readRegister(REG_PKT_RSSI_VALUE);
199+
200+
if( SnrValue & 0x80 ) // The SNR sign bit is 1
201+
{
202+
// Invert and divide by 4
203+
snr = ( ( ~SnrValue + 1 ) & 0xFF ) >> 2;
204+
snr = -snr;
205+
}
206+
else
207+
{
208+
// Divide by 4
209+
snr = ( SnrValue & 0xFF ) >> 2;
210+
}
211+
if(snr<0)
212+
{
213+
rssi = rssi - (_frequency < 525E6 ? 164 : 157) + ( rssi >> 4 ) + snr;
214+
}
215+
else
216+
{
217+
rssi = rssi - (_frequency < 525E6 ? 164 : 157) + ( rssi >> 4 );
218+
}
219+
220+
return ( rssi );
197221
}
198222

199223
float LoRaClass::packetSnr()

0 commit comments

Comments
 (0)