1// Copyright (C) 2016 The Qt Company Ltd.
2// Copyright (C) 2014 Denis Shienkov <denis.shienkov@gmail.com>
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
4
5#ifndef QBLUETOOTHDEVICEDISCOVERYAGENT_H
6#define QBLUETOOTHDEVICEDISCOVERYAGENT_H
7
8#include <QtBluetooth/qtbluetoothglobal.h>
9
10#include <QtCore/QObject>
11#include <QtBluetooth/QBluetoothDeviceInfo>
12#include <QtBluetooth/QBluetoothAddress>
13
14QT_BEGIN_NAMESPACE
15
16class QBluetoothDeviceDiscoveryAgentPrivate;
17
18class Q_BLUETOOTH_EXPORT QBluetoothDeviceDiscoveryAgent : public QObject
19{
20 Q_OBJECT
21
22public:
23 // FIXME: add more errors
24 // FIXME: add bluez error handling
25 enum Error {
26 NoError,
27 InputOutputError,
28 PoweredOffError,
29 InvalidBluetoothAdapterError,
30 UnsupportedPlatformError,
31 UnsupportedDiscoveryMethod,
32 LocationServiceTurnedOffError,
33 MissingPermissionsError,
34 UnknownError = 100 // New errors must be added before Unknown error
35 };
36 Q_ENUM(Error)
37
38 enum DiscoveryMethod
39 {
40 NoMethod = 0x0,
41 ClassicMethod = 0x01,
42 LowEnergyMethod = 0x02,
43 };
44 Q_DECLARE_FLAGS(DiscoveryMethods, DiscoveryMethod)
45 Q_FLAG(DiscoveryMethods)
46
47 explicit QBluetoothDeviceDiscoveryAgent(QObject *parent = nullptr);
48 explicit QBluetoothDeviceDiscoveryAgent(const QBluetoothAddress &deviceAdapter,
49 QObject *parent = nullptr);
50 ~QBluetoothDeviceDiscoveryAgent();
51
52 bool isActive() const;
53
54 Error error() const;
55 QString errorString() const;
56
57 QList<QBluetoothDeviceInfo> discoveredDevices() const;
58
59 void setLowEnergyDiscoveryTimeout(int msTimeout);
60 int lowEnergyDiscoveryTimeout() const;
61
62 static DiscoveryMethods supportedDiscoveryMethods();
63public Q_SLOTS:
64 void start();
65 void start(DiscoveryMethods method);
66 void stop();
67
68Q_SIGNALS:
69 void deviceDiscovered(const QBluetoothDeviceInfo &info);
70 void deviceUpdated(const QBluetoothDeviceInfo &info, QBluetoothDeviceInfo::Fields updatedFields);
71 void finished();
72 void errorOccurred(QBluetoothDeviceDiscoveryAgent::Error error);
73 void canceled();
74
75private:
76 Q_DECLARE_PRIVATE(QBluetoothDeviceDiscoveryAgent)
77 QBluetoothDeviceDiscoveryAgentPrivate *d_ptr;
78};
79
80Q_DECLARE_OPERATORS_FOR_FLAGS(QBluetoothDeviceDiscoveryAgent::DiscoveryMethods)
81
82QT_END_NAMESPACE
83
84#endif
85

source code of qtconnectivity/src/bluetooth/qbluetoothdevicediscoveryagent.h