diff options
author | Alex Blasche <alexander.blasche@theqtcompany.com> | 2014-11-07 12:06:43 +0100 |
---|---|---|
committer | Alex Blasche <alexander.blasche@theqtcompany.com> | 2014-11-10 14:32:51 +0100 |
commit | 327b6b7f8ff9acda74f403f2ff286e67f4202dfd (patch) | |
tree | a8c5649da588a0d428b4710b6d0080fe2d273da1 /src/bluetooth/qlowenergycontroller_android.cpp | |
parent | e0dc61db4af89cce14ade3582ac92e4b713c7982 (diff) | |
download | qtconnectivity-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.cpp | 27 |
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 |