diff options
-rw-r--r-- | src/bluetooth/bluez/hcimanager.cpp | 1 | ||||
-rw-r--r-- | src/bluetooth/qlowenergycontroller_bluez.cpp | 11 | ||||
-rw-r--r-- | src/bluetooth/qlowenergycontroller_p.h | 2 |
3 files changed, 14 insertions, 0 deletions
diff --git a/src/bluetooth/bluez/hcimanager.cpp b/src/bluetooth/bluez/hcimanager.cpp index 449f0825..17d54a4b 100644 --- a/src/bluetooth/bluez/hcimanager.cpp +++ b/src/bluetooth/bluez/hcimanager.cpp @@ -150,6 +150,7 @@ bool HciManager::monitorEvent(HciManager::HciEvent event) return false; // this event is already enabled + // TODO runningEvents does not seem to be used if (runningEvents.contains(event)) return true; diff --git a/src/bluetooth/qlowenergycontroller_bluez.cpp b/src/bluetooth/qlowenergycontroller_bluez.cpp index 4f8021e2..5629966d 100644 --- a/src/bluetooth/qlowenergycontroller_bluez.cpp +++ b/src/bluetooth/qlowenergycontroller_bluez.cpp @@ -271,6 +271,7 @@ void QLowEnergyControllerPrivate::disconnectFromDevice() { setState(QLowEnergyController::ClosingState); l2cpSocket->close(); + resetController(); } void QLowEnergyControllerPrivate::l2cpDisconnected() @@ -306,9 +307,19 @@ void QLowEnergyControllerPrivate::l2cpErrorChanged(QBluetoothSocket::SocketError } invalidateServices(); + resetController(); setState(QLowEnergyController::UnconnectedState); } + +void QLowEnergyControllerPrivate::resetController() +{ + openRequests.clear(); + requestPending = false; + encryptionChangePending = false; + securityLevelValue = -1; +} + void QLowEnergyControllerPrivate::l2cpReadyRead() { const QByteArray reply = l2cpSocket->readAll(); diff --git a/src/bluetooth/qlowenergycontroller_p.h b/src/bluetooth/qlowenergycontroller_p.h index ee206035..db1b346a 100644 --- a/src/bluetooth/qlowenergycontroller_p.h +++ b/src/bluetooth/qlowenergycontroller_p.h @@ -160,6 +160,8 @@ private: const QByteArray &newValue, quint16 offset); bool increaseEncryptLevelfRequired(quint8 errorCode); + void resetController(); + private slots: void l2cpConnected(); void l2cpDisconnected(); |