File indexing completed on 2024-12-01 12:29:47
0001 /* 0002 * BluezQt - Asynchronous BlueZ wrapper library 0003 * 0004 * SPDX-FileCopyrightText: 2019 Manuel Weichselbaumer <mincequi@web.de> 0005 * 0006 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0007 */ 0008 0009 #ifndef BLUEZQT_GATTAPPLICATION_H 0010 #define BLUEZQT_GATTAPPLICATION_H 0011 0012 #include <QObject> 0013 0014 #include "bluezqt_export.h" 0015 0016 class QDBusObjectPath; 0017 0018 namespace BluezQt 0019 { 0020 /** 0021 * @class BluezQt::GattApplication GattApplication.h <BluezQt/GattApplication> 0022 * 0023 * Bluetooth GattApplication. 0024 * 0025 * This class represents a Bluetooth GattApplication, which is the root node of 0026 * a GATT object hierarchy. Its child nodes can be GattServices, 0027 * GattCharacteristics and GattDescriptors that belong to that GattApplication. 0028 * The object path prefix for GattApplications is freely definable and its 0029 * children's paths follow the application path hierarchy automatically, while 0030 * all instances are enumerated automatically as well. 0031 * 0032 * Object path: [variable prefix]/appXX/serviceYY/charZZ 0033 * 0034 */ 0035 class BLUEZQT_EXPORT GattApplication : public QObject 0036 { 0037 Q_OBJECT 0038 0039 public: 0040 /** 0041 * Creates a new GattApplication object with default object path prefix. 0042 * 0043 * Object path: /org/kde/bluezqt/appXX/serviceYY/charZZ 0044 * 0045 * @param parent 0046 */ 0047 explicit GattApplication(QObject *parent = nullptr); 0048 0049 /** 0050 * Creates a new GattApplication object with custom object path prefix. 0051 * 0052 * Object path: [objectPathPrefix]/appXX/serviceYY/charZZ 0053 * 0054 * @param objectPathPrefix 0055 * @param parent 0056 */ 0057 explicit GattApplication(const QString &objectPathPrefix, QObject *parent = nullptr); 0058 0059 /** 0060 * Destroys a GattApplication object. 0061 */ 0062 ~GattApplication() override; 0063 0064 private: 0065 /** 0066 * D-Bus object path of the GATT application. 0067 * 0068 * The path where the GATT application will be registered. 0069 * 0070 * @note You must provide valid object path! 0071 * 0072 * @return object path of GATT application 0073 */ 0074 virtual QDBusObjectPath objectPath() const; 0075 0076 class GattApplicationPrivate *const d; 0077 0078 friend class GattManager; 0079 friend class GattService; 0080 friend class ObjectManagerAdaptor; 0081 }; 0082 0083 } // namespace BluezQt 0084 0085 #endif