From d1a07d8609e4526059c8d083705f9c3ab7206b58 Mon Sep 17 00:00:00 2001 From: Oleksii Serdiuk Date: Thu, 21 Jan 2016 17:24:45 +0100 Subject: 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 --- src/bluetooth/qlowenergycontroller_bluez.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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; } -- cgit v1.2.3