Cleanup main, use new sensor implementation

This commit is contained in:
2022-09-11 18:57:16 +02:00
parent 2208aa8672
commit 1985e72c16
4 changed files with 34 additions and 54 deletions

View File

@@ -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_

View File

@@ -1,8 +1,6 @@
#ifndef TEMPERATURESENSOR_H_
#define TEMPERATURESENSOR_H_
#include <boost/json.hpp>
#include <iostream>
class TemperatureSensor {

View File

@@ -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<int>(*value);
}

View File

@@ -1,57 +1,43 @@
#include <exception>
#include <iostream>
#include <memory>
#include <vector>
#include <sensors/sensors.h>
#include <HwmonTemperatureSensor.h>
#include <Nvidia.h>
#include <Pwm.h>
#include <SensorsWrapper.h>
int main() {
auto config = std::fopen("/etc/conf.d/sensors", "r");
#define CONFIG_FILE "/etc/conf.d/sensors"
std::vector<std::shared_ptr<TemperatureSensor>> sensors() {
std::vector<std::shared_ptr<TemperatureSensor>> 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<HwmonTemperatureSensor>(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;