projects
/
psensor.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed coredump when there are no sensors
[psensor.git]
/
src
/
lib
/
lmsensor.c
diff --git
a/src/lib/lmsensor.c
b/src/lib/lmsensor.c
index
d72da3e
..
ca553f3
100644
(file)
--- a/
src/lib/lmsensor.c
+++ b/
src/lib/lmsensor.c
@@
-124,7
+124,7
@@
void lmsensor_psensor_list_update(struct psensor **sensors)
struct psensor *s;
double v;
struct psensor *s;
double v;
- if (!init_done)
+ if (!init_done
|| !sensors
)
return;
while (*sensors) {
return;
while (*sensors) {
@@
-156,15
+156,20
@@
lmsensor_psensor_create(const sensors_chip_name *chip,
int type;
char *id, *label, *cname;
struct psensor *psensor;
int type;
char *id, *label, *cname;
struct psensor *psensor;
- sensors_subfeature_type fault_subfeature;
+ sensors_subfeature_type fault_subfeature, min_subfeature,
+ max_subfeature;
if (sensors_snprintf_chip_name(name, 200, chip) < 0)
return NULL;
if (feature->type == SENSORS_FEATURE_TEMP) {
fault_subfeature = SENSORS_SUBFEATURE_TEMP_FAULT;
if (sensors_snprintf_chip_name(name, 200, chip) < 0)
return NULL;
if (feature->type == SENSORS_FEATURE_TEMP) {
fault_subfeature = SENSORS_SUBFEATURE_TEMP_FAULT;
+ max_subfeature = SENSORS_SUBFEATURE_TEMP_MAX;
+ min_subfeature = SENSORS_SUBFEATURE_TEMP_MIN;
} else if (feature->type == SENSORS_FEATURE_FAN) {
fault_subfeature = SENSORS_SUBFEATURE_FAN_FAULT;
} else if (feature->type == SENSORS_FEATURE_FAN) {
fault_subfeature = SENSORS_SUBFEATURE_FAN_FAULT;
+ max_subfeature = SENSORS_SUBFEATURE_FAN_MAX;
+ min_subfeature = SENSORS_SUBFEATURE_FAN_MIN;
} else {
log_err(_("%s: Wrong feature type."), PROVIDER_NAME);
return NULL;
} else {
log_err(_("%s: Wrong feature type."), PROVIDER_NAME);
return NULL;
@@
-211,6
+216,14
@@
lmsensor_psensor_create(const sensors_chip_name *chip,
psensor = psensor_create(id, label, cname, type, values_max_length);
psensor = psensor_create(id, label, cname, type, values_max_length);
+ sf = sensors_get_subfeature(chip, feature, max_subfeature);
+ if (sf)
+ psensor->max = get_value(chip, sf);
+
+ sf = sensors_get_subfeature(chip, feature, min_subfeature);
+ if (sf)
+ psensor->min = get_value(chip, sf);
+
lmsensor_data_set(psensor, chip, feature);
if (feature->type == SENSORS_FEATURE_TEMP
lmsensor_data_set(psensor, chip, feature);
if (feature->type == SENSORS_FEATURE_TEMP