Repeated use of CyBle_GapRemoveOldestDeviceFromBondedList breaks bonding

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

On boot up we are calling CyBle_GapRemoveOldestDeviceFromBondedList if the number of current bonded devices = 4, to allow rolling use of the last three bonded devices.

   

We do this curing CYBLE_EVT_STACK_ON.  We get the number of bonded devices by calling CyBle_GapGetBondedDevicesList, and then remove the oldest if equal to four.

   

This works most of the time.  We have experienced a number of times in testing when some number of different devices (more than 4) have been bonded.  When in this state, we get CYBLE_EVT_GAP_DEVICE_DISCONNECTED with an event reason of 0x16.  Once this occurs, we can only connect to the last three bonded devices.  Our CYBL11573 based device stays in this state -- only connecting with last 3 bonded, 0x16 error if attempting to connect/bond to a 4th until we reflash the firmware.

   

CYBL11573 running BLE stack V3.10.

0 Likes
1 Solution
Anonymous
Not applicable

Hi,

   

After calling the CyBle_GapRemoveOldestDeviceFromBondedList, can you please make sure that CyBle_StoreBondingData API, so that the bonding list is updated in the flash?

   

Regards,

   

- Madhu Sudhan

View solution in original post

0 Likes
2 Replies
Anonymous
Not applicable

Additional information:

   

This is a bootloadable application with the BLE stack residing in the bootloader.

   

In testing we created this issue after pairing/bonding with some 27 different devices.  We have serial debug commands that allow us to 1) read the number of bonded devices and 2) clear the bonded device list.  When we cleared the our device reported no bonded devices, but on a subsequent boot up, it reported 3.  

   

Is anyone else using CyBle_GapGetBondedDevicesList and CyBle_GapRemoveOldestDeviceFromBondedList to manage the number of bonded devices?  Have any issues.

0 Likes
Anonymous
Not applicable

Hi,

   

After calling the CyBle_GapRemoveOldestDeviceFromBondedList, can you please make sure that CyBle_StoreBondingData API, so that the bonding list is updated in the flash?

   

Regards,

   

- Madhu Sudhan

0 Likes