diff --git a/libnymea-core/hardware/bluetoothlowenergy/bluetoothlowenergymanagerimplementation.cpp b/libnymea-core/hardware/bluetoothlowenergy/bluetoothlowenergymanagerimplementation.cpp index 91aa841f..80db9350 100644 --- a/libnymea-core/hardware/bluetoothlowenergy/bluetoothlowenergymanagerimplementation.cpp +++ b/libnymea-core/hardware/bluetoothlowenergy/bluetoothlowenergymanagerimplementation.cpp @@ -149,11 +149,13 @@ bool BluetoothLowEnergyManagerImplementation::enabled() const void BluetoothLowEnergyManagerImplementation::setEnabled(bool enabled) { - if (m_enabled == enabled) - return; - - m_enabled = enabled; - emit enabledChanged(m_enabled); + if (enabled && !m_enabled) { + m_enabled = enable(); + emit enabledChanged(m_enabled); + } else if (!enabled && m_enabled) { + m_enabled = disable(); + emit enabledChanged(m_enabled); + } } void BluetoothLowEnergyManagerImplementation::onReconnectTimeout() @@ -214,25 +216,23 @@ void BluetoothLowEnergyManagerImplementation::onDiscoveryError(const QBluetoothD bool BluetoothLowEnergyManagerImplementation::enable() { - qCDebug(dcBluetooth()) << "Hardware resource enabled."; - setEnabled(true); - + if (!available()) { + qCWarning(dcBluetooth()) << "Bluetooth hardware not available. Cannot enable Hardware resource"; + return false; + } foreach (QPointer bluetoothDevice, m_devices) { bluetoothDevice->setEnabled(true); } - + qCDebug(dcBluetooth()) << "Hardware resource enabled."; return true; } bool BluetoothLowEnergyManagerImplementation::disable() { - qCDebug(dcBluetooth()) << "Hardware resource disabled."; - setEnabled(false); - foreach (QPointer bluetoothDevice, m_devices) { bluetoothDevice->setEnabled(false); } - + qCDebug(dcBluetooth()) << "Hardware resource disabled."; return true; } diff --git a/libnymea-core/pushbuttondbusservice.cpp b/libnymea-core/pushbuttondbusservice.cpp index b158f6f7..38d21b2c 100644 --- a/libnymea-core/pushbuttondbusservice.cpp +++ b/libnymea-core/pushbuttondbusservice.cpp @@ -20,6 +20,7 @@ #include "pushbuttondbusservice.h" #include "loggingcategories.h" +#include "nymeadbusservice.h" #include #include @@ -28,10 +29,12 @@ namespace nymeaserver { -PushButtonDBusService::PushButtonDBusService(const QString &objectPath, UserManager *parent) : NymeaDBusService(objectPath, parent), +PushButtonDBusService::PushButtonDBusService(const QString &objectPath, UserManager *parent) : + QObject(parent), m_userManager(parent) { - if (!isValid()) { + NymeaDBusService* dbusService = new NymeaDBusService(objectPath, this); + if (!dbusService->isValid()) { qCWarning(dcUserManager()) << "Failed to register PushButton D-Bus service."; return; } diff --git a/libnymea-core/pushbuttondbusservice.h b/libnymea-core/pushbuttondbusservice.h index 2b8eb619..ebee1a27 100644 --- a/libnymea-core/pushbuttondbusservice.h +++ b/libnymea-core/pushbuttondbusservice.h @@ -23,13 +23,13 @@ #include #include +#include #include "usermanager.h" -#include "nymeadbusservice.h" namespace nymeaserver { -class PushButtonDBusService : public NymeaDBusService +class PushButtonDBusService : public QObject, public QDBusContext { Q_OBJECT public: diff --git a/libnymea/hardwaremanager.cpp b/libnymea/hardwaremanager.cpp index d2957aec..e0498d9d 100644 --- a/libnymea/hardwaremanager.cpp +++ b/libnymea/hardwaremanager.cpp @@ -58,6 +58,7 @@ */ #include "hardwaremanager.h" +#include "hardwareresource.h" /*! Constructs a new HardwareManager with the given \a parent.*/ HardwareManager::HardwareManager(QObject *parent) : diff --git a/libnymea/hardwaremanager.h b/libnymea/hardwaremanager.h index 18b98be9..45f0f38b 100644 --- a/libnymea/hardwaremanager.h +++ b/libnymea/hardwaremanager.h @@ -25,8 +25,6 @@ #include -#include "hardwareresource.h" - class Radio433; class UpnpDiscovery; class PluginTimerManager; @@ -34,6 +32,7 @@ class NetworkAccessManager; class UpnpDeviceDescriptor; class QtAvahiServiceBrowser; class BluetoothLowEnergyManager; +class HardwareResource; class HardwareManager : public QObject { diff --git a/libnymea/hardwareresource.cpp b/libnymea/hardwareresource.cpp index e4464daf..7ea8c605 100644 --- a/libnymea/hardwareresource.cpp +++ b/libnymea/hardwareresource.cpp @@ -64,13 +64,14 @@ #include "hardwareresource.h" #include "hardwaremanager.h" #include "loggingcategories.h" +#include "nymeadbusservice.h" /*! Constructs a new HardwareResource with the given \a name and \a parent. */ HardwareResource::HardwareResource(const QString &name, QObject *parent) : - NymeaDBusService("/io/guh/nymead/HardwareManager/" + name, parent), + QObject(parent), m_name(name) { - + new NymeaDBusService("/io/guh/nymead/HardwareManager/" + name, this); } /*! Returns the name of this resource. */ diff --git a/libnymea/hardwareresource.h b/libnymea/hardwareresource.h index a1ddd9ff..cdd2d956 100644 --- a/libnymea/hardwareresource.h +++ b/libnymea/hardwareresource.h @@ -24,9 +24,8 @@ #define HARDWARERESOURCE_H #include -#include "nymeadbusservice.h" -class HardwareResource : public NymeaDBusService +class HardwareResource : public QObject { Q_OBJECT diff --git a/libnymea/nymeadbusservice.cpp b/libnymea/nymeadbusservice.cpp index 357ae7c0..b19c5735 100644 --- a/libnymea/nymeadbusservice.cpp +++ b/libnymea/nymeadbusservice.cpp @@ -36,7 +36,7 @@ NymeaDBusService::NymeaDBusService(const QString &objectPath, QObject *parent) : finalObjectPath.append(part.at(0).toUpper()); finalObjectPath.append(part.right(part.length() - 1)); } - status = s_connection.registerObject(finalObjectPath, this, QDBusConnection::ExportScriptableSlots); + status = s_connection.registerObject(finalObjectPath, parent, QDBusConnection::ExportScriptableSlots); if (!status) { qCWarning(dcApplication()) << "Failed to register D-Bus object:" << finalObjectPath; return; diff --git a/libnymea/nymeadbusservice.h b/libnymea/nymeadbusservice.h index c476d31a..58dfa5a5 100644 --- a/libnymea/nymeadbusservice.h +++ b/libnymea/nymeadbusservice.h @@ -26,7 +26,7 @@ #include #include -class NymeaDBusService : public QObject, public QDBusContext +class NymeaDBusService : public QObject { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "io.guh.nymead") diff --git a/libnymea/plugin/deviceplugin.h b/libnymea/plugin/deviceplugin.h index 007230b7..bd5cc94b 100644 --- a/libnymea/plugin/deviceplugin.h +++ b/libnymea/plugin/deviceplugin.h @@ -41,7 +41,6 @@ #include #include #include -#include class Device; class DeviceManager; diff --git a/tests/tools/simplepushbuttonhandler/main.cpp b/tests/tools/simplepushbuttonhandler/main.cpp index c1db3492..327aeded 100644 --- a/tests/tools/simplepushbuttonhandler/main.cpp +++ b/tests/tools/simplepushbuttonhandler/main.cpp @@ -35,6 +35,8 @@ int main(int argc, char *argv[]) QCoreApplication a(argc, argv); + parser.process(a); + PushButtonAgent agent; if (!agent.init(parser.isSet(dbusOption) ? QDBusConnection::SessionBus : QDBusConnection::SystemBus)) { return -1;