Implement min PWM finding logic
This commit is contained in:
@@ -1,20 +1,59 @@
|
||||
#include <chrono>
|
||||
#include <iostream>
|
||||
#include <ostream>
|
||||
#include <thread>
|
||||
|
||||
#include "pwm/PWMControl.h"
|
||||
#include <boost/json/object.hpp>
|
||||
#include <fan/HwmonFan.h>
|
||||
|
||||
#define TIMEOUT 5
|
||||
|
||||
using namespace std;
|
||||
|
||||
HwmonFan::HwmonFan(shared_ptr<PWMControl> pwmControl,
|
||||
shared_ptr<Sensor> rpmSensor)
|
||||
: mPWMControl(pwmControl), mRpmSensor(rpmSensor) {}
|
||||
HwmonFan::HwmonFan(std::shared_ptr<PWMControl> pwmControl,
|
||||
std::shared_ptr<Sensor> rpmSensor, std::string label,
|
||||
int minPWM, int startPWM)
|
||||
: mPWMControl(pwmControl), mRpmSensor(rpmSensor), mLabel(label),
|
||||
mMinPWM(minPWM), mStartPWM(startPWM) {
|
||||
mPWMControl->EnableManualControl();
|
||||
}
|
||||
|
||||
void HwmonFan::pwm(int percent) { mPWMControl->pwm(percent); }
|
||||
void HwmonFan::PWM(int percent) { mPWMControl->pwm(percent); }
|
||||
|
||||
int HwmonFan::rpm() { return mRpmSensor->value(); }
|
||||
int HwmonFan::RPM() { return mRpmSensor->value(); }
|
||||
|
||||
void HwmonFan::FindMinPWM() {
|
||||
int minPWM = 0;
|
||||
|
||||
for (int curPWM = 100; curPWM > 0; curPWM -= 5) {
|
||||
PWM(curPWM);
|
||||
this_thread::sleep_for(chrono::seconds(TIMEOUT));
|
||||
|
||||
int curRPM = RPM();
|
||||
|
||||
if (curRPM <= 0) {
|
||||
minPWM = curPWM + 5;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (minPWM == 0) {
|
||||
cout << "Fan never stopped. ";
|
||||
}
|
||||
cout << "Setting minimal PWM: " << minPWM << endl;
|
||||
|
||||
mMinPWM = minPWM;
|
||||
}
|
||||
|
||||
void HwmonFan::FindStartPWM() {}
|
||||
|
||||
json HwmonFan::toJson() const {
|
||||
json obj;
|
||||
obj = {mPWMControl->toJson(), mRpmSensor->toJson(), mLabel};
|
||||
obj = {mPWMControl->toJson(),
|
||||
mRpmSensor->toJson(),
|
||||
{"label", mLabel},
|
||||
{"MinPWM", mMinPWM}};
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user