Dear Sir,
I run the Multi-link demo and add below timer trigger every 1 sec after connected to the mobile phone. However I receive wrong RSSI value every 20~30 seconds. May I know how to avoid this? Thanks.
rssi_tim = OS_TIMER_CREATE("rssi", OS_MS_2_TICKS(1000), true, (void *) OS_GET_CURRENT_TASK(), rssi_tim_cb);
static void rssi_tim_cb(OS_TIMER timer)
{
printf("rssi_tim_cb\r\n");
OS_TASK task = (OS_TASK) OS_TIMER_GET_TIMER_ID(timer);
OS_TASK_NOTIFY(task, RSSI_TMO_NOTIF, OS_NOTIFY_SET_BITS);
}
static void rss_update()
{
int8_t rssi = 0;
ble_gap_conn_rssi_get(master_dev_conn_idx,&rssi);
printf("rssi_update rssi: %d\r\n",rssi);
}
RESULT:
PXP_UPDATE_CONN_PARAM_NOTIF
rssi_tim_cb
RSSI_TMO_NOTIF
rssi_update
rssi_update rssi: -61
PXP_UPDATE_CONN_PARAM_NOTIF
rssi_tim_cb
RSSI_TMO_NOTIF
rssi_update
rssi_update rssi: -54
PXP_UPDATE_CONN_PARAM_NOTIF
rssi_tim_cb
RSSI_TMO_NOTIF
rssi_update
rssi_update rssi: -119 <-- fault rssi value
rssi wrong trigger!
PXP_UPDATE_CONN_PARAM_NOTIF
rssi_tim_cb
RSSI_TMO_NOTIF
rssi_update
rssi_update rssi: -56
PXP_UPDATE_CONN_PARAM_NOTIF
rssi_tim_cb
RSSI_TMO_NOTIF
rssi_update
rssi_update rssi: -117 <-- fault rssi value
rssi wrong trigger!
PXP_UPDATE_CONN_PARAM_NOTIF
rssi_tim_cb
RSSI_TMO_NOTIF
rssi_update
rssi_update rssi: -47
PXP_UPDATE_CONN_PARAM_NOTIF
rssi_tim_cb
RSSI_TMO_NOTIF
rssi_update
rssi_update rssi: -56
PXP_UPDATE_CONN_PARAM_NOTIF
rssi_tim_cb
RSSI_TMO_NOTIF
rssi_update
rssi_update rssi: -52
PXP_UPDATE_CONN_PARAM_NOTIF
Hi Ken Chong,
I ve check what you ve reported and i suspect that the issue that you are mentioning has a phone dependancy so, i dont think that this is an issue of the 68x or the code that you are implementing but depends on the device that is connected to it. I ve checked with different phones i could see the large offset on the first test but with the other phone the RSSI values where quite consistent with less than 3dBm deviation between the values reported in close proximity. So can you try connecting to another device and check ?
Thanks MT_dialog
I've seen similar behaviour when running sniffing code on a DA14680 (Central), in a connection with DA14583 device (Slave).
I have some production test code that builds up an average of the RSSI values received for each packet received during a connection. The RSSI values received are quite consistent (within 1 dbM of each other), but once a while (roughly every 20th) packet the RSSI shows a very low value, of the order of -124 dBm as opposed to a more typical -90 dBm.
There's no mobile phone equipment in use in this case - both ends are using Dialog processors.
Best Regards,
Adrian Morgan
Hi adrianhwmorgan,
There are cases where either the central or the peripheral will report very small RSSI values (which in any case is wrong), the reason for that is the fact that the two devices where waiting for a reception and they either picked up noise or they didn't hear the other side at all. In that case the devices will report such small RSSI values since there is no actual reception at that specific time. If you request an RSSI measurement at that time the device will report the measurement from the last communication that had therefore report this faulty value. This can be dealed with an additional condition that will cut off those kind of values, since there is no meaning to such RSSI measurement.
Thanks MT_dialog