File tree Expand file tree Collapse file tree 1 file changed +25
-1
lines changed
Expand file tree Collapse file tree 1 file changed +25
-1
lines changed Original file line number Diff line number Diff line change @@ -193,7 +193,31 @@ int LoRaClass::parsePacket(int size)
193193
194194int 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
199223float LoRaClass::packetSnr ()
You can’t perform that action at this time.
0 commit comments