stepwise: Add ceiling type

Add a stepwise ceiling type, this is used as a
upper clipping curve to limit the max output based
on a temperature sensor. This is commonly used for
quiet fan mode where CPU throttling is allowed to
preserve a max fan noise.

Change-Id: I181d5913c92e5498a34e6d3f67cf99b67471479c
Signed-off-by: James Feist <james.feist@linux.intel.com>
diff --git a/pid/zone.hpp b/pid/zone.hpp
index 223f3cb..077d272 100644
--- a/pid/zone.hpp
+++ b/pid/zone.hpp
@@ -28,6 +28,7 @@
 
     virtual double getCachedValue(const std::string& name) = 0;
     virtual void addRPMSetPoint(double setpoint) = 0;
+    virtual void addRPMCeiling(double ceiling) = 0;
     virtual double getMaxRPMRequest() const = 0;
     virtual bool getFailSafeMode() const = 0;
     virtual double getFailSafePercent() const = 0;
@@ -64,7 +65,9 @@
     bool getFailSafeMode(void) const override;
     int64_t getZoneID(void) const;
     void addRPMSetPoint(double setpoint) override;
+    void addRPMCeiling(double ceiling) override;
     void clearRPMSetPoints(void);
+    void clearRPMCeilings(void);
     double getFailSafePercent(void) const override;
     double getMinThermalRPMSetpoint(void) const;
 
@@ -107,6 +110,7 @@
     std::set<std::string> _failSafeSensors;
 
     std::vector<double> _RPMSetPoints;
+    std::vector<double> _RPMCeilings;
     std::vector<std::string> _fanInputs;
     std::vector<std::string> _thermalInputs;
     std::map<std::string, double> _cachedValuesByName;