I'm using s110 softdevice 6.1 SDK. I do bonding in my application the same way as in the ble_app_hrs example (bond, no_mitm). I have a charactarestic set to SEC_MODE_SET_ENC_NO_MITM. I use writing into this characteristic initially to trigger the bonding process.
-
If I do not clear persistent data during startup and unpair the device in iOS: the iOS device re-requests pairing, but on the nordic chip I get an error: DM_DEVICE_CONTEXT_FULL with the DM_EVT_SECURITY_SETUP_COMPLETE. Previously I get both DM_EVT_SECURITY_SETUP and DM_EVT_LINK_SECURED. As a result iOS and the nrf chip fail to communicate.
-
If I clear persistent data for the device manager, and don't unpair the device in iOS. The iOS application connects, but doesn't re-request bonding. I get no error, but the devices are still unable to communicate. I cannot unpair programmatically in iOS. Android handles this by re-initializing the bonding process, but it doesn't seem to happen on iOS.
The 2) is probably unsolvable. For 1) is there a way to detect if the peer device was unbonded and delete the old bonding information and restart the process?