aioble updates - generic attribute service/service changed #439
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This MR includes a few changes in a working branch.
Service Changed is an important feature for any project where the BLE pairing&bonding is used and services/characteristics could be changed, either from modifying application settings, to rolling out in-field updates.
Most BLE clients (eg android/ios phones) will cache the service discovery when bonded to a device. This means that if these are later changed on the device, the phone doesn't know about it and will send the wrong data to a different characteristic.
The BLE service:
Generic Attribute Service
contains a characteristic that can be indicated immediately after connection to tell the client that some/all the services/characteristics have changed and should be re-discovered.For newer (BLE5.1) clients, there's a separate Database Hash characteristic that contains a hash of all services/characteristics configuration which the client can check directly and check against its stored hash for any change, also prompting re-discovery.
Both are supported in this change, however it needs the existing default gatt service entry removed with micropython/micropython#7675