X-Git-Url: http://wpitchoune.net/gitweb/?p=psensor-pkg-debian.git;a=blobdiff_plain;f=src%2Flib%2Flmsensor.c;fp=src%2Flib%2Flmsensor.c;h=2ace1100f55ba06d3d37cf6c16c6a3954fc87fe7;hp=c33dfb2ff58b7cd7b1d93c1d0c79b159c488c843;hb=dcd813f21c83592155f712ff1acf450b483d8072;hpb=f055e7507526592d3a74c652f5f053701614c9c0 diff --git a/src/lib/lmsensor.c b/src/lib/lmsensor.c index c33dfb2..2ace110 100644 --- a/src/lib/lmsensor.c +++ b/src/lib/lmsensor.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2012 jeanfi@gmail.com + * Copyright (C) 2010-2013 jeanfi@gmail.com * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -39,8 +39,7 @@ static double get_value(const sensors_chip_name *name, err = sensors_get_value(name, sub->number, &val); if (err) { - fprintf(stderr, - _("ERROR: Can't get value of subfeature %s: %s\n"), + log_err(_("lmsensor: cannot get value of subfeature %s: %s."), sub->name, sensors_strerror(err)); val = UNKNOWN_DBL_VALUE; } @@ -85,14 +84,16 @@ void lmsensor_psensor_list_update(struct psensor **sensors) return ; while (*s_ptr) { - struct psensor *sensor = *s_ptr; - - if (sensor->type == SENSOR_TYPE_LMSENSOR_TEMP) - psensor_set_current_value - (sensor, get_temp_input(sensor)); - else if (sensor->type == SENSOR_TYPE_LMSENSOR_FAN) - psensor_set_current_value(sensor, - get_fan_input(sensor)); + struct psensor *s = *s_ptr; + + if (!(s->type & SENSOR_TYPE_REMOTE) + && s->type & SENSOR_TYPE_LMSENSOR) { + if (s->type & SENSOR_TYPE_TEMP) + psensor_set_current_value(s, + get_temp_input(s)); + else if (s->type & SENSOR_TYPE_RPM) + psensor_set_current_value(s, get_fan_input(s)); + } s_ptr++; } @@ -105,9 +106,8 @@ lmsensor_psensor_create(const sensors_chip_name *chip, { char name[200]; const sensors_subfeature *sf; - char *label; int type; - char *id; + char *id, *label, *cname; struct psensor *psensor; sensors_subfeature_type fault_subfeature; @@ -116,13 +116,11 @@ lmsensor_psensor_create(const sensors_chip_name *chip, if (feature->type == SENSORS_FEATURE_TEMP) { fault_subfeature = SENSORS_SUBFEATURE_TEMP_FAULT; - } else if (feature->type == SENSORS_FEATURE_FAN) { fault_subfeature = SENSORS_SUBFEATURE_FAN_FAULT; - } else { - fprintf(stderr, - _("ERROR: create_sensor, wrong feature type\n")); + log_err(_( +"lmsensor: lmsensor_psensor_create failure: wrong feature type.")); return NULL; } @@ -134,11 +132,11 @@ lmsensor_psensor_create(const sensors_chip_name *chip, if (!label) return NULL; - type = 0; + type = SENSOR_TYPE_LMSENSOR; if (feature->type == SENSORS_FEATURE_TEMP) - type = SENSOR_TYPE_LMSENSOR_TEMP; + type |= SENSOR_TYPE_TEMP; else if (feature->type == SENSORS_FEATURE_FAN) - type = SENSOR_TYPE_LMSENSOR_FAN; + type |= (SENSOR_TYPE_RPM|SENSOR_TYPE_FAN); else return NULL; @@ -146,7 +144,20 @@ lmsensor_psensor_create(const sensors_chip_name *chip, 1); sprintf(id, "lmsensor %s %s", name, label); - psensor = psensor_create(id, label, type, values_max_length); + if (!strcmp(chip->prefix, "coretemp")) + cname = strdup("Intel CPU"); + else if (!strcmp(chip->prefix, "k10temp") + || !strcmp(chip->prefix, "k8temp") + || !strcmp(chip->prefix, "fam15h_power")) + cname = strdup("AMD CPU"); + else if (!strcmp(chip->prefix, "nouveau")) + cname = strdup("Nvidia GPU"); + else if (!strcmp(chip->prefix, "via-cputemp")) + cname = strdup("VIA CPU"); + else + cname = strdup(chip->prefix); + + psensor = psensor_create(id, label, cname, type, values_max_length); psensor->iname = chip; psensor->feature = feature; @@ -204,8 +215,7 @@ void lmsensor_init() int err = sensors_init(NULL); if (err) { - fprintf(stderr, - _("ERROR: lm-sensors initialization failure: %s\n"), + log_err(_("lmsensor: initialization failure: %s."), sensors_strerror(err)); init_done = 0; } else {