summaryrefslogtreecommitdiffstats
path: root/control
diff options
context:
space:
mode:
authorMatthew Barth <msbarth@us.ibm.com>2017-06-28 15:29:50 -0500
committerMatthew Barth <msbarth@us.ibm.com>2017-07-06 17:25:12 -0500
commitb4a7cb99bb82f602d3cff848a1f14ade1da2ddb5 (patch)
treecabfb6c2da1fbf900e0945a5c0edc6f5f9b2cdef /control
parent1ee48f2bf461575bbb0698084370a555f17f6bbf (diff)
downloadphosphor-fan-presence-b4a7cb99bb82f602d3cff848a1f14ade1da2ddb5.tar.gz
phosphor-fan-presence-b4a7cb99bb82f602d3cff848a1f14ade1da2ddb5.zip
Set target speed according to floor speed change
When the floor speed updates, a request to increase the target speed should be made when the target is now below the floor speed. Change-Id: Ib622bc717a952ef0c0703cbff40a4dc14b213416 Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
Diffstat (limited to 'control')
-rw-r--r--control/zone.cpp15
-rw-r--r--control/zone.hpp18
2 files changed, 18 insertions, 15 deletions
diff --git a/control/zone.cpp b/control/zone.cpp
index a4a0325..8f11393 100644
--- a/control/zone.cpp
+++ b/control/zone.cpp
@@ -92,6 +92,16 @@ void Zone::setActiveAllow(const Group* group, bool isActiveAllow)
}
}
+void Zone::setFloor(uint64_t speed)
+{
+ _floorSpeed = speed;
+ // Floor speed above target, update target to floor speed
+ if (_targetSpeed < _floorSpeed)
+ {
+ requestSpeedIncrease(_floorSpeed - _targetSpeed);
+ }
+}
+
void Zone::requestSpeedIncrease(uint64_t targetDelta)
{
// Only increase speed when delta is higher than
@@ -101,11 +111,6 @@ void Zone::requestSpeedIncrease(uint64_t targetDelta)
{
_targetSpeed = (targetDelta - _incSpeedDelta) + _targetSpeed;
_incSpeedDelta = targetDelta;
- //TODO Floor speed above target, update target to floor speed
- if (_targetSpeed < _floorSpeed)
- {
- _targetSpeed = _floorSpeed;
- }
// Target speed can not go above a defined ceiling speed
if (_targetSpeed > _ceilingSpeed)
{
diff --git a/control/zone.hpp b/control/zone.hpp
index dc5771c..9786db4 100644
--- a/control/zone.hpp
+++ b/control/zone.hpp
@@ -128,16 +128,6 @@ class Zone
};
/**
- * @brief Set the floor speed to the given speed
- *
- * @param[in] speed - Speed to set the floor to
- */
- inline void setFloor(uint64_t speed)
- {
- _floorSpeed = speed;
- };
-
- /**
* @brief Get the ceiling speed
*
* @return - The current ceiling speed
@@ -192,6 +182,14 @@ class Zone
};
/**
+ * @brief Set the floor speed to the given speed and increase target
+ * speed to the floor when target is below floor.
+ *
+ * @param[in] speed - Speed to set the floor to
+ */
+ void setFloor(uint64_t speed);
+
+ /**
* @brief Calculate the requested target speed from the given delta
* and increase the fan speeds, not going above the ceiling.
*
OpenPOWER on IntegriCloud