blob: 01968cbd08b73ab48c272011a2fab968f72961d0 [file] [log] [blame]
#pragma once
#include "pid/ec/pid.hpp"
#include "pid/ec/stepwise.hpp"
#include <map>
#include <string>
#include <vector>
/*
* General sensor structure used for configuration.
*/
struct sensor
{
/* 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 controller_info
{
std::string type; // fan or margin or temp?
std::vector<std::string> 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 zone
{
/* 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<std::string, struct controller_info>;