File indexing completed on 2025-02-16 09:55:14
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 #include "leadvertisingmanager.h" 0010 #include "debug.h" 0011 #include "leadvertisement.h" 0012 #include "leadvertisementadaptor.h" 0013 #include "leadvertisingmanager_p.h" 0014 #include "pendingcall.h" 0015 #include "utils.h" 0016 0017 namespace BluezQt 0018 { 0019 LEAdvertisingManager::LEAdvertisingManager(const QString &path, QObject *parent) 0020 : QObject(parent) 0021 , d(new LEAdvertisingManagerPrivate()) 0022 { 0023 d->m_path = path; 0024 d->m_bluezLEAdvertisingManager = new BluezLEAdvertisingManager(Strings::orgBluez(), path, DBusConnection::orgBluez(), this); 0025 } 0026 0027 LEAdvertisingManager::~LEAdvertisingManager() 0028 { 0029 delete d; 0030 } 0031 0032 PendingCall *LEAdvertisingManager::registerAdvertisement(LEAdvertisement *advertisement) 0033 { 0034 Q_ASSERT(advertisement); 0035 0036 if (!d->m_bluezLEAdvertisingManager) { 0037 return new PendingCall(PendingCall::InternalError, QStringLiteral("LEAdvertisingManager not operational!")); 0038 } 0039 0040 new LEAdvertisementAdaptor(advertisement); 0041 0042 if (!DBusConnection::orgBluez().registerObject(advertisement->objectPath().path(), advertisement)) { 0043 qCDebug(BLUEZQT) << "Cannot register object" << advertisement->objectPath().path(); 0044 } 0045 0046 return new PendingCall(d->m_bluezLEAdvertisingManager->RegisterAdvertisement(advertisement->objectPath(), QVariantMap()), PendingCall::ReturnVoid, this); 0047 } 0048 0049 PendingCall *LEAdvertisingManager::unregisterAdvertisement(LEAdvertisement *advertisement) 0050 { 0051 Q_ASSERT(advertisement); 0052 0053 if (!d->m_bluezLEAdvertisingManager) { 0054 return new PendingCall(PendingCall::InternalError, QStringLiteral("LEAdvertisingManager not operational!")); 0055 } 0056 0057 DBusConnection::orgBluez().unregisterObject(advertisement->objectPath().path()); 0058 0059 return new PendingCall(d->m_bluezLEAdvertisingManager->UnregisterAdvertisement(advertisement->objectPath()), PendingCall::ReturnVoid, this); 0060 } 0061 0062 } // namespace BluezQt 0063 0064 #include "moc_leadvertisingmanager.cpp"