Details
-
Suggestion
-
Resolution: Incomplete
-
P2: Important
-
None
-
6.6.1
-
Foundation PM Staging
Description
It would be nice to provide an overload for QLowEnergyController::discoverServices() that allows the passing of the UUID.
The service discovery by UUID, is required by devices that are sensitive to such scanning and may expose different GATT services, depending on the scan.
- iOS and macOS provide necessary API in CBCentralManager, which is already used by Qt in qtconnectivity/src/bluetooth/darwin/btcentralmanager.mm
[peripheral discoverServices:nil]; <- this function accepts list of UUIDs
However Qt Bluetooth passes only nil and doesn't allow passing UUID.
- WinRT API uses discovery function in void QLowEnergyControllerPrivateWinRT::discoverServices()
hr = device3->GetGattServicesAsync(&asyncResult);
Windows provides BluetoothLEDevice.GetGattServicesForUuidAsync method
- Linux probably requires custom Bluez code with properly formatted GATT packet
- Android seems to not support such use case