Whitelisting with resolvable random address | Cypress Semiconductor
Whitelisting with resolvable random address
I have a device (peripheral) that uses the link loss service. If this service is set, and the link is lost, an alarm goes off. I only want to allow previously bonded devices to connect back to the peripheral during this alarm condition. This would normally be handled by whitelisting. However, iOS devices (and I assume android too) uses resolvable random addresses, so their address changes.
I don't have a problem switching from Scan Any Connect Any to Scan Any Connect Whitelist, I just set the struct value cyBle_discoveryParam.advFilterPolicy = CYBLE_GAPP_SCAN_ANY_CONN_WHITELIST. My problem is that the whitelisted address becomes obsolete after the iOS client changes its address.
My (limited) understanding of resolvable random addresses seems like I should be able to "resolve" the random address. That is, I can figure out if the new iOS address is from the same client as before using the IRK (Identity Resolving Key). Does my app have access to the IRK? How can I use this to update the whitelist, or to check if a new client trying to connect is actually an old bonded device? Thoughts?