diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 5a21b06..efdd880 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -8,8 +8,9 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) add_executable(app src/main.cxx - src/nvidia.cxx - src/pwm.cxx + src/Nvidia.cxx + src/Pwm.cxx + src/SensorsWrapper.cxx ) set_property(TARGET app PROPERTY CXX_STANDARD 17) diff --git a/app/include/nvidia.h b/app/include/Nvidia.h similarity index 100% rename from app/include/nvidia.h rename to app/include/Nvidia.h diff --git a/app/include/pwm.h b/app/include/Pwm.h similarity index 100% rename from app/include/pwm.h rename to app/include/Pwm.h diff --git a/app/include/SensorsWrapper.h b/app/include/SensorsWrapper.h new file mode 100644 index 0000000..0a6cf78 --- /dev/null +++ b/app/include/SensorsWrapper.h @@ -0,0 +1,17 @@ +#ifndef SENSORSWRAPPER_H_ +#define SENSORSWRAPPER_H_ + +#include + +#include + +class SensorsWrapper { +public: + SensorsWrapper(); + +private: + std::vector mTemperatureSensors; + std::vector mFanSensors; +}; + +#endif // SENSORSWRAPPER_H_ diff --git a/app/src/nvidia.cxx b/app/src/Nvidia.cxx similarity index 94% rename from app/src/nvidia.cxx rename to app/src/Nvidia.cxx index 161268b..e3ccd44 100644 --- a/app/src/nvidia.cxx +++ b/app/src/Nvidia.cxx @@ -1,5 +1,6 @@ #include -#include + +#include Nvidia::Nvidia() { nvmlInit_v2(); } Nvidia::~Nvidia() { nvmlShutdown(); } diff --git a/app/src/pwm.cxx b/app/src/Pwm.cxx similarity index 99% rename from app/src/pwm.cxx rename to app/src/Pwm.cxx index ce002b6..5087149 100644 --- a/app/src/pwm.cxx +++ b/app/src/Pwm.cxx @@ -1,12 +1,12 @@ #include -#include - #include #include #include #include #include +#include + namespace fs = std::filesystem; using namespace std; diff --git a/app/src/SensorsWrapper.cxx b/app/src/SensorsWrapper.cxx new file mode 100644 index 0000000..6dc25af --- /dev/null +++ b/app/src/SensorsWrapper.cxx @@ -0,0 +1,35 @@ +#include +#include +#include + +#include + +using namespace std; + +#define CONFIG_FILE "/etc/conf.d/sensors" + +SensorsWrapper::SensorsWrapper() { + auto config = fopen(CONFIG_FILE, "r"); + if (sensors_init(config) != 0) { + throw runtime_error("Config file doesn't exist"); + } + + int c = 0; + for (const sensors_chip_name *chipName; + (chipName = sensors_get_detected_chips(0, &c)) != NULL;) { + + int d = 0; + for (const sensors_feature *feature; + (feature = sensors_get_features(chipName, &d)) != NULL;) { + auto tempFeature = sensors_get_subfeature(chipName, feature, + SENSORS_SUBFEATURE_TEMP_INPUT); + if (tempFeature) + mTemperatureSensors.push_back(tempFeature); + + auto fanFeature = sensors_get_subfeature(chipName, feature, + SENSORS_SUBFEATURE_FAN_INPUT); + if (fanFeature) + mFanSensors.push_back(fanFeature); + } + } +} diff --git a/app/src/main.cxx b/app/src/main.cxx index e28de21..71ab7e4 100644 --- a/app/src/main.cxx +++ b/app/src/main.cxx @@ -1,8 +1,9 @@ -#include -#include +#include + #include -#include +#include +#include int main() { auto config = std::fopen("/etc/conf.d/sensors", "r");