5 Commits

Author SHA1 Message Date
f606a1e450 Update version 2022-10-04 09:55:23 +02:00
2d744245fc Fix segmentation fault on shutdown 2022-10-04 09:53:57 +02:00
bd1695b4a7 Update version 2022-10-04 09:42:40 +02:00
987e65fd90 Add stuff to .gitignore 2022-10-04 09:42:14 +02:00
e567ede3ef Add logic to adjust minPWM on fan stop 2022-10-04 09:41:04 +02:00
7 changed files with 26 additions and 12 deletions

5
.gitignore vendored
View File

@@ -1,3 +1,8 @@
oot/ oot/
compile_commands.json compile_commands.json
.cache/ .cache/
pkg/
rel_oot/
src/
*.pkg.tar.zst
*.tar.gz

View File

@@ -1,5 +1,5 @@
pkgname=fantasize pkgname=fantasize
pkgver=0.1.2 pkgver=0.1.4
pkgrel=1 pkgrel=1
pkgdesc='C++ fan control for Linux' pkgdesc='C++ fan control for Linux'
url='https://github.com/Tabascl/fantasize.git' url='https://github.com/Tabascl/fantasize.git'

View File

@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.0) cmake_minimum_required(VERSION 3.0)
project(fantasize VERSION 0.1.2) project(fantasize VERSION 0.1.4)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

View File

@@ -27,6 +27,8 @@ private:
FanGenerator mFanGenerator; FanGenerator mFanGenerator;
std::unique_ptr<Controller> mController; std::unique_ptr<Controller> mController;
std::vector<std::shared_ptr<Fan>> mFans;
}; };
#endif // APP_H_ #endif // APP_H_

View File

@@ -5,10 +5,10 @@
using namespace std; using namespace std;
void App::Init() { void App::Init() {
auto fans = mSerializer.DeserializeFans(mSensorManager.RPMSensors()); mFans = mSerializer.DeserializeFans(mSensorManager.RPMSensors());
auto fanCurves = mSerializer.DeserializeFanCurves( auto fanCurves = mSerializer.DeserializeFanCurves(
mSensorManager.TemperatureSensors(), fans); mSensorManager.TemperatureSensors(), mFans);
mController = make_unique<Controller>(fanCurves); mController = make_unique<Controller>(fanCurves);
} }
@@ -23,6 +23,8 @@ void App::InitialSetup() {
mFanLabeler.RunFanLabelInteraction(fans); mFanLabeler.RunFanLabelInteraction(fans);
mSerializer.SerializeFans(fans); mSerializer.SerializeFans(fans);
mFans = fans;
} }
void App::NormalOperation() { void App::NormalOperation() {
@@ -30,4 +32,8 @@ void App::NormalOperation() {
mController->StartFanControlLoop(); mController->StartFanControlLoop();
} }
void App::Shutdown() { mController.reset(); } void App::Shutdown() {
mSerializer.SerializeFans(mFans);
mFans.clear();
mController.reset();
}

View File

@@ -16,6 +16,7 @@ FanCurve::FanCurve(std::vector<FanStep> steps,
void FanCurve::DoFanControl() { void FanCurve::DoFanControl() {
BOOST_LOG_FUNCTION(); BOOST_LOG_FUNCTION();
int temp = AggregateTemperature(); int temp = AggregateTemperature();
int t0, t1, p0, p1; int t0, t1, p0, p1;
@@ -43,9 +44,13 @@ void FanCurve::DoFanControl() {
if (f->RPM() <= 0) { if (f->RPM() <= 0) {
BOOST_LOG_TRIVIAL(warning) << "Fan stopped completely!"; BOOST_LOG_TRIVIAL(warning) << "Fan stopped completely!";
f->PWM(f->StartPWM()); f->PWM(f->StartPWM());
}
BOOST_LOG_TRIVIAL(info) << "Adjusting minPWM of fan " << f->toString();
f->MinPWM(f->MinPWM() + 2);
} else {
f->PWM(targetFanPower); f->PWM(targetFanPower);
} }
}
} }
// Dummy Implementation using AVG // Dummy Implementation using AVG

View File

@@ -47,9 +47,7 @@ void HwmonFan::FindPWMLimits() {
PWM(curPWM); PWM(curPWM);
this_thread::sleep_for(chrono::seconds(TIMEOUT)); this_thread::sleep_for(chrono::seconds(TIMEOUT));
int curRPM = RPM(); if (RPM() <= 0) {
if (curRPM <= 0) {
minPWM = curPWM + 5; minPWM = curPWM + 5;
break; break;
} }
@@ -68,9 +66,7 @@ void HwmonFan::FindPWMLimits() {
PWM(curPWM); PWM(curPWM);
this_thread::sleep_for(chrono::seconds(TIMEOUT)); this_thread::sleep_for(chrono::seconds(TIMEOUT));
int curRPM = RPM(); if (RPM() > 0) {
if (curRPM > 0) {
cout << "Setting start PWM: " << startPWM << endl; cout << "Setting start PWM: " << startPWM << endl;
startPWM = curPWM; startPWM = curPWM;
break; break;