diff --git a/platform/drivers/baseband/radio_UV3x0.c b/platform/drivers/baseband/radio_UV3x0.c index 5f4a5486..959647e0 100644 --- a/platform/drivers/baseband/radio_UV3x0.c +++ b/platform/drivers/baseband/radio_UV3x0.c @@ -277,7 +277,11 @@ float radio_getRssi(const freq_t rxFreq) { (void) rxFreq; - uint16_t val = AT1846S_readRSSI(); - int8_t rssi = -151 + (val >> 8); + /* + * RSSI and SNR are packed in a 16-bit value, with RSSI being the upper + * eight bits. + */ + uint16_t val = (AT1846S_readRSSI() >> 8); + int16_t rssi = -151 + ((int16_t) val); return ((float) rssi); }