diff options
author | Oleksii Serdiuk <contacts@oleksii.name> | 2016-01-21 17:24:45 +0100 |
---|---|---|
committer | Oleksii Serdiuk <contacts@oleksii.name> | 2016-02-02 08:56:54 +0000 |
commit | d1a07d8609e4526059c8d083705f9c3ab7206b58 (patch) | |
tree | ab66cc789eb49d72ad51e9ac640bbaf1d8e167b9 /src | |
parent | 0b0d7ee34f31ddb2028f59e4cdc66fcbc3575ef7 (diff) |
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>
Diffstat (limited to 'src')
-rw-r--r-- | src/bluetooth/qlowenergycontroller_bluez.cpp | 9 |
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; } |