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
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