1 | /* |
2 | * BluezQt - Asynchronous BlueZ wrapper library |
3 | * |
4 | * SPDX-FileCopyrightText: 2019 Manuel Weichselbaumer <mincequi@web.de> |
5 | * |
6 | * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL |
7 | */ |
8 | |
9 | #ifndef BLUEZQT_GATTAPPLICATION_H |
10 | #define BLUEZQT_GATTAPPLICATION_H |
11 | |
12 | #include <QObject> |
13 | |
14 | #include "bluezqt_export.h" |
15 | |
16 | #include <memory> |
17 | |
18 | class QDBusObjectPath; |
19 | |
20 | namespace BluezQt |
21 | { |
22 | /** |
23 | * @class BluezQt::GattApplication GattApplication.h <BluezQt/GattApplication> |
24 | * |
25 | * Bluetooth GattApplication. |
26 | * |
27 | * This class represents a Bluetooth GattApplication, which is the root node of |
28 | * a GATT object hierarchy. Its child nodes can be GattServices, |
29 | * GattCharacteristics and GattDescriptors that belong to that GattApplication. |
30 | * The object path prefix for GattApplications is freely definable and its |
31 | * children's paths follow the application path hierarchy automatically, while |
32 | * all instances are enumerated automatically as well. |
33 | * |
34 | * Object path: [variable prefix]/appXX/serviceYY/charZZ |
35 | * |
36 | */ |
37 | class BLUEZQT_EXPORT GattApplication : public QObject |
38 | { |
39 | Q_OBJECT |
40 | |
41 | public: |
42 | /** |
43 | * Creates a new GattApplication object with default object path prefix. |
44 | * |
45 | * Object path: /org/kde/bluezqt/appXX/serviceYY/charZZ |
46 | * |
47 | * @param parent |
48 | */ |
49 | explicit GattApplication(QObject *parent = nullptr); |
50 | |
51 | /** |
52 | * Creates a new GattApplication object with custom object path prefix. |
53 | * |
54 | * Object path: [objectPathPrefix]/appXX/serviceYY/charZZ |
55 | * |
56 | * @param objectPathPrefix |
57 | * @param parent |
58 | */ |
59 | explicit GattApplication(const QString &objectPathPrefix, QObject *parent = nullptr); |
60 | |
61 | /** |
62 | * Destroys a GattApplication object. |
63 | */ |
64 | ~GattApplication() override; |
65 | |
66 | private: |
67 | /** |
68 | * D-Bus object path of the GATT application. |
69 | * |
70 | * The path where the GATT application will be registered. |
71 | * |
72 | * @note You must provide valid object path! |
73 | * |
74 | * @return object path of GATT application |
75 | */ |
76 | virtual QDBusObjectPath objectPath() const; |
77 | |
78 | std::unique_ptr<class GattApplicationPrivate> const d; |
79 | |
80 | friend class GattManager; |
81 | friend class GattService; |
82 | friend class ObjectManagerAdaptor; |
83 | }; |
84 | |
85 | } // namespace BluezQt |
86 | |
87 | #endif |
88 | |