summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleksii Serdiuk <contacts@oleksii.name>2016-01-21 17:24:45 +0100
committerOleksii Serdiuk <contacts@oleksii.name>2016-02-02 08:56:54 +0000
commitd1a07d8609e4526059c8d083705f9c3ab7206b58 (patch)
treeab66cc789eb49d72ad51e9ac640bbaf1d8e167b9
parent0b0d7ee34f31ddb2028f59e4cdc66fcbc3575ef7 (diff)
downloadqtconnectivity-d1a07d8609e4526059c8d083705f9c3ab7206b58.tar.gz
Not all descriptors where discovered in some cases
While discovering descriptors, when handles are not numbered sequentially, the discovery stopped as soon as "no attribute in given range found" error is received. However, there could be more characteristics pending. As a result, descriptors for those characteristics where never discovered. Change-Id: Iad9d7203020b0787f1d4571fc7063ef390448ce9 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
-rw-r--r--src/bluetooth/qlowenergycontroller_bluez.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/bluetooth/qlowenergycontroller_bluez.cpp b/src/bluetooth/qlowenergycontroller_bluez.cpp
index b37ae4ad..436b3a43 100644
--- a/src/bluetooth/qlowenergycontroller_bluez.cpp
+++ b/src/bluetooth/qlowenergycontroller_bluez.cpp
@@ -868,7 +868,14 @@ void QLowEnergyControllerPrivate::processReply(
Q_ASSERT(!p.isNull());
if (isErrorResponse) {
- readServiceValues(p->uuid, false); //read descriptor values
+ if (keys.count() == 1) {
+ // no more descriptors to discover
+ readServiceValues(p->uuid, false); //read descriptor values
+ } else {
+ // hop to the next descriptor
+ keys.removeFirst();
+ discoverNextDescriptor(p, keys, keys.first());
+ }
break;
}