Add option to set frequency in json

This commit is contained in:
2022-10-18 11:05:05 +02:00
parent 596a30b76a
commit f718f82ad1
11 changed files with 71 additions and 13 deletions

View File

@@ -10,7 +10,9 @@ void App::Init() {
auto fanCurves = mSerializer.DeserializeFanCurves(
mSensorManager.TemperatureSensors(), mFans);
mController = make_unique<Controller>(fanCurves);
mSettings = mSerializer.DeserializeSettings();
mController = make_unique<Controller>(mSettings, fanCurves);
}
void App::InitialSetup() {

View File

@@ -6,10 +6,10 @@
using namespace std;
#define TIMEOUT 500
Controller::Controller(vector<shared_ptr<FanCurve>> curves)
: mFanCurves(curves), mRun(false) {}
Controller::Controller(shared_ptr<Settings> settings,
vector<shared_ptr<FanCurve>> curves)
: mTimeout((1 / settings->Frequency()) * 1000), mFanCurves(curves),
mRun(false) {}
Controller::~Controller() { StopFanControlLoop(); }
@@ -32,6 +32,6 @@ void Controller::Loop() {
c->DoFanControl();
}
this_thread::sleep_for(chrono::milliseconds(TIMEOUT));
this_thread::sleep_for(chrono::milliseconds(mTimeout));
}
}

View File

@@ -1,5 +1,4 @@
#include "fan/FanCurve.h"
#include "sensor/Sensor.h"
#include "Settings.h"
#include <filesystem>
#include <fstream>
#include <iostream>
@@ -124,3 +123,18 @@ vector<shared_ptr<FanCurve>> Serializer::DeserializeFanCurves(
return curves;
}
shared_ptr<Settings> Serializer::DeserializeSettings() {
int frequency = FREQUENCY_DEFAULT;
auto data = ReadJson();
if (data.contains("settings")) {
auto items = data["settings"];
if (items.contains("frequency"))
frequency = items["frequency"];
}
return make_shared<Settings>(frequency);
}

17
app/src/Settings.cxx Normal file
View File

@@ -0,0 +1,17 @@
#include <iostream>
#include <boost/log/attributes/named_scope.hpp>
#include <boost/log/trivial.hpp>
#include <Settings.h>
Settings::Settings(int frequency) : mFrequency(frequency) { LogSettings(); }
int Settings::Frequency() const { return mFrequency; }
void Settings::LogSettings() {
BOOST_LOG_FUNCTION();
BOOST_LOG_TRIVIAL(info) << "### Settings";
BOOST_LOG_TRIVIAL(info) << "Frequency: " << mFrequency << "Hz";
}