Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0f91960ef9 | |||
| d9192f10be | |||
| f606a1e450 | |||
| 2d744245fc | |||
| bd1695b4a7 | |||
| 987e65fd90 | |||
| e567ede3ef |
5
.gitignore
vendored
5
.gitignore
vendored
@@ -1,3 +1,8 @@
|
|||||||
oot/
|
oot/
|
||||||
compile_commands.json
|
compile_commands.json
|
||||||
.cache/
|
.cache/
|
||||||
|
pkg/
|
||||||
|
rel_oot/
|
||||||
|
src/
|
||||||
|
*.pkg.tar.zst
|
||||||
|
*.tar.gz
|
||||||
|
|||||||
2
PKGBUILD
2
PKGBUILD
@@ -1,5 +1,5 @@
|
|||||||
pkgname=fantasize
|
pkgname=fantasize
|
||||||
pkgver=0.1.2
|
pkgver=0.1.5
|
||||||
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'
|
||||||
|
|||||||
@@ -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.5)
|
||||||
|
|
||||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
|
||||||
|
|||||||
@@ -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_
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include <fan/HwmonFan.h>
|
#include <fan/HwmonFan.h>
|
||||||
|
|
||||||
#define TIMEOUT 10
|
#define TIMEOUT 10
|
||||||
|
#define STEP 2
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@@ -43,14 +44,12 @@ void HwmonFan::FindPWMLimits() {
|
|||||||
mMinPWM = 0;
|
mMinPWM = 0;
|
||||||
mStartPWM = 0;
|
mStartPWM = 0;
|
||||||
|
|
||||||
for (int curPWM = 100; curPWM > 0; curPWM -= 5) {
|
for (int curPWM = 100; curPWM > 0; curPWM -= STEP) {
|
||||||
PWM(curPWM);
|
PWM(curPWM);
|
||||||
this_thread::sleep_for(chrono::seconds(TIMEOUT));
|
this_thread::sleep_for(chrono::seconds(TIMEOUT));
|
||||||
|
|
||||||
int curRPM = RPM();
|
if (RPM() <= 0) {
|
||||||
|
minPWM = curPWM + STEP;
|
||||||
if (curRPM <= 0) {
|
|
||||||
minPWM = curPWM + 5;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -64,13 +63,11 @@ void HwmonFan::FindPWMLimits() {
|
|||||||
int startPWM = 0;
|
int startPWM = 0;
|
||||||
|
|
||||||
cout << "Looking for start PWM!" << endl;
|
cout << "Looking for start PWM!" << endl;
|
||||||
for (int curPWM = minPWM - 5; curPWM < 100; curPWM += 5) {
|
for (int curPWM = minPWM - STEP; curPWM < 100; curPWM += STEP) {
|
||||||
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;
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
#include <boost/log/expressions/formatters/named_scope.hpp>
|
|
||||||
#include <csignal>
|
#include <csignal>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
@@ -6,6 +5,7 @@
|
|||||||
#include <boost/log/attributes/named_scope.hpp>
|
#include <boost/log/attributes/named_scope.hpp>
|
||||||
#include <boost/log/core.hpp>
|
#include <boost/log/core.hpp>
|
||||||
#include <boost/log/expressions.hpp>
|
#include <boost/log/expressions.hpp>
|
||||||
|
#include <boost/log/expressions/formatters/named_scope.hpp>
|
||||||
#include <boost/log/expressions/message.hpp>
|
#include <boost/log/expressions/message.hpp>
|
||||||
#include <boost/log/support/date_time.hpp>
|
#include <boost/log/support/date_time.hpp>
|
||||||
#include <boost/log/trivial.hpp>
|
#include <boost/log/trivial.hpp>
|
||||||
@@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#include <App.h>
|
#include <App.h>
|
||||||
|
|
||||||
|
#define PROJECT_VERSION "v0.1.5"
|
||||||
|
|
||||||
namespace po = boost::program_options;
|
namespace po = boost::program_options;
|
||||||
namespace logging = boost::log;
|
namespace logging = boost::log;
|
||||||
|
|
||||||
@@ -59,7 +61,11 @@ void InitLogging(bool verbose) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
|
BOOST_LOG_FUNCTION()
|
||||||
|
BOOST_LOG_TRIVIAL(info) << "Version: " << PROJECT_VERSION;
|
||||||
|
|
||||||
signal(SIGINT, signal_handler);
|
signal(SIGINT, signal_handler);
|
||||||
|
signal(SIGTERM, signal_handler);
|
||||||
|
|
||||||
po::options_description desc("Allowed options");
|
po::options_description desc("Allowed options");
|
||||||
desc.add_options()("help,h", "produce help message")(
|
desc.add_options()("help,h", "produce help message")(
|
||||||
|
|||||||
Reference in New Issue
Block a user