X-Git-Url: http://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fpsensor.c;h=995ad458a02eefe98377ee2179de337f74f2c039;hb=1410f23801330c83c83caf21353860ff2bc18399;hp=299af15990bbcf55290fd50492e9031c660a6cd9;hpb=cc35e177d57bc4ee2cc57ae25f130dfc168aa61d;p=psensor.git diff --git a/src/lib/psensor.c b/src/lib/psensor.c index 299af15..995ad45 100644 --- a/src/lib/psensor.c +++ b/src/lib/psensor.c @@ -31,7 +31,6 @@ #include "cpu.h" #endif - struct psensor *psensor_create(char *id, char *name, char *chip, @@ -44,7 +43,6 @@ struct psensor *psensor_create(char *id, psensor->id = id; psensor->name = name; psensor->chip = chip; - psensor->enabled = 1; psensor->min = UNKNOWN_DBL_VALUE; psensor->max = UNKNOWN_DBL_VALUE; @@ -65,6 +63,7 @@ struct psensor *psensor_create(char *id, psensor->color = NULL; + psensor->graph_enabled = 1; psensor->appindicator_enabled = 0; return psensor; @@ -233,7 +232,7 @@ psensor_value_to_str(unsigned int type, double value, int use_celcius) unit = psensor_type_to_unit_str(type, use_celcius); - if (!use_celcius) + if (is_temp_type(type) && !use_celcius) value = celcius_to_fahrenheit(value); sprintf(str, "%.0f%s", value, unit); @@ -259,9 +258,7 @@ void psensor_set_current_value(struct psensor *sensor, double value) psensor_set_current_measure(sensor, value, tv); } -void -psensor_set_current_measure(struct psensor *s, - double v, struct timeval tv) +void psensor_set_current_measure(struct psensor *s, double v, struct timeval tv) { memmove(s->measures, &s->measures[1], @@ -288,7 +285,7 @@ psensor_set_current_measure(struct psensor *s, } } -double psensor_get_current_value(struct psensor *sensor) +double psensor_get_current_value(const struct psensor *sensor) { return sensor->measures[sensor->values_max_length - 1].value; } @@ -310,7 +307,7 @@ double get_min_value(struct psensor **sensors, int type) while (*s) { struct psensor *sensor = *s; - if (sensor->enabled && (sensor->type & type)) { + if (sensor->graph_enabled && (sensor->type & type)) { int i; double t; @@ -342,7 +339,7 @@ double get_max_value(struct psensor **sensors, int type) while (*s) { struct psensor *sensor = *s; - if (sensor->enabled && (sensor->type & type)) { + if (sensor->graph_enabled && (sensor->type & type)) { int i; double t; for (i = 0; i < sensor->values_max_length; i++) { @@ -370,7 +367,7 @@ psensor_get_max_current_value(struct psensor **sensors, unsigned int type) while (*s_cur) { struct psensor *s = *s_cur; - if (s->enabled && (s->type & type)) { + if (s->graph_enabled && (s->type & type)) { double v = psensor_get_current_value(s); if (m == UNKNOWN_DBL_VALUE || v > m) @@ -527,3 +524,25 @@ void psensor_cleanup() { lmsensor_cleanup(); } + +struct psensor **psensor_list_copy(struct psensor **sensors) +{ + struct psensor **result; + int n, i; + + n = psensor_list_size(sensors); + result = malloc((n+1) * sizeof(struct psensor *)); + for (i = 0; i < n; i++) + result[i] = sensors[i]; + result[n] = NULL; + + return result; +} + +char * +psensor_current_value_to_str(const struct psensor *s, unsigned int celcius) +{ + return psensor_value_to_str(s->type, + psensor_get_current_value(s), + celcius); +}