summaryrefslogtreecommitdiffstats
path: root/control/zone.hpp
diff options
context:
space:
mode:
authorMatthew Barth <msbarth@us.ibm.com>2017-05-11 14:12:27 -0500
committerMatthew Barth <msbarth@us.ibm.com>2017-05-31 10:48:10 -0500
commit38a93a8aa2feea7f4e785db6b4ff6d9e81f6020d (patch)
tree93131bf528c712fd9c95c353a23db9ab365d59c1 /control/zone.hpp
parent06bae85443fdb1e5e9540280a7aeac2f36ffaa7b (diff)
downloadphosphor-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.hpp50
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);
};
}
OpenPOWER on IntegriCloud