#pragma once #include "pid/ec/pid.hpp" #include "pid/ec/stepwise.hpp" #include #include #include /* * General sensor structure used for configuration. */ struct SensorConfig { /* Used for listen if readpath is passive. */ std::string type; /* Can be a sensor path or a dbus path. */ std::string readpath; std::string writepath; /* min/max values for writing a percentage or error checking. */ int64_t min; int64_t max; int64_t timeout; }; /* * Structure for holding the configuration of a PID. */ struct ControllerInfo { std::string type; // fan or margin or temp? std::vector inputs; // one or more sensors. float setpoint; // initial setpoint for thermal. union { ec::pidinfo pidInfo; // pid details ec::StepwiseInfo stepwiseInfo; }; }; /* * General zone structure used for configuration. A zone is a list of PIDs * and a set of configuration settings. This structure gets filled out with * the zone configuration settings and not the PID details. */ struct ZoneConfig { /* The minimum RPM value we would ever want. */ float minthermalrpm; /* If the sensors are in fail-safe mode, this is the percentage to use. */ float failsafepercent; }; using PIDConf = std::map;