kw2xrf: dBm conversion to int16_t

This commit is contained in:
Koen Zandberg 2017-08-30 22:30:24 +02:00
parent 7dce20afb6
commit 2d491e0619
3 changed files with 4 additions and 4 deletions

View File

@ -160,7 +160,7 @@ uint8_t kw2xrf_get_cca_mode(kw2xrf_t *dev);
* *
* @return deduced RSSI in dBm * @return deduced RSSI in dBm
*/ */
uint32_t kw2xrf_get_rssi(uint32_t value); int16_t kw2xrf_get_rssi(uint32_t value);
/** /**
* @brief Get state of a given device * @brief Get state of a given device

View File

@ -346,7 +346,7 @@ uint8_t kw2xrf_get_cca_mode(kw2xrf_t *dev)
return (tmp & MKW2XDM_PHY_CTRL4_CCATYPE_MASK) >> MKW2XDM_PHY_CTRL4_CCATYPE_SHIFT; return (tmp & MKW2XDM_PHY_CTRL4_CCATYPE_MASK) >> MKW2XDM_PHY_CTRL4_CCATYPE_SHIFT;
} }
uint32_t kw2xrf_get_rssi(uint32_t value) int16_t kw2xrf_get_rssi(uint32_t value)
{ {
/* Get rssi (Received Signal Strength Indicator, unit is dBm) /* Get rssi (Received Signal Strength Indicator, unit is dBm)
* from lqi (Link Quality Indicator) value. * from lqi (Link Quality Indicator) value.
@ -361,7 +361,7 @@ uint32_t kw2xrf_get_rssi(uint32_t value)
*/ */
uint32_t a = (uint32_t)(295.4 * 65536 / 2.84); uint32_t a = (uint32_t)(295.4 * 65536 / 2.84);
uint32_t b = (uint32_t)(65536 / 2.84); uint32_t b = (uint32_t)(65536 / 2.84);
return (a - (b * value)) >> 16; return ((b * value) - a) >> 16;
} }
void kw2xrf_set_option(kw2xrf_t *dev, uint16_t option, bool state) void kw2xrf_set_option(kw2xrf_t *dev, uint16_t option, bool state)

View File

@ -169,7 +169,7 @@ static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
if (info != NULL) { if (info != NULL) {
netdev_ieee802154_rx_info_t *radio_info = info; netdev_ieee802154_rx_info_t *radio_info = info;
radio_info->lqi = ((uint8_t*)buf)[pkt_len]; radio_info->lqi = ((uint8_t*)buf)[pkt_len];
radio_info->rssi = (uint8_t)kw2xrf_get_rssi(radio_info->lqi); radio_info->rssi = kw2xrf_get_rssi(radio_info->lqi);
} }
/* skip FCS and LQI */ /* skip FCS and LQI */