diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2016-02-16 21:52:03 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2016-02-16 21:52:03 +0100 |
commit | eef68dea35960670c1a1a1431d4541e1ed19c781 (patch) | |
tree | 097e6575b0cbc43704077d76372c986dcce3c998 /src/bluetooth/qlowenergycontroller_bluez.cpp | |
parent | fa2389dd0a6df58d73d221654db36ff791b96e43 (diff) | |
parent | c87458961f29064ab69a308526b0243debcdf1f7 (diff) |
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
.qmake.conf
src/bluetooth/qlowenergycontroller_bluez.cpp
Change-Id: I00f45a2a22a045e7836f2caeb76cc5599ced6279
Diffstat (limited to 'src/bluetooth/qlowenergycontroller_bluez.cpp')
-rw-r--r-- | src/bluetooth/qlowenergycontroller_bluez.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/bluetooth/qlowenergycontroller_bluez.cpp b/src/bluetooth/qlowenergycontroller_bluez.cpp index 06586192..729847f9 100644 --- a/src/bluetooth/qlowenergycontroller_bluez.cpp +++ b/src/bluetooth/qlowenergycontroller_bluez.cpp @@ -263,7 +263,10 @@ QLowEnergyControllerPrivate::QLowEnergyControllerPrivate() { registerQLowEnergyControllerMetaType(); qRegisterMetaType<QList<QLowEnergyHandle> >(); +} +void QLowEnergyControllerPrivate::init() +{ hciManager = new HciManager(localAdapter, this); if (!hciManager->isValid()) return; @@ -602,7 +605,12 @@ void QLowEnergyControllerPrivate::l2cpReadyRead() break; } - Q_ASSERT(!openRequests.isEmpty()); + if (openRequests.isEmpty()) { + qCWarning(QT_BT_BLUEZ) << "Received unexpected packet from peer, disconnecting."; + disconnectFromDevice(); + return; + } + const Request request = openRequests.dequeue(); processReply(request, incomingPacket); @@ -1074,7 +1082,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; } |