I'm trying to understand how all these lists work. Please, let me do some afirmations and correct them if they are wrong.
Firstly, I started working with whitelist to filter address of centrals that were trying to connect to my peripheral device. I managed this whitelist manually and it worked fine until appears ble 4.2 and its privacy 1.2. Here we have RPA or random address and now, the same device that is trying to connect to my peripheral has different BD address from one connection to next one. We can not employe whitelist longer for device connection filtering.
So, I started working with bonded addresses list. Bonding requires pairing, and pairing is not mandatory after a connection is stablished. Pairing is necessary for encrypt a connection and for keys exchange. I mean that bonding process will save BDA to bond list and keys to resolve list. These keys are which we will need to resolve random address from central and to be able to encrypt connection again, but not to manage the connection itself. I mean, any central device (bonded or unbonded) will get to connect to my peripheral. Only bonded devices will get authenticate succesfuly. Others, will not get authentication but they could stay connected and unauthenticated if it is not requiered. Pairing and authentication can be requested from central as well as from peripheral.
I've been testing diferent things and I've seen followings:
- When Pairing process is completed it automatically includes the central's BDA in the peripheral's whitelist. Up to 8 address can be saved. The 9th one will not be saved. If central's address is random type and it changes every connection, each new address will be included as new index in the whitelist.
- When Pairing process is completed it automatically includes the central's BDA in the peripheral's bond list. If central's BDA is RPA type and change every connection, the previous random address in the list will be updated with the new one.
I've not tested resolve list yet. Is there any document in which all that list management mechanism is described ?
Any correction/clarification of my text will be appreciated.