xref: /openbmc/phosphor-pid-control/pid/controller.hpp (revision f8b6e55147148c3cfb42327ff267197a460b411c)
1 #pragma once
2 
3 #include <string>
4 
5 namespace pid_control
6 {
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 
27 } // namespace pid_control
28