Hi,
We're using bonding between our peripheral HID device and 3rd party central devices. Our device runs on a 52832 board with SDK 14.0.0 and SD 5.0.0.
We've run into a problem with GATT service caching on Android devices. The problem occurs after a DFU where we add a new report to the HID service.
ble_dfu_buttonless_bootloader_start_prepare() is called as to notify the peers about the service change, but on Android the services don't seem to refresh.
We're seeing bad behavior when sending HID messages - it seems the Android OS interprets the commands incorrectly, probably because it still has the old reports cached.
We have an Android App that performs the DFU using Nordic's SDK, and when the update is done, we attempt to refresh and rediscover the services unsuccessfully.
We tried using the BluetoothGatt.refresh() method as discussed here: https://github.com/Polidea/RxAndroidBle/issues/53 but it doesn't seem to have any effect.
Unpairing and re-pairing or just turning Bluetooth off and on again seems to solve the issue, but we'd like to avoid that since it requires user intervention.
We might try to implement an automatic mechanism to unpair and re-pair on the central, but we're interested to see if there's another possible way to refresh the services.
Thanks!