This patch series adds a mechanism for clients to choose whether to enable BlueZ internal profiles (e.g. A2DP, Battery) for specific devices. The motivation behind this feature is that some applications (e.g. Web Bluetooth or Android apps) need to have control over all remove GATT services, like Battery service. With "battery" plugin being enabled on BlueZ, it becomes not possible for those apps to work properly because BlueZ "hides" the Battery-related attributes from its GATT Client API. Disabling the "battery" plugin won't solve the problem either, since we do also need to enable the plugin so that we can use org.bluez.Battery1 API. The solution that we propose is that clients can choose whether to enable internal profiles for each device. Clients know when to enable internal profiles (such as when a user chooses to pair/connect via a UI) and when to disable internal profiles (such as when the connection is initiated by a generic application). Sonny Sasaka (3): doc: Add "AllowInternalProfiles" property to org.bluez.Device1 device: Add "AllowInternalProfiles" property to org.bluez.Device1 client: Add set-allow-internal-profiles command client/main.c | 38 ++++++++++++++++++ doc/device-api.txt | 13 +++++++ src/device.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++ src/hcid.h | 2 + src/main.c | 10 +++++ src/main.conf | 4 ++ 6 files changed, 163 insertions(+) -- 2.26.2