xref: /openbmc/phosphor-pid-control/pid/controller.hpp (revision 22c257abd27fd76ed5280ef5c717eef1f28bfca9)
1d8012181SPatrick Venture #pragma once
2d8012181SPatrick Venture 
3da4a5dd1SPatrick Venture #include "ec/pid.hpp"
4da4a5dd1SPatrick Venture #include "fan.hpp"
5da4a5dd1SPatrick Venture 
6*22c257abSJames Feist #include <string>
7d8012181SPatrick Venture 
8d8012181SPatrick Venture /*
9*22c257abSJames Feist  * Base class for controllers.  Each controller that implements this needs to
10*22c257abSJames Feist  * provide an input_proc, process, and output_proc.
11d8012181SPatrick Venture  */
12*22c257abSJames Feist class ZoneInterface;
13d8012181SPatrick Venture 
14*22c257abSJames Feist struct Controller
15da4a5dd1SPatrick Venture {
16*22c257abSJames Feist     virtual ~Controller() = default;
17d8012181SPatrick Venture 
18d8012181SPatrick Venture     virtual float input_proc(void) = 0;
19*22c257abSJames Feist 
20d8012181SPatrick Venture     virtual void output_proc(float value) = 0;
21d8012181SPatrick Venture 
22*22c257abSJames Feist     virtual void process(void) = 0;
23d8012181SPatrick Venture 
24*22c257abSJames Feist     virtual std::string get_id(void) = 0;
25d8012181SPatrick Venture };
26