summaryrefslogtreecommitdiffstats
path: root/control/handlers.hpp
diff options
context:
space:
mode:
authorMatthew Barth <msbarth@us.ibm.com>2019-02-18 12:23:38 -0600
committerMatthew Barth <msbarth@us.ibm.com>2019-02-18 13:01:02 -0600
commit59096e50db52d85d2252bb5c7de054bd3c8156c5 (patch)
tree5773a3401c7f9f6eb1a698594ce3c65964565d21 /control/handlers.hpp
parent70b2e7da829b9b11f4fa4d9141383a5dbc63e6e1 (diff)
downloadphosphor-fan-presence-59096e50db52d85d2252bb5c7de054bd3c8156c5.tar.gz
phosphor-fan-presence-59096e50db52d85d2252bb5c7de054bd3c8156c5.zip
Generate zone property persist configs
Each zone object's hosted interfaces' properties can be configured to be persisted or not at compile time. Those properties configured to be persisted are set to be persisted after the initial value is set. When this value doesnt change on a system, there's no need to persist it since the initial value is compiled into the fan control application per zone. Once this value is changed and therefore persisted, upon a application restart, initially the value would be what's compiled in until its configured again to be persisted and then restored. Tested: Current property always set to what's persisted between restarts Nothing persisted when Current property doesnt change from default Change-Id: I93109730796af2058ecab0e78e612b7919886b33 Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
Diffstat (limited to 'control/handlers.hpp')
-rw-r--r--control/handlers.hpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/control/handlers.hpp b/control/handlers.hpp
index 215662a..6b512fd 100644
--- a/control/handlers.hpp
+++ b/control/handlers.hpp
@@ -14,18 +14,29 @@ namespace handler
* @details Sets or updates a zone property to the given value using the
* provided zone dbus object's set property function
*
- * @param[in] value - Value to set property to
+ * @param[in] intf - Interface on zone object
+ * @param[in] prop - Property on interface
* @param[in] func - Zone set property function pointer
+ * @param[in] value - Value to set property to
+ * @param[in] persist - Persist property value or not
*
* @return Lambda function
* A lambda function to set/update the zone property
*/
template <typename T>
-auto setZoneProperty(T (Zone::*func)(T), T&& value)
+auto setZoneProperty(const char* intf,
+ const char* prop,
+ T (Zone::*func)(T),
+ T&& value,
+ bool persist)
{
- return [func, value = std::forward<T>(value)](auto& zone)
+ return [=, value = std::forward<T>(value)](auto& zone)
{
(zone.*func)(value);
+ if (persist)
+ {
+ zone.setPersisted(intf, prop);
+ }
};
}
OpenPOWER on IntegriCloud