-
Notifications
You must be signed in to change notification settings - Fork 482
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature]: Support multiple characteristics with same uuid (HID Service) #795
Comments
This comment has been minimized.
This comment has been minimized.
Same UUID? That sounds wild, almost defeats the "unique" part of UUID. I didn't know that such a scenario is even possible and valid: I thought that the service UUID + characteristic UUID is unique tuple. |
Would be great to see this resolved! I'm facing this issue with my current implementation, and in response to @MrCsabaToth, as per the Bluetooth spec Vol 3, Part G, Section 3.3.1: "A service may have multiple characteristic definitions with the same Characteristic UUID" I'm currently implementing something similar to this wifi scanner service, which populates the scan results as characteristics. As a workaround for now I'm going to give each of the scan results the same Characteristic UUID up to the first 120 bits to identify them, then increment the last 8 bits giving me 256 possible options. |
feel free to open a PR, and test it |
See previous discussions/PR from LINK BROKEN https://github.com/pauldemarco/flutter_blue/issues/213
The UUID is a unique identifier for what the characteristic represents - not the characteristic instance itself. The true unique identifier of an instance is its attribute handle, a 2-byte identifier. The GATT client obtains the table of attribute handles upon connection and then only has to include the 2-byte identifier in operations, rather than a 16 byte UUID. |
copying this here for future reference. instead of
string representation:
uuid accessors
normally it will be set to 0. and only in cases where there are dupicate services, or duplicate characteristics in a service, will it have a value. I think we should try to make it work with an index, first, as opposed to an opaque handle. If we can get that to wokr on android and iOS, that seems best to me. |
FlutterBluePlus Version
1.31.14
Flutter Version
3.18.1
What is your feature request?
Relevant Issue: #789
FlutterBluePlus does not yet support multiple characteristics with the same uuid in the same service, which is needed for the 0x1812 HID Service.
We need to add a new class member to
BluetoothCharacteristic
:final int characteristicIndex
For most characteristics, index will be 0. But If there are multiple characteristics with the same uuid, index represents first, second, third, etc. Android & iOS always keep characteristics in the same order, so we can use an index to find the right one.
Logs
The text was updated successfully, but these errors were encountered: