summaryrefslogtreecommitdiffstats
path: root/control/zone.hpp
diff options
context:
space:
mode:
authorMatthew Barth <msbarth@us.ibm.com>2017-12-14 11:14:30 -0600
committerMatthew Barth <msbarth@us.ibm.com>2017-12-14 11:14:30 -0600
commite4338cdb856db2b71f8adf42c50603d816980f8a (patch)
tree4eb0f1e20c93c0b06830cd4932f2002353f67aba /control/zone.hpp
parente65f617c6a79eb92c122310f35ddb8a496e729fd (diff)
downloadphosphor-fan-presence-e4338cdb856db2b71f8adf42c50603d816980f8a.tar.gz
phosphor-fan-presence-e4338cdb856db2b71f8adf42c50603d816980f8a.zip
Decreases allowed based on all groups
For speed decreases to occur, all sensor groups involved with setting a net decrease delta must be below their given t-control low values for the associated zone. This handles the case where one or more sensor groups' temperatures stabilize above their t-control low value, but one or more other sensor groups' temperatures are below their t-control low value which would result in speed decrease requests that could eventually lead to fan speed oscillations. Resolves openbmc/openbmc#2710 Change-Id: I382de5d3f9c3e631a332d49dfcb06e705ff6fc17 Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
Diffstat (limited to 'control/zone.hpp')
-rw-r--r--control/zone.hpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/control/zone.hpp b/control/zone.hpp
index bc08f48..406af13 100644
--- a/control/zone.hpp
+++ b/control/zone.hpp
@@ -89,6 +89,17 @@ class Zone
}
/**
+ * @brief Sets the decrease allowed state of a group
+ *
+ * @param[in] group - A group that affects speed decreases
+ * @param[in] isAllow - Allow state according to group
+ */
+ inline void setDecreaseAllow(const Group* group, bool isAllow)
+ {
+ _decAllowed[*(group)] = isAllow;
+ }
+
+ /**
* @brief Sets a given object's property value
*
* @param[in] object - Name of the object containing the property
@@ -487,6 +498,11 @@ class Zone
std::map<const Group, bool> _floorChange;
/**
+ * @brief Map of groups controlling decreases allowed
+ */
+ std::map<const Group, bool> _decAllowed;
+
+ /**
* @brief Map of group service names
*/
std::map<const Group, std::vector<Service>> _services;
OpenPOWER on IntegriCloud