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#include "leadvertisingmanager.h"
10#include "debug.h"
11#include "leadvertisement.h"
12#include "leadvertisementadaptor.h"
13#include "leadvertisingmanager_p.h"
14#include "pendingcall.h"
15#include "utils.h"
16
17namespace BluezQt
18{
19LEAdvertisingManager::LEAdvertisingManager(const QString &path, QObject *parent)
20 : QObject(parent)
21 , d(new LEAdvertisingManagerPrivate())
22{
23 d->m_path = path;
24 d->m_bluezLEAdvertisingManager = new BluezLEAdvertisingManager(Strings::orgBluez(), path, DBusConnection::orgBluez(), this);
25}
26
27LEAdvertisingManager::~LEAdvertisingManager() = default;
28
29PendingCall *LEAdvertisingManager::registerAdvertisement(LEAdvertisement *advertisement)
30{
31 Q_ASSERT(advertisement);
32
33 if (!d->m_bluezLEAdvertisingManager) {
34 return new PendingCall(PendingCall::InternalError, QStringLiteral("LEAdvertisingManager not operational!"));
35 }
36
37 new LEAdvertisementAdaptor(advertisement);
38
39 if (!DBusConnection::orgBluez().registerObject(path: advertisement->objectPath().path(), object: advertisement)) {
40 qCDebug(BLUEZQT) << "Cannot register object" << advertisement->objectPath().path();
41 }
42
43 return new PendingCall(d->m_bluezLEAdvertisingManager->RegisterAdvertisement(advertisement: advertisement->objectPath(), options: QVariantMap()), PendingCall::ReturnVoid, this);
44}
45
46PendingCall *LEAdvertisingManager::unregisterAdvertisement(LEAdvertisement *advertisement)
47{
48 Q_ASSERT(advertisement);
49
50 if (!d->m_bluezLEAdvertisingManager) {
51 return new PendingCall(PendingCall::InternalError, QStringLiteral("LEAdvertisingManager not operational!"));
52 }
53
54 DBusConnection::orgBluez().unregisterObject(path: advertisement->objectPath().path());
55
56 return new PendingCall(d->m_bluezLEAdvertisingManager->UnregisterAdvertisement(advertisement: advertisement->objectPath()), PendingCall::ReturnVoid, this);
57}
58
59} // namespace BluezQt
60
61#include "moc_leadvertisingmanager.cpp"
62

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