Move all floats to doubles
The code was developed initially around a pid loop implemented using
floats. Therefore, the code was converting back and forth between
double for sensor values as inputs and outputs from this PID loop.
Change-Id: I2d2919e1165103040729c9f16bb84fde3dd6b81b
Signed-off-by: Patrick Venture <venture@google.com>
diff --git a/dbus/dbusconfiguration.cpp b/dbus/dbusconfiguration.cpp
index 9d62643..78cc4e4 100644
--- a/dbus/dbusconfiguration.cpp
+++ b/dbus/dbusconfiguration.cpp
@@ -294,9 +294,9 @@
auto& details = zoneDetailsConfig[index];
details.minthermalrpm = variant_ns::apply_visitor(
- VariantToFloatVisitor(), zone.at("MinThermalRpm"));
+ VariantToDoubleVisitor(), zone.at("MinThermalRpm"));
details.failsafepercent = variant_ns::apply_visitor(
- VariantToFloatVisitor(), zone.at("FailSafePercent"));
+ VariantToDoubleVisitor(), zone.at("FailSafePercent"));
}
auto findBase = configuration.second.find(pidConfigurationInterface);
if (findBase != configuration.second.end())
@@ -402,29 +402,29 @@
else
{
info.setpoint = variant_ns::apply_visitor(
- VariantToFloatVisitor(), base.at("SetPoint"));
+ VariantToDoubleVisitor(), base.at("SetPoint"));
}
info.pidInfo.ts = 1.0; // currently unused
info.pidInfo.p_c = variant_ns::apply_visitor(
- VariantToFloatVisitor(), base.at("PCoefficient"));
+ VariantToDoubleVisitor(), base.at("PCoefficient"));
info.pidInfo.i_c = variant_ns::apply_visitor(
- VariantToFloatVisitor(), base.at("ICoefficient"));
+ VariantToDoubleVisitor(), base.at("ICoefficient"));
info.pidInfo.ff_off = variant_ns::apply_visitor(
- VariantToFloatVisitor(), base.at("FFOffCoefficient"));
+ VariantToDoubleVisitor(), base.at("FFOffCoefficient"));
info.pidInfo.ff_gain = variant_ns::apply_visitor(
- VariantToFloatVisitor(), base.at("FFGainCoefficient"));
+ VariantToDoubleVisitor(), base.at("FFGainCoefficient"));
info.pidInfo.i_lim.max = variant_ns::apply_visitor(
- VariantToFloatVisitor(), base.at("ILimitMax"));
+ VariantToDoubleVisitor(), base.at("ILimitMax"));
info.pidInfo.i_lim.min = variant_ns::apply_visitor(
- VariantToFloatVisitor(), base.at("ILimitMin"));
+ VariantToDoubleVisitor(), base.at("ILimitMin"));
info.pidInfo.out_lim.max = variant_ns::apply_visitor(
- VariantToFloatVisitor(), base.at("OutLimitMax"));
+ VariantToDoubleVisitor(), base.at("OutLimitMax"));
info.pidInfo.out_lim.min = variant_ns::apply_visitor(
- VariantToFloatVisitor(), base.at("OutLimitMin"));
+ VariantToDoubleVisitor(), base.at("OutLimitMin"));
info.pidInfo.slew_neg = variant_ns::apply_visitor(
- VariantToFloatVisitor(), base.at("SlewNeg"));
+ VariantToDoubleVisitor(), base.at("SlewNeg"));
info.pidInfo.slew_pos = variant_ns::apply_visitor(
- VariantToFloatVisitor(), base.at("SlewPos"));
+ VariantToDoubleVisitor(), base.at("SlewPos"));
}
}
auto findStepwise =
@@ -494,13 +494,13 @@
if (findPosHyst != base.end())
{
info.stepwiseInfo.positiveHysteresis =
- variant_ns::apply_visitor(VariantToFloatVisitor(),
+ variant_ns::apply_visitor(VariantToDoubleVisitor(),
findPosHyst->second);
}
if (findNegHyst != base.end())
{
info.stepwiseInfo.positiveHysteresis =
- variant_ns::apply_visitor(VariantToFloatVisitor(),
+ variant_ns::apply_visitor(VariantToDoubleVisitor(),
findNegHyst->second);
}
std::vector<double> readings =
@@ -519,7 +519,7 @@
if (readings.size() < ec::maxStepwisePoints)
{
info.stepwiseInfo.reading[readings.size()] =
- std::numeric_limits<float>::quiet_NaN();
+ std::numeric_limits<double>::quiet_NaN();
}
std::vector<double> outputs =
variant_ns::get<std::vector<double>>(base.at("Output"));
@@ -533,7 +533,7 @@
if (outputs.size() < ec::maxStepwisePoints)
{
info.stepwiseInfo.output[outputs.size()] =
- std::numeric_limits<float>::quiet_NaN();
+ std::numeric_limits<double>::quiet_NaN();
}
}
}
diff --git a/dbus/dbuswrite.cpp b/dbus/dbuswrite.cpp
index fab9b4a..dff11d6 100644
--- a/dbus/dbuswrite.cpp
+++ b/dbus/dbuswrite.cpp
@@ -61,12 +61,12 @@
void DbusWritePercent::write(double value)
{
- float minimum = getMin();
- float maximum = getMax();
+ double minimum = getMin();
+ double maximum = getMax();
- float range = maximum - minimum;
- float offset = range * value;
- float ovalue = offset + minimum;
+ double range = maximum - minimum;
+ double offset = range * value;
+ double ovalue = offset + minimum;
if (oldValue == static_cast<int64_t>(ovalue))
{
diff --git a/dbus/util.hpp b/dbus/util.hpp
index 1b3a95b..719bb1d 100644
--- a/dbus/util.hpp
+++ b/dbus/util.hpp
@@ -85,23 +85,6 @@
std::string getMatch(const std::string& type, const std::string& id);
bool validType(const std::string& type);
-struct VariantToFloatVisitor
-{
- template <typename T>
- std::enable_if_t<std::is_arithmetic<T>::value, float>
- operator()(const T& t) const
- {
- return static_cast<float>(t);
- }
-
- template <typename T>
- std::enable_if_t<!std::is_arithmetic<T>::value, float>
- operator()(const T& t) const
- {
- throw std::invalid_argument("Cannot translate type to float");
- }
-};
-
struct VariantToDoubleVisitor
{
template <typename T>