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