summaryrefslogtreecommitdiffstats
path: root/src/bluetooth/qbluetoothdevicediscoveryagent_bluez.cpp
diff options
context:
space:
mode:
authorAndreas Buhr <andreas.buhr@qt.io>2021-11-25 14:38:51 +0100
committerAndreas Buhr <andreas.buhr@qt.io>2021-11-29 12:02:21 +0100
commit212b29f16b24a156e1c8132772ddc6c3bcbc1165 (patch)
treed25f4803ec460d428e75d957b5fc88da4a933a6d /src/bluetooth/qbluetoothdevicediscoveryagent_bluez.cpp
parent895524df71711a07115c638178b9f18638259b56 (diff)
Add support for service data in BLE advertisment
This patch adds support for "service data" in BTLE advertisements. Fixes: QTBUG-95118 Change-Id: I11f1f3d0295cb03eaa773b84a423227a28f47c43 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Juha Vuolle <juha.vuolle@insta.fi> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alex Blasche <alexander.blasche@qt.io> Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>
Diffstat (limited to 'src/bluetooth/qbluetoothdevicediscoveryagent_bluez.cpp')
-rw-r--r--src/bluetooth/qbluetoothdevicediscoveryagent_bluez.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/bluetooth/qbluetoothdevicediscoveryagent_bluez.cpp b/src/bluetooth/qbluetoothdevicediscoveryagent_bluez.cpp
index 471f6a62..f509f649 100644
--- a/src/bluetooth/qbluetoothdevicediscoveryagent_bluez.cpp
+++ b/src/bluetooth/qbluetoothdevicediscoveryagent_bluez.cpp
@@ -276,11 +276,18 @@ static QBluetoothDeviceInfo createDeviceInfoFromBluez5Device(const QVariantMap&
}
const ManufacturerDataList deviceManufacturerData = qdbus_cast<ManufacturerDataList>(properties[QStringLiteral("ManufacturerData")]);
- const QList<quint16> keys = deviceManufacturerData.keys();
- for (quint16 key : keys)
+ const QList<quint16> keysManufacturer = deviceManufacturerData.keys();
+ for (quint16 key : keysManufacturer)
deviceInfo.setManufacturerData(
key, deviceManufacturerData.value(key).variant().toByteArray());
+ const ServiceDataList deviceServiceData =
+ qdbus_cast<ServiceDataList>(properties[QStringLiteral("ServiceData")]);
+ const QList<QString> keysService = deviceServiceData.keys();
+ for (QString key : keysService)
+ deviceInfo.setServiceData(QBluetoothUuid(key),
+ deviceServiceData.value(key).variant().toByteArray());
+
return deviceInfo;
}
@@ -305,7 +312,8 @@ void QBluetoothDeviceDiscoveryAgentPrivate::deviceFound(const QString &devicePat
<< "Num UUIDs" << deviceInfo.serviceUuids().count()
<< "total device" << discoveredDevices.count() << "cached"
<< "RSSI" << deviceInfo.rssi()
- << "Num ManufacturerData" << deviceInfo.manufacturerData().size();
+ << "Num ManufacturerData" << deviceInfo.manufacturerData().size()
+ << "Num ServiceData" << deviceInfo.serviceData().size();
// Cache the properties so we do not have to access dbus every time to get a value
devicesProperties[devicePath] = properties;