Characteristic Aggregate Format Descriptor (0x2905) support for Peripheral device #1054
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.
Summary
This PR adds full support for the Characteristic Aggregate Format Descriptor (UUID
0x2905) when operating as a BLE peripheral. Correct implementation requires reliable handle mapping for multiple Presentation Format descriptors (0x2904), which previously failed due to duplicate handle assignment.This PR also introduces PlatformIO build support for the existing examples and includes a usage demonstration of this new capability in
NimBLE_Server.ino.Problem
Descriptor handle resolution used UUID-only lookup (
ble_gatts_find_dsc()), which meant:0x2905) could not assemble a correct referenced handle listThe BLE specification requires each referenced descriptor to have a unique handle for valid aggregation.
Fix
ble_gatt_dsc_defAdditional Enhancements
They still function as regular Arduino sketches
and can now also be built and flashed using PlatformIO:
NimBLE_Server.inoexample to include a practical usage example of the Aggregate Format descriptor feature:Impact
0x2904)