mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
cpu/nrf52: fix RSSI calculation in nrf802154_radio
This commit is contained in:
parent
b056060bd8
commit
076dcefb92
@ -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
|
radio_info->lqi = (uint8_t)(hwlqi > UINT8_MAX/ED_RSSISCALE
|
||||||
? UINT8_MAX
|
? UINT8_MAX
|
||||||
: hwlqi * ED_RSSISCALE);
|
: hwlqi * ED_RSSISCALE);
|
||||||
/* We calculate RSSI from LQI, since it's already 8-bit
|
/* Converting the hardware-provided LQI value back to the
|
||||||
saturated (see page 321 of product spec v1.1) */
|
original RSSI value is not properly documented in the PS.
|
||||||
radio_info->rssi = _hwval_to_ieee802154_dbm(radio_info->lqi)
|
The linear mapping used here has been found empirically
|
||||||
+ IEEE802154_RADIO_RSSI_OFFSET;
|
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);
|
memcpy(buf, &rxbuf[1], pktlen);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user