#include "lm.h" #include std::vector lm_get_chips(const std::string& match) { std::vector out; sensors_chip_name name_glob; int ret = sensors_parse_chip_name(match.c_str(), &name_glob); if(ret < 0) { std::cerr<<"could not parse chip name\n"; return out; } const sensors_chip_name* s_name; int nr = 0; do { s_name = sensors_get_detected_chips(&name_glob, &nr); if(s_name) out.push_back(s_name); } while(s_name); sensors_free_chip_name(&name_glob); return out; } std::vector lm_get_temperatures(std::vector& chips) { std::vector out; for(const sensors_chip_name* chip : chips) { int nr = 0; const sensors_feature* feature; while((feature = sensors_get_features(chip, &nr))) { if(feature->type != SENSORS_FEATURE_TEMP) continue; const sensors_subfeature* subfeature = sensors_get_subfeature(chip, feature, SENSORS_SUBFEATURE_TEMP_INPUT); if(!subfeature) { std::cerr<<"could not read subfeature\n"; continue; } double val = 0; int ret = sensors_get_value(chip, subfeature->number, &val); if(ret < 0) { std::cerr<<"unable to read temperature for subfeature " <number<<' '<name<<": "<number; sensor.reading = val; out.push_back(sensor); } } return out; }