From 59f57c38dba18f33c19956cffbac0aa244867016 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Wed, 17 Jan 2018 15:10:19 +0100 Subject: [PATCH] update dbus code to be more generic --- .../hardwaremanagerimplementation.cpp | 28 ------------------- libnymea-core/hardwaremanagerimplementation.h | 4 --- libnymea-core/libnymea-core.pro | 2 -- .../bluetoothlowenergymanager.cpp | 5 ++++ .../bluetoothlowenergymanager.h | 2 ++ libnymea/hardwareresource.cpp | 2 +- libnymea/hardwareresource.h | 3 +- libnymea/libnymea.pro | 3 ++ .../nymeadbusservice.cpp | 15 +++++----- .../nymeadbusservice.h | 8 +----- 10 files changed, 22 insertions(+), 50 deletions(-) rename {libnymea-core => libnymea}/nymeadbusservice.cpp (84%) rename {libnymea-core => libnymea}/nymeadbusservice.h (93%) diff --git a/libnymea-core/hardwaremanagerimplementation.cpp b/libnymea-core/hardwaremanagerimplementation.cpp index bc81835b..b5689878 100644 --- a/libnymea-core/hardwaremanagerimplementation.cpp +++ b/libnymea-core/hardwaremanagerimplementation.cpp @@ -74,23 +74,6 @@ HardwareManagerImplementation::HardwareManagerImplementation(QObject *parent) : if (m_bluetoothLowEnergyManager->available()) setResourceEnabled(m_bluetoothLowEnergyManager, true); - - // Register D-Bus interface for enable/disable hardware resources - - // FIXME: use HardwareManagerDBusService in the source tree instead of direct implementation - bool status = QDBusConnection::systemBus().registerService("io.guh.nymead"); - if (!status) { - qCWarning(dcHardware()) << "Failed to register HardwareManager D-Bus service. HardwareManager D-Bus control will not work."; - return; - } - - status = QDBusConnection::systemBus().registerObject("/io/guh/nymead/HardwareManager", this, QDBusConnection::ExportScriptableContents); - if (!status) { - qCWarning(dcHardware()) << "Failed to register HardwareManager D-Bus object. HardwareManager D-Bus control will not work."; - return; - } - - qCDebug(dcHardware()) << "HardwareManager D-Bus service set up."; } HardwareManagerImplementation::~HardwareManagerImplementation() @@ -127,15 +110,4 @@ BluetoothLowEnergyManager *HardwareManagerImplementation::bluetoothLowEnergyMana return m_bluetoothLowEnergyManager; } -void HardwareManagerImplementation::EnableBluetooth(const bool &enabled) -{ - qCDebug(dcHardware()) << "Bluetooth hardware resource" << (enabled ? "enabled" : "disabled"); - - if (enabled) { - setResourceEnabled(m_bluetoothLowEnergyManager, true); - } else { - setResourceEnabled(m_bluetoothLowEnergyManager, false); - } -} - } diff --git a/libnymea-core/hardwaremanagerimplementation.h b/libnymea-core/hardwaremanagerimplementation.h index fb18b256..6578bcc7 100644 --- a/libnymea-core/hardwaremanagerimplementation.h +++ b/libnymea-core/hardwaremanagerimplementation.h @@ -43,7 +43,6 @@ namespace nymeaserver { class HardwareManagerImplementation : public HardwareManager { Q_OBJECT - Q_CLASSINFO("D-Bus Interface", "io.guh.nymead") public: explicit HardwareManagerImplementation(QObject *parent = nullptr); @@ -56,9 +55,6 @@ public: QtAvahiServiceBrowser *avahiBrowser() override; BluetoothLowEnergyManager *bluetoothLowEnergyManager() override; - // D-Bus method for enable/disable bluetooth support - Q_SCRIPTABLE void EnableBluetooth(const bool &enabled); - private: QNetworkAccessManager *m_networkAccessManager = nullptr; diff --git a/libnymea-core/libnymea-core.pro b/libnymea-core/libnymea-core.pro index 562095ed..d12b23d1 100644 --- a/libnymea-core/libnymea-core.pro +++ b/libnymea-core/libnymea-core.pro @@ -75,7 +75,6 @@ HEADERS += nymeacore.h \ OpenSSL/OpenSSLConnection.hpp \ janusconnector.h \ pushbuttondbusservice.h \ - nymeadbusservice.h \ hardwaremanagerimplementation.h \ hardware/plugintimermanagerimplementation.h \ hardware/radio433/radio433brennenstuhl.h \ @@ -154,7 +153,6 @@ SOURCES += nymeacore.cpp \ OpenSSL/OpenSSLConnection.cpp \ janusconnector.cpp \ pushbuttondbusservice.cpp \ - nymeadbusservice.cpp \ hardwaremanagerimplementation.cpp \ hardware/plugintimermanagerimplementation.cpp \ hardware/radio433/radio433brennenstuhl.cpp \ diff --git a/libnymea/hardware/bluetoothlowenergy/bluetoothlowenergymanager.cpp b/libnymea/hardware/bluetoothlowenergy/bluetoothlowenergymanager.cpp index 017da1ed..692ab113 100644 --- a/libnymea/hardware/bluetoothlowenergy/bluetoothlowenergymanager.cpp +++ b/libnymea/hardware/bluetoothlowenergy/bluetoothlowenergymanager.cpp @@ -27,3 +27,8 @@ BluetoothLowEnergyManager::BluetoothLowEnergyManager(QObject *parent) : HardwareResource("Bluetooth LE manager", parent) { } + +void BluetoothLowEnergyManager::EnableBluetooth(bool enabled) +{ + setEnabled(enabled); +} diff --git a/libnymea/hardware/bluetoothlowenergy/bluetoothlowenergymanager.h b/libnymea/hardware/bluetoothlowenergy/bluetoothlowenergymanager.h index 463366c5..b02a0f52 100644 --- a/libnymea/hardware/bluetoothlowenergy/bluetoothlowenergymanager.h +++ b/libnymea/hardware/bluetoothlowenergy/bluetoothlowenergymanager.h @@ -50,6 +50,8 @@ public: // Bluetooth device registration methods virtual BluetoothLowEnergyDevice *registerDevice(const QBluetoothDeviceInfo &deviceInfo, const QLowEnergyController::RemoteAddressType &addressType = QLowEnergyController::RandomAddress) = 0; virtual void unregisterDevice(BluetoothLowEnergyDevice *bluetoothDevice) = 0; + + Q_SCRIPTABLE void EnableBluetooth(bool enabled); }; #endif // BLUETOOTHLOWENERGYMANAGER_H diff --git a/libnymea/hardwareresource.cpp b/libnymea/hardwareresource.cpp index b8e3f578..ac3d9034 100644 --- a/libnymea/hardwareresource.cpp +++ b/libnymea/hardwareresource.cpp @@ -25,7 +25,7 @@ #include "loggingcategories.h" HardwareResource::HardwareResource(const QString &name, QObject *parent) : - QObject(parent), + NymeaDBusService("/io/guh/nymead/HardwareManager/" + name, parent), m_name(name) { diff --git a/libnymea/hardwareresource.h b/libnymea/hardwareresource.h index cdd2d956..a1ddd9ff 100644 --- a/libnymea/hardwareresource.h +++ b/libnymea/hardwareresource.h @@ -24,8 +24,9 @@ #define HARDWARERESOURCE_H #include +#include "nymeadbusservice.h" -class HardwareResource : public QObject +class HardwareResource : public NymeaDBusService { Q_OBJECT diff --git a/libnymea/libnymea.pro b/libnymea/libnymea.pro index 3d45d2e2..860c375d 100644 --- a/libnymea/libnymea.pro +++ b/libnymea/libnymea.pro @@ -71,6 +71,7 @@ HEADERS += devicemanager.h \ hardwareresource.h \ plugintimer.h \ hardwaremanager.h \ + nymeadbusservice.h \ SOURCES += devicemanager.cpp \ loggingcategories.cpp \ @@ -127,6 +128,8 @@ SOURCES += devicemanager.cpp \ hardwareresource.cpp \ plugintimer.cpp \ hardwaremanager.cpp \ + nymeadbusservice.cpp \ + # install plugininfo python script for libnymea-dev generateplugininfo.files = $$top_srcdir/plugins/nymea-generateplugininfo diff --git a/libnymea-core/nymeadbusservice.cpp b/libnymea/nymeadbusservice.cpp similarity index 84% rename from libnymea-core/nymeadbusservice.cpp rename to libnymea/nymeadbusservice.cpp index 8194fdcc..52666585 100644 --- a/libnymea-core/nymeadbusservice.cpp +++ b/libnymea/nymeadbusservice.cpp @@ -20,23 +20,25 @@ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #include "nymeadbusservice.h" -#include "usermanager.h" #include "loggingcategories.h" -namespace nymeaserver { - QDBusConnection NymeaDBusService::s_connection = QDBusConnection::systemBus(); -NymeaDBusService::NymeaDBusService(const QString &objectPath, UserManager *parent) : QObject(parent) +NymeaDBusService::NymeaDBusService(const QString &objectPath, QObject *parent) : QObject(parent) { bool status = s_connection.registerService("io.guh.nymead"); if (!status) { qCWarning(dcApplication()) << "Failed to register D-Bus service."; return; } - status = s_connection.registerObject(objectPath, this, QDBusConnection::ExportScriptableContents); + QString finalObjectPath; + foreach (const QString &part, objectPath.split(' ')) { + finalObjectPath.append(part.at(0).toUpper()); + finalObjectPath.append(part.right(part.length() - 1)); + } + status = s_connection.registerObject(finalObjectPath, this, QDBusConnection::ExportScriptableContents); if (!status) { - qCWarning(dcApplication()) << "Failed to register D-Bus object."; + qCWarning(dcApplication()) << "Failed to register D-Bus object:" << finalObjectPath; return; } m_isValid = true; @@ -61,4 +63,3 @@ void NymeaDBusService::setBusType(QDBusConnection::BusType busType) } } -} diff --git a/libnymea-core/nymeadbusservice.h b/libnymea/nymeadbusservice.h similarity index 93% rename from libnymea-core/nymeadbusservice.h rename to libnymea/nymeadbusservice.h index 256dfa3f..c476d31a 100644 --- a/libnymea-core/nymeadbusservice.h +++ b/libnymea/nymeadbusservice.h @@ -26,18 +26,13 @@ #include #include - -namespace nymeaserver { - -class UserManager; - class NymeaDBusService : public QObject, public QDBusContext { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "io.guh.nymead") public: - explicit NymeaDBusService(const QString &objectPath, UserManager *parent = nullptr); + explicit NymeaDBusService(const QString &objectPath, QObject *parent = nullptr); static void setBusType(QDBusConnection::BusType busType); @@ -52,6 +47,5 @@ private: }; -} #endif // NYMEADBUSSERVICE_H