diff options
Diffstat (limited to 'control/zone.hpp')
-rw-r--r-- | control/zone.hpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/control/zone.hpp b/control/zone.hpp index 985a46d..601c002 100644 --- a/control/zone.hpp +++ b/control/zone.hpp @@ -1,6 +1,7 @@ #pragma once #include <vector> #include <sdbusplus/bus.hpp> +#include <sdbusplus/server.hpp> #include "fan.hpp" #include "types.hpp" @@ -56,6 +57,20 @@ class Zone } } + /** + * @brief Sets a given object's property value + * + * @param[in] object - Name of the object containing the property + * @param[in] property - Property name + * @param[in] value - Property value + */ + void setPropertyValue(const char* object, + const char* property, + bool value) + { + _properties[object][property] = value; + }; + private: /** @@ -77,6 +92,41 @@ class Zone * The vector of fans in this zone */ std::vector<std::unique_ptr<Fan>> _fans; + + /** + * @brief Map of object property values + */ + std::map<std::string, std::map<std::string, bool>> _properties; + + /** + * @brief List of signal event arguments + */ + std::vector<std::unique_ptr<SignalEvent>> _signalEvents; + + /** + * @brief list of Dbus matches for callbacks + */ + std::vector<sdbusplus::server::match::match> _matches; + + /** + * @brief Dbus signal change handler + * + * @param[in] msg - Data associated with the subscribed signal + * @param[in] data - Pointer to the event sensor's data + * @param[in] err - Contains any sdbus error reference if occurred + */ + static int signalHandler(sd_bus_message* msg, + void* data, + sd_bus_error* err); + + /** + * @brief Envokes the assigned handler and action + * + * @param[in] msg - Expanded sdbusplus message data + * @param[in] eventData - The event's data + */ + void handleEvent(sdbusplus::message::message& msg, + const Handler& handler); }; } |