pid/zone: split zone interface into its own header

Signed-off-by: Patrick Venture <venture@google.com>
Change-Id: I8f516353ddf7777ec750549e748c96afa211ea6e
diff --git a/pid/zone_interface.hpp b/pid/zone_interface.hpp
new file mode 100644
index 0000000..f701064
--- /dev/null
+++ b/pid/zone_interface.hpp
@@ -0,0 +1,24 @@
+#pragma once
+
+#include "sensors/sensor.hpp"
+
+#include <string>
+
+namespace pid_control
+{
+
+class ZoneInterface
+{
+  public:
+    virtual ~ZoneInterface() = default;
+
+    virtual double getCachedValue(const std::string& name) = 0;
+    virtual void addSetPoint(double setpoint) = 0;
+    virtual void addRPMCeiling(double ceiling) = 0;
+    virtual double getMaxSetPointRequest() const = 0;
+    virtual bool getFailSafeMode() const = 0;
+    virtual double getFailSafePercent() const = 0;
+    virtual Sensor* getSensor(const std::string& name) = 0;
+};
+
+} // namespace pid_control