summaryrefslogtreecommitdiff
path: root/src/bluetooth/qlowenergycontroller_android.cpp
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@theqtcompany.com>2014-11-07 12:06:43 +0100
committerAlex Blasche <alexander.blasche@theqtcompany.com>2014-11-10 14:32:51 +0100
commit327b6b7f8ff9acda74f403f2ff286e67f4202dfd (patch)
treea8c5649da588a0d428b4710b6d0080fe2d273da1 /src/bluetooth/qlowenergycontroller_android.cpp
parente0dc61db4af89cce14ade3582ac92e4b713c7982 (diff)
downloadqtconnectivity-327b6b7f8ff9acda74f403f2ff286e67f4202dfd.tar.gz
Propagate Charactereristic data to Qt layer
Although this makes the lowenergyscanner example functionally complete, descriptor data and service meta data are still not accessable via the Qt API. Change-Id: Ifb84010b4fea054357c07424ac30116d1e4f9de0 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Diffstat (limited to 'src/bluetooth/qlowenergycontroller_android.cpp')
-rw-r--r--src/bluetooth/qlowenergycontroller_android.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/bluetooth/qlowenergycontroller_android.cpp b/src/bluetooth/qlowenergycontroller_android.cpp
index 3a7ca98d..c3cdde83 100644
--- a/src/bluetooth/qlowenergycontroller_android.cpp
+++ b/src/bluetooth/qlowenergycontroller_android.cpp
@@ -70,6 +70,9 @@ void QLowEnergyControllerPrivate::connectToDevice()
this, &QLowEnergyControllerPrivate::servicesDiscovered);
connect(hub, &LowEnergyNotificationHub::serviceDetailsDiscoveryFinished,
this, &QLowEnergyControllerPrivate::serviceDetailsDiscoveryFinished);
+ connect(hub, &LowEnergyNotificationHub::characteristicRead,
+ this, &QLowEnergyControllerPrivate::characteristicRead);
+
}
if (!hub->javaObject().isValid()) {
@@ -230,4 +233,28 @@ void QLowEnergyControllerPrivate::serviceDetailsDiscoveryFinished(
pointer->setState(QLowEnergyService::ServiceDiscovered);
}
+void QLowEnergyControllerPrivate::characteristicRead(
+ const QBluetoothUuid& serviceUuid, int handle,
+ const QBluetoothUuid &charUuid, int properties, const QByteArray &data)
+{
+ if (!serviceList.contains(serviceUuid))
+ return;
+
+ QSharedPointer<QLowEnergyServicePrivate> service =
+ serviceList.value(serviceUuid);
+ QLowEnergyHandle charHandle = handle;
+
+ QLowEnergyServicePrivate::CharData &charDetails =
+ service->characteristicList[charHandle];
+
+ //Android uses same properties value as Qt which is the Bluetooth LE standard
+ charDetails.properties = QLowEnergyCharacteristic::PropertyType(properties);
+ charDetails.uuid = charUuid;
+ charDetails.value = data;
+ //value handle always one larger than characteristics value handle
+ charDetails.valueHandle = charHandle + 1;
+
+ //service->characteristicList[charHandle] = charDetails;
+}
+
QT_END_NAMESPACE