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