diff options
author | Matthew Barth <msbarth@us.ibm.com> | 2017-05-11 14:12:27 -0500 |
---|---|---|
committer | Matthew Barth <msbarth@us.ibm.com> | 2017-05-31 10:48:10 -0500 |
commit | 38a93a8aa2feea7f4e785db6b4ff6d9e81f6020d (patch) | |
tree | 93131bf528c712fd9c95c353a23db9ab365d59c1 /control/zone.hpp | |
parent | 06bae85443fdb1e5e9540280a7aeac2f36ffaa7b (diff) | |
download | phosphor-fan-presence-38a93a8aa2feea7f4e785db6b4ff6d9e81f6020d.tar.gz phosphor-fan-presence-38a93a8aa2feea7f4e785db6b4ff6d9e81f6020d.zip |
Add property changed signal handler
Enable the control application to handle property changed signals to set
or update a cached set of these properties
Change-Id: Ib84ffe1e801ee7dd85d17fdbb122d124d307dbd3
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
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); }; } |