blob: 01968cbd08b73ab48c272011a2fab968f72961d0 [file] [log] [blame]
Patrick Venturee6206562018-03-08 15:36:53 -08001#pragma once
2
Patrick Ventureda4a5dd2018-08-31 09:42:48 -07003#include "pid/ec/pid.hpp"
James Feist22c257a2018-08-31 14:07:12 -07004#include "pid/ec/stepwise.hpp"
Patrick Ventureda4a5dd2018-08-31 09:42:48 -07005
Patrick Venturee6206562018-03-08 15:36:53 -08006#include <map>
7#include <string>
8#include <vector>
9
Patrick Venturee6206562018-03-08 15:36:53 -080010/*
11 * General sensor structure used for configuration.
12 */
13struct sensor
14{
15 /* Used for listen if readpath is passive. */
16 std::string type;
17 /* Can be a sensor path or a dbus path. */
18 std::string readpath;
19 std::string writepath;
20 /* min/max values for writing a percentage or error checking. */
21 int64_t min;
22 int64_t max;
23 int64_t timeout;
24};
25
26/*
27 * Structure for holding the configuration of a PID.
28 */
29struct controller_info
30{
31 std::string type; // fan or margin or temp?
32 std::vector<std::string> inputs; // one or more sensors.
33 float setpoint; // initial setpoint for thermal.
James Feist22c257a2018-08-31 14:07:12 -070034 union
35 {
36 ec::pidinfo pidInfo; // pid details
37 ec::StepwiseInfo stepwiseInfo;
38 };
Patrick Venturee6206562018-03-08 15:36:53 -080039};
40
41/*
42 * General zone structure used for configuration. A zone is a list of PIDs
43 * and a set of configuration settings. This structure gets filled out with
44 * the zone configuration settings and not the PID details.
45 */
46struct zone
47{
48 /* The minimum RPM value we would ever want. */
49 float minthermalrpm;
50
51 /* If the sensors are in fail-safe mode, this is the percentage to use. */
52 float failsafepercent;
53};
54
55using PIDConf = std::map<std::string, struct controller_info>;