-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdevice.h
119 lines (99 loc) · 3.58 KB
/
device.h
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
// 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 <QBluetoothDeviceDiscoveryAgent>
#include <QLowEnergyController>
#include <QLowEnergyService>
#include <QList>
#include <QObject>
#include <QVariant>
#include <QQmlEngine>
#include <QTimer>
#include <controllerobject.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)
Q_PROPERTY(bool rxTxConnected READ rxTxConnected NOTIFY rxTxConnectionChanged)
Q_PROPERTY(QString connectedDeviceName READ connectedDeviceName NOTIFY currentDeviceChanged)
Q_PROPERTY(QString connectedDeviceId READ connectedDeviceId NOTIFY currentDeviceChanged)
Q_PROPERTY(ControllerObject *controller MEMBER m_controler_object CONSTANT)
QML_ELEMENT
QML_SINGLETON
public:
Device();
~Device();
QVariant getDevices();
QVariant getServices();
QVariant getCharacteristics();
QString getUpdate();
bool state();
bool hasControllerError() const;
bool isRandomAddress() const;
void setRandomAddress(bool newValue);
bool rxTxConnected() const;
QString connectedDeviceName() const;
QString connectedDeviceId() const;
public slots:
void startDeviceDiscovery();
void stopDeviceDiscovery();
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);
void writeData(QByteArray data);
Q_SIGNALS:
void devicesUpdated();
void servicesUpdated();
void characteristicsUpdated();
void updateChanged();
void stateChanged();
void disconnected();
void randomAddressChanged();
void rxTxConnectionChanged();
void currentDeviceChanged();
private:
void setUpdate(const QString &message);
QBluetoothDeviceDiscoveryAgent *discoveryAgent;
DeviceInfo currentDevice;
QList<DeviceInfo *> devices;
QList<ServiceInfo *> m_services;
QList<CharacteristicInfo *> m_characteristics;
QString m_previousAddress;
QString m_message;
bool connected = false;
QLowEnergyController *controller = nullptr;
bool m_deviceScanState = false;
bool randomAddress = false;
QLowEnergyService *m_rx_tx_service = nullptr;
QLowEnergyCharacteristic m_tx_characteric;
ControllerObject *m_controler_object = nullptr;
};
#endif // DEVICE_H