summaryrefslogtreecommitdiffstats
path: root/pid
diff options
context:
space:
mode:
authorPatrick Venture <venture@google.com>2018-10-23 09:32:52 -0700
committerPatrick Venture <venture@google.com>2018-10-23 09:34:23 -0700
commitf77d5a573de3e073e8352aed2d8b4ecf584ee2a6 (patch)
tree9acf38719372f64e3c6a6112677ed8d15d2925fe /pid
parentadc9e8636760383be821485908412b2ba7a66422 (diff)
downloadphosphor-pid-control-f77d5a573de3e073e8352aed2d8b4ecf584ee2a6.tar.gz
phosphor-pid-control-f77d5a573de3e073e8352aed2d8b4ecf584ee2a6.zip
cleanup: move from copy and pointer to just const reference
Originally code passed the object by value, and then later by pointer to that copy. Convert the code to be more performant by using a const reference at all layers of access for this object. Change-Id: Icdf0dfdb54d8adc29af4d05d841533626a484921 Signed-off-by: Patrick Venture <venture@google.com>
Diffstat (limited to 'pid')
-rw-r--r--pid/fancontroller.cpp4
-rw-r--r--pid/fancontroller.hpp2
-rw-r--r--pid/thermalcontroller.cpp5
-rw-r--r--pid/thermalcontroller.hpp2
-rw-r--r--pid/util.cpp24
-rw-r--r--pid/util.hpp2
6 files changed, 20 insertions, 19 deletions
diff --git a/pid/fancontroller.cpp b/pid/fancontroller.cpp
index f085927..f622698 100644
--- a/pid/fancontroller.cpp
+++ b/pid/fancontroller.cpp
@@ -25,7 +25,7 @@
std::unique_ptr<PIDController>
FanController::CreateFanPid(ZoneInterface* owner, const std::string& id,
const std::vector<std::string>& inputs,
- ec::pidinfo initial)
+ const ec::pidinfo& initial)
{
if (inputs.size() == 0)
{
@@ -34,7 +34,7 @@ std::unique_ptr<PIDController>
auto fan = std::make_unique<FanController>(id, inputs, owner);
ec::pid_info_t* info = fan->get_pid_info();
- InitializePIDStruct(info, &initial);
+ InitializePIDStruct(info, initial);
return fan;
}
diff --git a/pid/fancontroller.hpp b/pid/fancontroller.hpp
index c081ce1..e0e79e7 100644
--- a/pid/fancontroller.hpp
+++ b/pid/fancontroller.hpp
@@ -19,7 +19,7 @@ class FanController : public PIDController
static std::unique_ptr<PIDController>
CreateFanPid(ZoneInterface* owner, const std::string& id,
const std::vector<std::string>& inputs,
- ec::pidinfo initial);
+ const ec::pidinfo& initial);
FanController(const std::string& id, const std::vector<std::string>& inputs,
ZoneInterface* owner) :
diff --git a/pid/thermalcontroller.cpp b/pid/thermalcontroller.cpp
index d7ea5ae..f9d1e11 100644
--- a/pid/thermalcontroller.cpp
+++ b/pid/thermalcontroller.cpp
@@ -21,7 +21,8 @@
std::unique_ptr<PIDController> ThermalController::CreateThermalPid(
ZoneInterface* owner, const std::string& id,
- const std::vector<std::string>& inputs, float setpoint, ec::pidinfo initial)
+ const std::vector<std::string>& inputs, float setpoint,
+ const ec::pidinfo& initial)
{
// ThermalController currently only supports precisely one input.
if (inputs.size() != 1)
@@ -34,7 +35,7 @@ std::unique_ptr<PIDController> ThermalController::CreateThermalPid(
ec::pid_info_t* info = thermal->get_pid_info();
thermal->set_setpoint(setpoint);
- InitializePIDStruct(info, &initial);
+ InitializePIDStruct(info, initial);
return thermal;
}
diff --git a/pid/thermalcontroller.hpp b/pid/thermalcontroller.hpp
index e38938f..9b2da71 100644
--- a/pid/thermalcontroller.hpp
+++ b/pid/thermalcontroller.hpp
@@ -17,7 +17,7 @@ class ThermalController : public PIDController
static std::unique_ptr<PIDController>
CreateThermalPid(ZoneInterface* owner, const std::string& id,
const std::vector<std::string>& inputs, float setpoint,
- ec::pidinfo initial);
+ const ec::pidinfo& initial);
ThermalController(const std::string& id,
const std::vector<std::string>& inputs,
diff --git a/pid/util.cpp b/pid/util.cpp
index 9004059..8b24fb2 100644
--- a/pid/util.cpp
+++ b/pid/util.cpp
@@ -19,21 +19,21 @@
#include <cstring>
#include <iostream>
-void InitializePIDStruct(ec::pid_info_t* info, ec::pidinfo* initial)
+void InitializePIDStruct(ec::pid_info_t* info, const ec::pidinfo& initial)
{
std::memset(info, 0x00, sizeof(ec::pid_info_t));
- info->ts = initial->ts;
- info->p_c = initial->p_c;
- info->i_c = initial->i_c;
- info->ff_off = initial->ff_off;
- info->ff_gain = initial->ff_gain;
- info->i_lim.min = initial->i_lim.min;
- info->i_lim.max = initial->i_lim.max;
- info->out_lim.min = initial->out_lim.min;
- info->out_lim.max = initial->out_lim.max;
- info->slew_neg = initial->slew_neg;
- info->slew_pos = initial->slew_pos;
+ info->ts = initial.ts;
+ info->p_c = initial.p_c;
+ info->i_c = initial.i_c;
+ info->ff_off = initial.ff_off;
+ info->ff_gain = initial.ff_gain;
+ info->i_lim.min = initial.i_lim.min;
+ info->i_lim.max = initial.i_lim.max;
+ info->out_lim.min = initial.out_lim.min;
+ info->out_lim.max = initial.out_lim.max;
+ info->slew_neg = initial.slew_neg;
+ info->slew_pos = initial.slew_pos;
}
void DumpPIDStruct(ec::pid_info_t* info)
diff --git a/pid/util.hpp b/pid/util.hpp
index 0f37afe..a80e07f 100644
--- a/pid/util.hpp
+++ b/pid/util.hpp
@@ -6,6 +6,6 @@
* Given a configuration structure, fill out the information we use within the
* PID loop.
*/
-void InitializePIDStruct(ec::pid_info_t* info, ec::pidinfo* initial);
+void InitializePIDStruct(ec::pid_info_t* info, const ec::pidinfo& initial);
void DumpPIDStruct(ec::pid_info_t* info);
OpenPOWER on IntegriCloud