Understanding dBm result from RSSI formula

⚠️
Hi there.. thanks for coming to the forums. Exciting news! we’re now in the process of moving to our new forum platform that will offer better functionality and is contained within the main Dialog website. All posts and accounts have been migrated. We’re now accepting traffic on the new forum only - please POST any new threads at//www.xmece.com/support. We’ll be fixing bugs / optimising the searching and tagging over the coming days.
2 posts / 0 new
Last post
tly@xtel.dk
Offline
Last seen:2 months 1 week ago
加入:2014-03-28 08:27
Understanding dBm result from RSSI formula

We are designing a product set of devices, a central and a peripheral, which are connected with a "slow" connection interval of 4s (max) and a supervisory timeout of 10.24s (max). It all works fine, and the connection is kept as expected. We are then requesting RSSI measurements from this active connection, on the central side, using the GAPC_GET_INFO_CMD with sub operation GAPC_GET_CON_RSSI. This results in GAPC_CON_RSSI_IND being reported. The values we get from the uint8_t (rssi) member of the struct gapc_con_rssi_ind is ranging from 150 to 240 decimal.

Putting this into the formula for dBm RSSI, and doubling the rssi value from gapc_con_rssi_ind, gives us the following:

(2 x 150) x 0.474 - 112.4 = 29.8 dBm

(2 x 240) x 0.474 - 112.4 = 115.12 dBm

The thing is, that we dont understand this? The 150 value is obtained right before the connection is lost due to very poor signal. The 240 is the maximum value reported at very close distance.

We simply dont understand the values in dBm. Can you please elaborate a bit on this?

EDIT:
We have found that converting the raw rssi from uint8_t to a int8_t makes a good result. That is with out doing any calculations. Can it be because this correctional operation is not needed on the 14585 6.0.10 SDK?

Kind regards
托马斯Lykkeberg

Device:
PM_Dialog
Offline
Last seen:16 hours 23 min ago
工作人员
加入:2018-02-08 11:03
Hi tly@xtel.dk,

Hitly@xtel.dk,

In order to get proper values you could use the rf_rssi_convert() function. As soon as you got that you should be able to get the proper values without extra conversions. There are no conversions required, the value that is returned after that modification is the actual value of the RSSI in dbm, the 0xE6 stands for -26dbm if you read it as a signed value.

Thanks, PM_Dialog