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>
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 @@
     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 @@
     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 @@
     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 @@
     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);