Type: Technical task
Priority: P1: Critical
Fix Version/s: None
Component/s: Connectivity: Bluetooth
The following changes should be considered as part of the Qt 6 release.
- Remove qbluetoothglobal.h (deprecated by https://codereview.qt-project.org/#/c/203657/3)
- Review QLowEnergyController state machine - Reading all descriptors and characteristic as part of the service discovery is very inefficient. Especially when the user already knows the exact service & char uuids he desires to interact with). The API should be changed such that QLowEnergyController discoverServiceDetails() is no longer necessary.
- Add convenience function to enable/disable notifications per char and not having to know the details on how to write the ClientCharacteristicConfiguration descriptor
- Drop BlueZ 4 support
- Remove Custom GATT stack
- Investigate whether minimal Android version can be raised. This permits dropping of lots of reflection code which ensures that older Android version continue to work.
- Various API cleanups (see various TODO items in headers), e.g.:
- Remove QLEController remoteAddressType property (only required on Linux for Custom Gatt stack
- Remove QBluetoothDeviceDiscovery::inquiryType and all related functions and enums
- Replace QList against QVector in public API
- Move QBluetoothServiceInfo service registration related functions to QBluetoothServer
Investigate to what degree alternative stacks to Bluez play a role on Linux platforms. Some Bluez profiles are rather outdated. Such an alternative stack could provide a strong push towards a plugin system for Bluetooth implementations. This might even be helpful for users on Windows where WinRT and Win32 capabilities are vastly different from each but each still has strong use cases depending on the windows target platform. Alternatives are: