This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
First question: If a peripheral is paired (and bonded) to multiple centrals using resolvable private addressing (aka unique IRK’s per central), does the peripheral have to cycle through all RPA’s when trying to connect to any of them?
And if so, does TI RTOS provide support for cycling through all paired IRK’s when advertising or is it the responsibility of the application to cycle through the IRK’s?
My bet is that it’s the application’s responsibility. Then the next question is can it be done by simply changing the advertising data on some interval basis during runtime (using GAPROLE_ADVERT_DATA for example)?
Please advise.
Thanks,
Mark
Hi Mark,
I'm not sure about the best way to answer your questions because I'm a little confused about the wording so I'll provide some background on our privacy implementation and address your questions as well as provide some key sections of the spec to look at.
1. Have you read through the Privacy section here?: http://software-dl.ti.com/lprf/simplelink_cc2640r2_latest/docs/blestack/ble_user_guide/html/ble-stack-3.x/gapbondmngr.html#le-privacy-1-2
2. The LL Privacy feature is always enabled when using the CC2640R2 SDK. This means that the Controller will always check the Resolving List before forwarding packets to the Host. All resolving is done in the Controller in the CC2640R2.
3. As a user, in order to resolve a peer address, all that should be required is to enable bonding in your application. After bonding, the GAP Bond Manager (if it is used), will add the device to the Resolving List so that the Controller can resolve the address. After bonding, if the device is connected to again, the Public ID address of the peer device should be used at the application level. You can check this in your PuTTY window or by putting a breakpoint in GAP_LINK_ESTABLISHED_EVENT of peripheral.c and checking out the address and address type of the device you've connected to.
4. What do you think the TI-RTOS involvement would be? Privacy, Resolving List, IRKs are all components of the Bluetooth specification so they are implemented in the BLE-Stack. TI-RTOS schedules the stack task to run but that's about it.
5. "Next question is can it be done by simply changing the advertising data on some interval basis during runtime (using GAPROLE_ADVERT_DATA for example)" - Can what be done? Resolving Addresses? Why would changing advertisement data affect the resolving functionality? I'm going to assume you mean that you want to use an RPA with your peripheral application. If that is the case, all you need to do is follow the guidance here: http://software-dl.ti.com/lprf/simplelink_cc2640r2_latest/docs/blestack/ble_user_guide/html/ble-stack-3.x/gapbondmngr.html#using-resolvable-private-addresses
6. Privacy is a confusing topic and we have had some issues related to privacy in the past. Make sure you check out the Known Issues in the Release Notes and the Porting Guide & Known Issues wiki page for any Privacy-related updates: www.ti.com/ble-wiki
Key sections of the spec to help you understand Privacy in the Bluetooth Core Specification:
Vol 1, Part A, Section 5.4.5 - Overview of the LE Privacy Feature
Vol 2, Part E, Sections 7.8 - HCI Commands
Vol 3, Part C, Section 10.7 - Privacy in the Host
Vol 3, Part C, Section 12 - GAP Service and Characteristics for GATT Server
Vol 6, Part B, Section 1.3 - Device Address
Vol 6, Part B, Section 6 - Privacy in the Link Layer