diff --git a/examples/bluetooth/lowenergyscanner/assets/Services.qml b/examples/bluetooth/lowenergyscanner/assets/Services.qml index e4e802d2216186d369b8d76c90df3a5e3287ebca..a433d44578d7b0f5d2808216bc326e347a432fa5 100644 --- a/examples/bluetooth/lowenergyscanner/assets/Services.qml +++ b/examples/bluetooth/lowenergyscanner/assets/Services.qml @@ -45,6 +45,16 @@ Rectangle { width: 300 height: 600 + Component.onCompleted: { + // Loading this page may take longer than QLEController + // stopping with an error, go back and readjust this view + // based on controller errors + if (device.controllerError) { + info.visible = false; + menu.menuText = device.update + } + } + Header { id: header anchors.top: parent.top diff --git a/examples/bluetooth/lowenergyscanner/device.cpp b/examples/bluetooth/lowenergyscanner/device.cpp index acab48c26a5d2145501201c920fda74e3a84622f..b8d61fe33dcf771930f29b22a42d52ae43f9cfb3 100644 --- a/examples/bluetooth/lowenergyscanner/device.cpp +++ b/examples/bluetooth/lowenergyscanner/device.cpp @@ -268,7 +268,15 @@ void Device::setUpdate(QString message) void Device::disconnectFromDevice() { - controller->disconnectFromDevice(); + // UI always expects disconnect() signal when calling this signal + // TODO what is really needed is to extend state() to a multi value + // and thus allowing UI to keep track of controller progress in addition to + // device scan progress + + if (controller->state() != QLowEnergyController::UnconnectedState) + controller->disconnectFromDevice(); + else + deviceDisconnected(); } void Device::deviceDisconnected() @@ -316,6 +324,13 @@ bool Device::state() return m_deviceScanState; } +bool Device::hasControllerError() const +{ + if (controller && controller->error() != QLowEnergyController::NoError) + return true; + return false; +} + bool Device::isRandomAddress() const { return randomAddress; diff --git a/examples/bluetooth/lowenergyscanner/device.h b/examples/bluetooth/lowenergyscanner/device.h index 09b325994cd17caf6e1ee5265d1d876fd154f11c..049d1c61c5d8d12a2986f7a7e7abc3fb0b143104 100644 --- a/examples/bluetooth/lowenergyscanner/device.h +++ b/examples/bluetooth/lowenergyscanner/device.h @@ -66,6 +66,7 @@ class Device: public QObject Q_PROPERTY(QString update READ getUpdate NOTIFY updateChanged) Q_PROPERTY(bool useRandomAddress READ isRandomAddress WRITE setRandomAddress NOTIFY randomAddressChanged) Q_PROPERTY(bool state READ state NOTIFY stateChanged) + Q_PROPERTY(bool controllerError READ hasControllerError) public: Device(); ~Device(); @@ -74,6 +75,7 @@ public: QVariant getCharacteristics(); QString getUpdate(); bool state(); + bool hasControllerError() const; bool isRandomAddress() const; void setRandomAddress(bool newValue);