BluezQt 5.109.0
gattserviceremote.h
1/*
2 * BluezQt - Asynchronous Bluez wrapper library
3 *
4 * SPDX-FileCopyrightText: 2021 Ivan Podkurkov <podkiva2@gmail.com>
5 *
6 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
7 */
8
9#ifndef BLUEZQT_GATTSERVICEREMOTE_H
10#define BLUEZQT_GATTSERVICEREMOTE_H
11
12#include <QObject>
13#include <QMap>
14#include <QDBusObjectPath>
15
16#include "types.h"
17#include "bluezqt_export.h"
18
19namespace BluezQt
20{
21
22class Device;
23class PendingCall;
24
32class BLUEZQT_EXPORT GattServiceRemote : public QObject
33{
34 Q_OBJECT
35
36 Q_PROPERTY(QString uuid READ uuid NOTIFY uuidChanged)
37 Q_PROPERTY(bool primary READ isPrimary NOTIFY primaryChanged)
38 Q_PROPERTY(DevicePtr device READ device CONSTANT)
39 Q_PROPERTY(QList<QDBusObjectPath> includes READ includes NOTIFY includesChanged)
40 Q_PROPERTY(quint16 handle READ handle WRITE setHandle NOTIFY handleChanged)
41 Q_PROPERTY(QList<GattCharacteristicRemotePtr> characteristics READ characteristics NOTIFY characteristicsChanged)
42
43public:
47 ~GattServiceRemote() override;
48
54 GattServiceRemotePtr toSharedPtr() const;
55
63 QString ubi() const;
64
70 QString uuid() const;
71
77 bool isPrimary() const;
78
84 DevicePtr device() const;
85
92 QList<QDBusObjectPath> includes() const;
93
99 quint16 handle() const;
100
107 PendingCall *setHandle(quint16 handle);
108
115 QList<GattCharacteristicRemotePtr> characteristics() const;
116
117Q_SIGNALS:
121 void serviceChanged(GattServiceRemotePtr service);
122
126 void gattCharacteristicAdded(GattCharacteristicRemotePtr characteristic);
127
131 void characteristicsChanged(QList<GattCharacteristicRemotePtr> characteristics);
132
136 void gattCharacteristicRemoved(GattCharacteristicRemotePtr characteristic);
137
141 void gattCharacteristicChanged(GattCharacteristicRemotePtr characteristic);
142
146 void uuidChanged(const QString &uuid);
147
151 void primaryChanged(bool primary);
152
156 void handleChanged(quint16 handle);
157
162 void includesChanged(const QList<QDBusObjectPath> &includes);
163
164private:
165 BLUEZQT_NO_EXPORT explicit GattServiceRemote(const QString &path, const QVariantMap &properties, DevicePtr device);
166
167 const std::unique_ptr<class GattServiceRemotePrivate> d;
168
169 friend class GattServiceRemotePrivate;
170 friend class DevicePrivate;
171 friend class ManagerPrivate;
172 friend class Adapter;
173};
174
175} // namespace BluezQt
176
177#endif // BLUEZQT_GATTSERVICEREMOTE_H