diff --git a/app/include/HwmonTemperatureSensor.h b/app/include/HwmonTemperatureSensor.h index 0709a47..608ebc4 100644 --- a/app/include/HwmonTemperatureSensor.h +++ b/app/include/HwmonTemperatureSensor.h @@ -7,14 +7,14 @@ class HwmonTemperatureSensor : public TemperatureSensor { public: - HwmonTemperatureSensor(sensors_chip_name chipName, - sensors_subfeature subfeature); + HwmonTemperatureSensor(const sensors_chip_name *chipName, + const sensors_subfeature *subfeature); int getTemperature() override; private: - sensors_chip_name mChipName; - sensors_subfeature mSubFeature; + const sensors_chip_name *mChipName; + const sensors_subfeature *mSubFeature; }; #endif // HWMONTEMPERATURESENSOR_H_ diff --git a/app/include/TemperatureSensor.h b/app/include/TemperatureSensor.h index e021b82..39fa942 100644 --- a/app/include/TemperatureSensor.h +++ b/app/include/TemperatureSensor.h @@ -1,8 +1,6 @@ #ifndef TEMPERATURESENSOR_H_ #define TEMPERATURESENSOR_H_ -#include - #include class TemperatureSensor { diff --git a/app/src/HwmonTemperatureSensor.cxx b/app/src/HwmonTemperatureSensor.cxx index 3c13dd5..ffb7b98 100644 --- a/app/src/HwmonTemperatureSensor.cxx +++ b/app/src/HwmonTemperatureSensor.cxx @@ -4,13 +4,13 @@ using namespace std; -HwmonTemperatureSensor::HwmonTemperatureSensor(sensors_chip_name chipName, - sensors_subfeature subfeature) +HwmonTemperatureSensor::HwmonTemperatureSensor( + const sensors_chip_name *chipName, const sensors_subfeature *subfeature) : mChipName(chipName), mSubFeature(subfeature) {} int HwmonTemperatureSensor::getTemperature() { double *value; - sensors_get_value(&mChipName, mSubFeature.number, value); + sensors_get_value(mChipName, mSubFeature->number, value); return static_cast(*value); } diff --git a/app/src/main.cxx b/app/src/main.cxx index 0293dab..db3925b 100644 --- a/app/src/main.cxx +++ b/app/src/main.cxx @@ -1,57 +1,43 @@ +#include #include +#include +#include #include +#include #include #include -#include -int main() { - auto config = std::fopen("/etc/conf.d/sensors", "r"); +#define CONFIG_FILE "/etc/conf.d/sensors" + +std::vector> sensors() { + std::vector> sensors; + + auto config = fopen(CONFIG_FILE, "r"); if (sensors_init(config) != 0) { - std::cout << "Fuck" << std::endl; - return 1; + throw std::runtime_error("Config file doesn't exist"); } int c = 0; - for (const sensors_chip_name *i; - (i = sensors_get_detected_chips(0, &c)) != NULL;) { - std::cout << "Prefix: " << i->prefix << std::endl; - - size_t size; - char *string; - - sensors_snprintf_chip_name(string, size, i); - - std::cout << std::string(string) << std::endl; + for (const sensors_chip_name *chipName; + (chipName = sensors_get_detected_chips(0, &c)) != NULL;) { int d = 0; - for (const sensors_feature *j; (j = sensors_get_features(i, &d)) != NULL;) { - const sensors_subfeature *temp_feature = - sensors_get_subfeature(i, j, SENSORS_SUBFEATURE_TEMP_INPUT); - if (temp_feature) { - std::cout << sensors_get_label(i, j); - - double value; - if (sensors_get_value(i, temp_feature->number, &value) == 0) - std::cout << ": " << value << " C" << std::endl; - } - - const sensors_subfeature *fan_feature = - sensors_get_subfeature(i, j, SENSORS_SUBFEATURE_FAN_INPUT); - - if (fan_feature) { - std::cout << sensors_get_label(i, j); - - double value; - if (sensors_get_value(i, fan_feature->number, &value) == 0) - std::cout << ": " << value << " RPM" << std::endl; - } + 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) + sensors.push_back( + std::make_shared(chipName, tempFeature)); } - - std::cout << std::endl; } + return sensors; +} + +int main() { Nvidia nv; auto temp = nv.get_gpu_temperature(); std::cout << "\nGPU Temp: " << temp << std::endl; @@ -64,14 +50,10 @@ int main() { std::cout << pwm.readValue(controls[0], PWM_CONTROL_PROPERTY::ENABLE) << std::endl; - SensorsWrapper sens; - auto sensors = sens.getTemperatureSensors(); + auto tempSensors = sensors(); - std::cout << "\n"; - - for (auto sensor : sensors) { - std::cout << sens.getLabel(sensor) << ": " << sens.getValue(sensor) - << std::endl; + for (auto s : tempSensors) { + std::cout << s->getTemperature() << std::endl; } return 0;