#ifndef DEVICEMANAGER_H #define DEVICEMANAGER_H #include "deviceclass.h" #include "trigger.h" #include "action.h" #include class Device; class DevicePlugin; class Radio433; class DeviceManager : public QObject { Q_OBJECT public: enum HardwareResource { HardwareResourceRadio433 = 0x01, HardwareResourceRadio868 = 0x02 }; enum DeviceError { DeviceErrorNoError, DeviceErrorDeviceNotFound, DeviceErrorDeviceClassNotFound, DeviceErrorMissingParameter, DeviceErrorPluginNotFound }; explicit DeviceManager(QObject *parent = 0); QList plugins() const; DevicePlugin* plugin(const QUuid &id) const; QList supportedDevices() const; QList configuredDevices() const; DeviceError addConfiguredDevice(const QUuid &deviceClassId, const QVariantMap ¶ms); Device* findConfiguredDevice(const QUuid &id) const; QList findConfiguredDevices(const QUuid &deviceClassId) const; DeviceClass findDeviceClassforTrigger(const QUuid &triggerTypeId) const; DeviceClass findDeviceClass(const QUuid &deviceClassId) const; signals: void emitTrigger(const Trigger &trigger); public slots: DeviceError executeAction(const Action &action); private slots: void loadPlugins(); void loadConfiguredDevices(); void storeConfiguredDevices(); void radio433SignalReceived(QList rawData); private: QHash m_supportedDevices; QList m_configuredDevices; QHash m_devicePlugins; Radio433* m_radio433; friend class DevicePlugin; }; #endif // DEVICEMANAGER_H