blob: 6a1d2b9cb9a6da5c1c014ff4f82392a250c93892 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef DEVICE_H
#define DEVICE_H
#include "characteristicinfo.h"
#include "deviceinfo.h"
#include "serviceinfo.h"
#include <QtBluetooth/qbluetoothdevicediscoveryagent.h>
#include <QtBluetooth/qlowenergycontroller.h>
#include <QtBluetooth/qlowenergyservice.h>
#include <QtCore/qlist.h>
#include <QtCore/qobject.h>
#include <QtCore/qvariant.h>
QT_BEGIN_NAMESPACE
class QBluetoothDeviceInfo;
class QBluetoothUuid;
QT_END_NAMESPACE
class Device: public QObject
{
Q_OBJECT
Q_PROPERTY(QVariant devicesList READ getDevices NOTIFY devicesUpdated)
Q_PROPERTY(QVariant servicesList READ getServices NOTIFY servicesUpdated)
Q_PROPERTY(QVariant characteristicList READ getCharacteristics NOTIFY characteristicsUpdated)
Q_PROPERTY(QString update READ getUpdate WRITE setUpdate 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();
QVariant getDevices();
QVariant getServices();
QVariant getCharacteristics();
QString getUpdate();
bool state();
bool hasControllerError() const;
bool isRandomAddress() const;
void setRandomAddress(bool newValue);
public slots:
void startDeviceDiscovery();
void scanServices(const QString &address);
void connectToService(const QString &uuid);
void disconnectFromDevice();
private slots:
// QBluetoothDeviceDiscoveryAgent related
void addDevice(const QBluetoothDeviceInfo&);
void deviceScanFinished();
void deviceScanError(QBluetoothDeviceDiscoveryAgent::Error);
// QLowEnergyController realted
void addLowEnergyService(const QBluetoothUuid &uuid);
void deviceConnected();
void errorReceived(QLowEnergyController::Error);
void serviceScanDone();
void deviceDisconnected();
// QLowEnergyService related
void serviceDetailsDiscovered(QLowEnergyService::ServiceState newState);
Q_SIGNALS:
void devicesUpdated();
void servicesUpdated();
void characteristicsUpdated();
void updateChanged();
void stateChanged();
void disconnected();
void randomAddressChanged();
private:
void setUpdate(const QString &message);
QBluetoothDeviceDiscoveryAgent *discoveryAgent;
DeviceInfo currentDevice;
QList<QObject *> devices;
QList<QObject *> m_services;
QList<QObject *> m_characteristics;
QString m_previousAddress;
QString m_message;
bool connected = false;
QLowEnergyController *controller = nullptr;
bool m_deviceScanState = false;
bool randomAddress = false;
};
#endif // DEVICE_H
|