X-Git-Url: https://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fpsensor.c;h=ce44a566252ee412e949d2d802f0f83430ee52e7;hb=e1f8d2cbf6c09da9cbcb0bdf04d495b3d3666178;hp=084d0f089087b9177e0f964164108ff0e547c15f;hpb=d65b849cd34a6ea0ffc37e23bf3d12e38d647644;p=psensor.git diff --git a/src/lib/psensor.c b/src/lib/psensor.c index 084d0f0..ce44a56 100644 --- a/src/lib/psensor.c +++ b/src/lib/psensor.c @@ -49,14 +49,14 @@ struct psensor *psensor_create(char *id, char *name, psensor->values_max_length = values_max_length; psensor->measures = measures_dbl_create(values_max_length); - psensor->alarm_limit = 0; + psensor->alarm_enabled = 0; + psensor->alarm_high_thresold = 0; + psensor->alarm_low_thresold = 0; psensor->cb_alarm_raised = NULL; psensor->cb_alarm_raised_data = NULL; psensor->alarm_raised = 0; - psensor->alarm_enabled = 0; - psensor->url = NULL; psensor->color = NULL; @@ -205,9 +205,13 @@ double celcius_to_fahrenheit(double c) return c * (9.0/5.0) + 32; } -char *psensor_value_to_string(unsigned int type, - double value, - int use_celcius) +double fahrenheit_to_celcius(double f) +{ + return (f - 32) * (5.0/9.0); +} + +char * +psensor_value_to_str(unsigned int type, double value, int use_celcius) { /* should not be possible to exceed 20 characters with temp or rpm values the .x part is never displayed */ @@ -232,6 +236,14 @@ char *psensor_value_to_string(unsigned int type, return str; } +char * +psensor_measure_to_str(const struct measure *m, + unsigned int type, + unsigned int use_celcius) +{ + return psensor_value_to_str(type, m->value, use_celcius); +} + void psensor_set_current_value(struct psensor *sensor, double value) { struct timeval tv; @@ -250,7 +262,7 @@ psensor_set_current_measure(struct psensor *s, &s->measures[1], (s->values_max_length - 1) * sizeof(struct measure)); - s->measures[s->values_max_length - 1].value.d_num = v; + s->measures[s->values_max_length - 1].value = v; s->measures[s->values_max_length - 1].time = tv; if (s->min == UNKNOWN_DBL_VALUE || v < s->min) @@ -259,11 +271,10 @@ psensor_set_current_measure(struct psensor *s, if (s->max == UNKNOWN_DBL_VALUE || v > s->max) s->max = v; - if (s->alarm_limit && s->alarm_enabled) { - if (v > s->alarm_limit) { + if (s->alarm_enabled) { + if (v > s->alarm_high_thresold || v < s->alarm_low_thresold) { if (!s->alarm_raised && s->cb_alarm_raised) - s->cb_alarm_raised(s, - s->cb_alarm_raised_data); + s->cb_alarm_raised(s, s->cb_alarm_raised_data); s->alarm_raised = 1; } else { @@ -274,7 +285,7 @@ psensor_set_current_measure(struct psensor *s, double psensor_get_current_value(struct psensor *sensor) { - return sensor->measures[sensor->values_max_length - 1].value.d_num; + return sensor->measures[sensor->values_max_length - 1].value; } struct measure *psensor_get_current_measure(struct psensor *sensor) @@ -299,7 +310,7 @@ double get_min_value(struct psensor **sensors, int type) double t; for (i = 0; i < sensor->values_max_length; i++) { - t = sensor->measures[i].value.d_num; + t = sensor->measures[i].value; if (t == UNKNOWN_DBL_VALUE) continue; @@ -330,7 +341,7 @@ double get_max_value(struct psensor **sensors, int type) int i; double t; for (i = 0; i < sensor->values_max_length; i++) { - t = sensor->measures[i].value.d_num; + t = sensor->measures[i].value; if (t == UNKNOWN_DBL_VALUE) continue; @@ -455,9 +466,9 @@ const char *psensor_type_to_unit_str(unsigned int type, int use_celcius) { if (type & SENSOR_TYPE_TEMP) { if (use_celcius) - return _("°C"); + return "\302\260C"; else - return _("°F"); + return "\302\260F"; } if (type & SENSOR_TYPE_FAN) @@ -466,7 +477,7 @@ const char *psensor_type_to_unit_str(unsigned int type, int use_celcius) if (type & SENSOR_TYPE_CPU_USAGE) return _("%"); - return "N/A"; + return _("N/A"); } void psensor_list_update_measures(struct psensor **sensors)