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_LEADVERTISINGMANAGER_H
10#define BLUEZQT_LEADVERTISINGMANAGER_H
11
12#include <QObject>
13
14#include "bluezqt_export.h"
15
16#include <memory>
17
18namespace BluezQt
19{
20class LEAdvertisement;
21class PendingCall;
22
23/*!
24 * \inmodule BluezQt
25 * \class BluezQt::LEAdvertisingManager
26 * \inheaderfile BluezQt/LEAdvertisingManager
27 * \brief Bluetooth LE advertising manager.
28 *
29 * The Advertising Manager allows external applications to register Advertisement
30 * Data which should be broadcast to devices. Advertisement Data elements must
31 * follow the API for LE Advertisement Data.
32 *
33 * \sa LEAdvertisement
34 */
35class BLUEZQT_EXPORT LEAdvertisingManager : public QObject
36{
37 Q_OBJECT
38
39public:
40 ~LEAdvertisingManager() override;
41
42 /*!
43 * Registers an \a advertisement object to be sent over the LE Advertising
44 * channel.
45 *
46 * The service must be exported under interface LEAdvertisement1.
47 *
48 * InvalidArguments error indicates invalid or conflicting properties.
49 *
50 * InvalidLength error indicates that provided data results in too long data packet.
51 *
52 * The properties of this object are parsed on register, any changes are ignored.
53 *
54 * If the same object is registered twice it will result in an AlreadyExists error.
55 *
56 * NotPermitted error indicates that the maximum number of advertisements is reached.
57 *
58 * Possible errors:
59 *
60 * \list
61 * \li PendingCall::InvalidArguments
62 * \li PendingCall::AlreadyExists
63 * \li PendingCall::InvalidLength
64 * \li PendingCall::NotPermitted
65 * \endlist
66 *
67 * Returns void pending call.
68 */
69 PendingCall *registerAdvertisement(LEAdvertisement *advertisement);
70
71 /*!
72 * Unregisters \a advertisement.
73 *
74 * This unregisters an advertisement that has been previously registered.
75 * The object path must match the same value that has been used on registration.
76 *
77 * Possible errors:
78 *
79 * \list
80 * \li PendingCall::InvalidArguments
81 * \li PendingCall::DoesNotExist
82 * \endlist
83 *
84 * Returns void pending call.
85 */
86 PendingCall *unregisterAdvertisement(LEAdvertisement *advertisement);
87
88private:
89 BLUEZQT_NO_EXPORT explicit LEAdvertisingManager(const QString &path, QObject *parent = nullptr);
90
91 std::unique_ptr<class LEAdvertisingManagerPrivate> const d;
92
93 friend class AdapterPrivate;
94};
95
96} // namespace BluezQt
97
98#endif // BLUEZQT_LEADVERTISINGMANAGER_H
99

source code of bluez-qt/src/leadvertisingmanager.h