Skip to content

Commit

Permalink
Merge pull request #20839 from mguetschow/nrf802154-rssi
Browse files Browse the repository at this point in the history
cpu/nrf52: fix RSSI calculation in nrf802154_radio
  • Loading branch information
benpicco authored Sep 6, 2024
2 parents 7dbb298 + 076dcef commit ed9faa9
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions cpu/nrf52/radio/nrf802154/nrf802154_radio.c
Original file line number Diff line number Diff line change
Expand Up @@ -337,10 +337,13 @@ static int _read(ieee802154_dev_t *dev, void *buf, size_t max_size,
radio_info->lqi = (uint8_t)(hwlqi > UINT8_MAX/ED_RSSISCALE
? UINT8_MAX
: hwlqi * ED_RSSISCALE);
/* We calculate RSSI from LQI, since it's already 8-bit
saturated (see page 321 of product spec v1.1) */
radio_info->rssi = _hwval_to_ieee802154_dbm(radio_info->lqi)
+ IEEE802154_RADIO_RSSI_OFFSET;
/* Converting the hardware-provided LQI value back to the
original RSSI value is not properly documented in the PS.
The linear mapping used here has been found empirically
through comparison with the RSSI value provided by NRF_RADIO->RSSISAMPLE
after enabling the ADDRESS_RSSISTART short. */
int8_t rssi_dbm = hwlqi + ED_RSSIOFFS - 1;
radio_info->rssi = ieee802154_dbm_to_rssi(rssi_dbm);
}
memcpy(buf, &rxbuf[1], pktlen);
}
Expand Down

0 comments on commit ed9faa9

Please sign in to comment.