xref: /openbmc/phosphor-pid-control/pid/util.cpp (revision 46a755fce8dc0bdd9c0c5ea09d55d3e5494f335f)
1 // SPDX-License-Identifier: Apache-2.0
2 // SPDX-FileCopyrightText: Copyright 2017 Google Inc
3 
4 #include "util.hpp"
5 
6 #include "ec/pid.hpp"
7 
8 #include <cstring>
9 #include <iostream>
10 
11 namespace pid_control
12 {
13 
initializePIDStruct(ec::pid_info_t * info,const ec::pidinfo & initial)14 void initializePIDStruct(ec::pid_info_t* info, const ec::pidinfo& initial)
15 {
16     info->checkHysterWithSetpt = initial.checkHysterWithSetpt;
17     info->ts = initial.ts;
18     info->proportionalCoeff = initial.proportionalCoeff;
19     info->integralCoeff = initial.integralCoeff;
20     info->derivativeCoeff = initial.derivativeCoeff;
21     info->feedFwdOffset = initial.feedFwdOffset;
22     info->feedFwdGain = initial.feedFwdGain;
23     info->integralLimit.min = initial.integralLimit.min;
24     info->integralLimit.max = initial.integralLimit.max;
25     info->outLim.min = initial.outLim.min;
26     info->outLim.max = initial.outLim.max;
27     info->slewNeg = initial.slewNeg;
28     info->slewPos = initial.slewPos;
29     info->negativeHysteresis = initial.negativeHysteresis;
30     info->positiveHysteresis = initial.positiveHysteresis;
31 }
32 
dumpPIDStruct(ec::pid_info_t * info)33 void dumpPIDStruct(ec::pid_info_t* info)
34 {
35     std::cerr << " ts: " << info->ts
36               << " proportionalCoeff: " << info->proportionalCoeff
37               << " integralCoeff: " << info->integralCoeff
38               << " derivativeCoeff: " << info->derivativeCoeff
39               << " feedFwdOffset: " << info->feedFwdOffset
40               << " feedFwdGain: " << info->feedFwdGain
41               << " integralLimit.min: " << info->integralLimit.min
42               << " integralLimit.max: " << info->integralLimit.max
43               << " outLim.min: " << info->outLim.min
44               << " outLim.max: " << info->outLim.max
45               << " slewNeg: " << info->slewNeg << " slewPos: " << info->slewPos
46               << " last_output: " << info->lastOutput
47               << " last_error: " << info->lastError
48               << " integral: " << info->integral << std::endl;
49 
50     return;
51 }
52 
53 } // namespace pid_control
54