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>
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::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 @@
     {
         _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 @@
         };
 
         /**
-         * @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 @@
         };
 
         /**
+         * @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.
          *