1 #pragma once
2 
3 #include "ec/pid.hpp"
4 #include "fan.hpp"
5 
6 #include <string>
7 
8 /*
9  * Base class for controllers.  Each controller that implements this needs to
10  * provide an inputProc, process, and outputProc.
11  */
12 class ZoneInterface;
13 
14 struct Controller
15 {
16     virtual ~Controller() = default;
17 
18     virtual double inputProc(void) = 0;
19 
20     virtual void outputProc(double value) = 0;
21 
22     virtual void process(void) = 0;
23 
24     virtual std::string getID(void) = 0;
25 };
26