When using wiced_bt_ble_scan() we see that after restarting it with another call to wiced_bt_ble_scan() we do get advert data from peripherals which do not advertise anymore.
Here is what we do:
1. we start the scan with wiced_bt_ble_scan(), High Duty, no duplicate filtering and 2 minutes for the scan duration.
2. when the High Duty scan is finished it starts the Low Duty scan
3. when the Low Duty scan is finished we start over with 1.
We use Active Scan all the time to get the scan responses as well.
We are using SDK 6.4.0 running on a 20706/20707. But we have seen the very same behaviour with SDK 6.2.1.
The strange thing is that we do get called back with advert or scan response data for peripherals which do not advertise anymore. We see this effect for example when one of the peripherals change its static random BLE address. Then we do see callbacks for the old address and for the new address. Interestingly the payload of callbacks for the old address is typically empty.
How can this happen? How can we avoid seeing such stale BLE addresses?
We have never seen this issue.
Could you please provide the project for Central and peripheral which you are testing?
So that we can reproduce at our side.