summaryrefslogtreecommitdiffstats
path: root/examples/bluetooth/lowenergyscanner
diff options
context:
space:
mode:
Diffstat (limited to 'examples/bluetooth/lowenergyscanner')
-rw-r--r--examples/bluetooth/lowenergyscanner/assets/Characteristics.qml9
-rw-r--r--examples/bluetooth/lowenergyscanner/assets/Dialog.qml22
-rw-r--r--examples/bluetooth/lowenergyscanner/assets/busy_dark.pngbin0 -> 1130 bytes
-rw-r--r--examples/bluetooth/lowenergyscanner/assets/main.qml20
-rw-r--r--examples/bluetooth/lowenergyscanner/device.cpp22
-rw-r--r--examples/bluetooth/lowenergyscanner/device.h6
-rw-r--r--examples/bluetooth/lowenergyscanner/resources.qrc1
7 files changed, 70 insertions, 10 deletions
diff --git a/examples/bluetooth/lowenergyscanner/assets/Characteristics.qml b/examples/bluetooth/lowenergyscanner/assets/Characteristics.qml
index 4a7db471..ac3b7151 100644
--- a/examples/bluetooth/lowenergyscanner/assets/Characteristics.qml
+++ b/examples/bluetooth/lowenergyscanner/assets/Characteristics.qml
@@ -62,10 +62,13 @@ Rectangle {
target: device
onCharacteristicsUpdated: {
menu.menuText = "Back"
- if (characteristicview.count === 0)
+ if (characteristicview.count === 0) {
info.dialogText = "No characteristic found"
- else
- info.visible = false;
+ info.busyImage = false
+ } else {
+ info.visible = false
+ info.busyImage = true
+ }
}
onDisconnected: {
diff --git a/examples/bluetooth/lowenergyscanner/assets/Dialog.qml b/examples/bluetooth/lowenergyscanner/assets/Dialog.qml
index be5388b5..2b8580f3 100644
--- a/examples/bluetooth/lowenergyscanner/assets/Dialog.qml
+++ b/examples/bluetooth/lowenergyscanner/assets/Dialog.qml
@@ -41,21 +41,39 @@
import QtQuick 2.0
Rectangle {
- width: parent.width/2
+ width: parent.width/3*2
height: 62
z: 50
property string dialogText: ""
+ property bool busyImage: true
border.width: 1
border.color: "#363636"
radius: 10
Text {
+ id: dialogTextId
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
- anchors.fill: parent
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: parent.top;
+ anchors.topMargin: 10
+
elide: Text.ElideMiddle
text: dialogText
color: "#363636"
wrapMode: Text.Wrap
}
+
+ Image {
+ id: background
+
+ width:20
+ height:20
+ anchors.top: dialogTextId.bottom
+ anchors.horizontalCenter: dialogTextId.horizontalCenter
+ visible: parent.busyImage
+ source: "busy_dark.png"
+ fillMode: Image.PreserveAspectFit
+ NumberAnimation on rotation { duration: 3000; from:0; to: 360; loops: Animation.Infinite}
+ }
}
diff --git a/examples/bluetooth/lowenergyscanner/assets/busy_dark.png b/examples/bluetooth/lowenergyscanner/assets/busy_dark.png
new file mode 100644
index 00000000..3a105953
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/assets/busy_dark.png
Binary files differ
diff --git a/examples/bluetooth/lowenergyscanner/assets/main.qml b/examples/bluetooth/lowenergyscanner/assets/main.qml
index 9f0395d5..e135d699 100644
--- a/examples/bluetooth/lowenergyscanner/assets/main.qml
+++ b/examples/bluetooth/lowenergyscanner/assets/main.qml
@@ -69,7 +69,7 @@ Rectangle {
clip: true
anchors.top: header.bottom
- anchors.bottom: menu.top
+ anchors.bottom: connectToggle.top
model: device.devicesList
delegate: Rectangle {
@@ -112,6 +112,24 @@ Rectangle {
}
Menu {
+ id: connectToggle
+
+ menuWidth: parent.width
+ anchors.bottom: menu.top
+ menuText: { if (device.devicesList.length)
+ visible = true
+ else
+ visible = false
+ if (device.useRandomAddress)
+ "Address type: Random"
+ else
+ "Address type: Public"
+ }
+
+ onButtonClick: device.useRandomAddress = !device.useRandomAddress;
+ }
+
+ Menu {
id: menu
anchors.bottom: parent.bottom
menuWidth: parent.width
diff --git a/examples/bluetooth/lowenergyscanner/device.cpp b/examples/bluetooth/lowenergyscanner/device.cpp
index 9ffb4d56..215a7588 100644
--- a/examples/bluetooth/lowenergyscanner/device.cpp
+++ b/examples/bluetooth/lowenergyscanner/device.cpp
@@ -50,7 +50,7 @@
#include <QTimer>
Device::Device():
- connected(false), controller(0), m_deviceScanState(false)
+ connected(false), controller(0), m_deviceScanState(false), randomAddress(false)
{
//! [les-devicediscovery-1]
discoveryAgent = new QBluetoothDeviceDiscoveryAgent();
@@ -176,6 +176,10 @@ void Device::scanServices(const QString &address)
this, SLOT(serviceScanDone()));
}
+ if (isRandomAddress())
+ controller->setRemoteAddressType(QLowEnergyController::RandomAddress);
+ else
+ controller->setRemoteAddressType(QLowEnergyController::PublicAddress);
controller->connectToDevice();
//! [les-controller-1]
}
@@ -250,7 +254,7 @@ void Device::deviceConnected()
void Device::errorReceived(QLowEnergyController::Error /*error*/)
{
qWarning() << "Error: " << controller->errorString();
- setUpdate(controller->errorString());
+ setUpdate(QString("Back\n(%1)").arg(controller->errorString()));
}
void Device::setUpdate(QString message)
@@ -261,8 +265,7 @@ void Device::setUpdate(QString message)
void Device::disconnectFromDevice()
{
- if (connected)
- controller->disconnectFromDevice();
+ controller->disconnectFromDevice();
}
void Device::deviceDisconnected()
@@ -305,3 +308,14 @@ bool Device::state()
{
return m_deviceScanState;
}
+
+bool Device::isRandomAddress() const
+{
+ return randomAddress;
+}
+
+void Device::setRandomAddress(bool newValue)
+{
+ randomAddress = newValue;
+ emit randomAddressChanged();
+}
diff --git a/examples/bluetooth/lowenergyscanner/device.h b/examples/bluetooth/lowenergyscanner/device.h
index f15c4c95..97a52b26 100644
--- a/examples/bluetooth/lowenergyscanner/device.h
+++ b/examples/bluetooth/lowenergyscanner/device.h
@@ -65,6 +65,7 @@ class Device: public QObject
Q_PROPERTY(QVariant servicesList READ getServices NOTIFY servicesUpdated)
Q_PROPERTY(QVariant characteristicList READ getCharacteristics NOTIFY characteristicsUpdated)
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)
public:
Device();
@@ -75,6 +76,9 @@ public:
QString getUpdate();
bool state();
+ bool isRandomAddress() const;
+ void setRandomAddress(bool newValue);
+
public slots:
void startDeviceDiscovery();
void scanServices(const QString &address);
@@ -105,6 +109,7 @@ Q_SIGNALS:
void updateChanged();
void stateChanged();
void disconnected();
+ void randomAddressChanged();
private:
void setUpdate(QString message);
@@ -117,6 +122,7 @@ private:
bool connected;
QLowEnergyController *controller;
bool m_deviceScanState;
+ bool randomAddress;
};
#endif // DEVICE_H
diff --git a/examples/bluetooth/lowenergyscanner/resources.qrc b/examples/bluetooth/lowenergyscanner/resources.qrc
index 49a518e8..4634cf6b 100644
--- a/examples/bluetooth/lowenergyscanner/resources.qrc
+++ b/examples/bluetooth/lowenergyscanner/resources.qrc
@@ -7,5 +7,6 @@
<file>assets/Header.qml</file>
<file>assets/Dialog.qml</file>
<file>assets/Label.qml</file>
+ <file>assets/busy_dark.png</file>
</qresource>
</RCC>