File indexing completed on 2024-04-28 03:52:02

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 "gattcharacteristic_p.h"
0010 #include "gattservice.h"
0011 #include "utils.h"
0012 
0013 namespace BluezQt
0014 {
0015 GattCharacterisiticPrivate::GattCharacterisiticPrivate(const QString &uuid, const QStringList &flags, const GattService *service)
0016     : m_uuid(uuid)
0017     , m_service(service)
0018     , m_notifying(false)
0019     , m_flags(flags)
0020 {
0021     static uint8_t charcNumber = 0;
0022     m_objectPath.setPath(m_service->objectPath().path() + QStringLiteral("/char") + QString::number(charcNumber++));
0023     m_dbusProperties = std::make_unique<DBusProperties>(Strings::orgBluez(), m_objectPath.path(), DBusConnection::orgBluez());
0024 
0025     m_canNotify = flags.contains(QLatin1String("notify")) || flags.contains(QLatin1String("encrypt-notify"))
0026         || flags.contains(QLatin1String("encrypt-authenticated-notify")) || flags.contains(QLatin1String("secure-notify"));
0027 }
0028 
0029 void GattCharacterisiticPrivate::emitPropertyChanged(QVariantMap updatedProperties)
0030 {
0031     QDBusMessage signal = QDBusMessage::createSignal(m_objectPath.path(), Strings::orgFreedesktopDBusProperties(), QStringLiteral("PropertiesChanged"));
0032     signal << Strings::orgBluezGattCharacteristic1();
0033     signal << updatedProperties;
0034     signal << QStringList();
0035     DBusConnection::orgBluez().send(signal);
0036 }
0037 
0038 } // namespace BluezQt