Fix severe bug, improve logging, handle fan stops

Conversion from power percentage to PWM value didn't take into floating
point arithmetic into account
Make log messages more helpful, add handling for fan stopping completely
This commit is contained in:
2022-10-04 00:26:57 +02:00
parent 1c2067286e
commit 46a06214a2
7 changed files with 63 additions and 27 deletions

View File

@@ -36,6 +36,8 @@ PWMControl::PWMControl(string controlPath) : mControlPath(controlPath) {
}
PWMControl::~PWMControl() {
BOOST_LOG_FUNCTION();
BOOST_LOG_TRIVIAL(trace) << "Cleanup";
Reset();
}
@@ -43,17 +45,16 @@ PWMControl::~PWMControl() {
void PWMControl::Power(int percent) {
BOOST_LOG_FUNCTION();
int pwmValue = PWM_MAX_VALUE * (percent / 100);
int pwmValue = (PWM_MAX_VALUE * percent) / 100;
if (percent != mCurrentValue) {
BOOST_LOG_TRIVIAL(trace) << "Updating control value to " << percent;
BOOST_LOG_TRIVIAL(trace)
<< "Updating control value to " << percent << "% (" << pwmValue << ")";
ofstream ostrm(mControlPath, ios::trunc);
ostrm << pwmValue;
ostrm.close();
mCurrentValue = percent;
} else {
BOOST_LOG_TRIVIAL(trace) << "Value unchanged, do nothing";
}
}
@@ -64,7 +65,7 @@ int PWMControl::Power() {
istrm.open(mControlPath);
istrm >> value;
return (value / PWM_MAX_VALUE) * 100;
return (value * 100) / PWM_MAX_VALUE;
}
void PWMControl::EnableManualControl() {