From: Jean-Philippe Orsini Date: Thu, 9 Oct 2014 07:39:56 +0000 (+0200) Subject: use max/min of the sensor for the threshold if not overriden by the configuration X-Git-Tag: v1.2.0~79 X-Git-Url: http://git.wpitchoune.net/gitweb/?p=psensor.git;a=commitdiff_plain;h=912b5d1986633786a656bb3361f7ae9c1263acef use max/min of the sensor for the threshold if not overriden by the configuration --- diff --git a/src/cfg.c b/src/cfg.c index 075989a..3bd02f4 100644 --- a/src/cfg.c +++ b/src/cfg.c @@ -608,6 +608,24 @@ static char *sensor_get_str(const char *sid, const char *att) return g_key_file_get_string(kfile, sid, att, NULL); } +static bool sensor_get_double(const char *sid, const char *att, double *d) +{ + GKeyFile *kfile; + GError *err; + double v; + + kfile = get_sensor_key_file(); + + err = NULL; + v = g_key_file_get_double(kfile, sid, att, &err); + + if (err) + return false; + + *d = v; + return true; +} + static bool sensor_get_bool(const char *sid, const char *att) { GKeyFile *kfile; @@ -737,9 +755,9 @@ void config_set_sensor_graph_enabled(const char *sid, bool enabled) sensor_set_bool(sid, ATT_SENSOR_GRAPH_ENABLED, enabled); } -int config_get_sensor_alarm_high_threshold(const char *sid) +bool config_get_sensor_alarm_high_threshold(const char *sid, double *v) { - return sensor_get_int(sid, ATT_SENSOR_ALARM_HIGH_THRESHOLD); + return sensor_get_double(sid, ATT_SENSOR_ALARM_HIGH_THRESHOLD, v); } void config_set_sensor_alarm_high_threshold(const char *sid, int threshold) @@ -747,9 +765,9 @@ void config_set_sensor_alarm_high_threshold(const char *sid, int threshold) sensor_set_int(sid, ATT_SENSOR_ALARM_HIGH_THRESHOLD, threshold); } -int config_get_sensor_alarm_low_threshold(const char *sid) +bool config_get_sensor_alarm_low_threshold(const char *sid, double *v) { - return sensor_get_int(sid, ATT_SENSOR_ALARM_LOW_THRESHOLD); + return sensor_get_double(sid, ATT_SENSOR_ALARM_LOW_THRESHOLD, v); } void config_set_sensor_alarm_low_threshold(const char *sid, int threshold) diff --git a/src/cfg.h b/src/cfg.h index 2aa5a3e..02e605d 100644 --- a/src/cfg.h +++ b/src/cfg.h @@ -87,10 +87,10 @@ void config_cleanup(void); GdkRGBA *config_get_sensor_color(const char *); void config_set_sensor_color(const char *, const GdkRGBA *); -int config_get_sensor_alarm_high_threshold(const char *); +bool config_get_sensor_alarm_high_threshold(const char *, double *); void config_set_sensor_alarm_high_threshold(const char *, int); -int config_get_sensor_alarm_low_threshold(const char *); +bool config_get_sensor_alarm_low_threshold(const char *, double *); void config_set_sensor_alarm_low_threshold(const char *, int); bool config_get_sensor_alarm_enabled(const char *); diff --git a/src/lib/lmsensor.c b/src/lib/lmsensor.c index 32785b6..ccd2fd5 100644 --- a/src/lib/lmsensor.c +++ b/src/lib/lmsensor.c @@ -211,7 +211,6 @@ lmsensor_psensor_create(const sensors_chip_name *chip, psensor = psensor_create(id, label, cname, type, values_max_length); - sf = sensors_get_subfeature(chip, feature, SENSORS_SUBFEATURE_TEMP_MAX); if (sf) psensor->max = get_value(chip, sf); diff --git a/src/lib/psensor.h b/src/lib/psensor.h index cf5dc24..1637f89 100644 --- a/src/lib/psensor.h +++ b/src/lib/psensor.h @@ -90,8 +90,8 @@ struct psensor { /* The lowest value detected during this session. */ double sess_lowest; - int alarm_high_threshold; - int alarm_low_threshold; + double alarm_high_threshold; + double alarm_low_threshold; /* Whether an alarm is raised for this sensor */ bool alarm_raised; diff --git a/src/main.c b/src/main.c index 1eea594..a1af9bc 100644 --- a/src/main.c +++ b/src/main.c @@ -228,6 +228,7 @@ static void associate_cb_alarm_raised(struct psensor **sensors, struct ui_psensor *ui) { struct psensor **sensor_cur = sensors; + bool ret; while (*sensor_cur) { struct psensor *s = *sensor_cur; @@ -235,10 +236,17 @@ associate_cb_alarm_raised(struct psensor **sensors, struct ui_psensor *ui) s->cb_alarm_raised = cb_alarm_raised; s->cb_alarm_raised_data = ui; - s->alarm_high_threshold - = config_get_sensor_alarm_high_threshold(s->id); - s->alarm_low_threshold - = config_get_sensor_alarm_low_threshold(s->id); + ret = config_get_sensor_alarm_high_threshold + (s->id, &s->alarm_high_threshold); + + if (!ret && s->max != UNKNOWN_DBL_VALUE) + s->alarm_high_threshold = s->max; + + ret = config_get_sensor_alarm_low_threshold + (s->id, &s->alarm_low_threshold); + + if (!ret && s->min != UNKNOWN_DBL_VALUE) + s->alarm_low_threshold = s->min; sensor_cur++; } diff --git a/src/ui_sensorpref.c b/src/ui_sensorpref.c index 5ed1e49..0704710 100644 --- a/src/ui_sensorpref.c +++ b/src/ui_sensorpref.c @@ -341,12 +341,12 @@ static void update_pref(struct psensor *s) gtk_toggle_button_set_active(w_sensor_alarm, config_get_sensor_alarm_enabled(s->id)); - threshold = config_get_sensor_alarm_high_threshold(s->id); + threshold = s->alarm_high_threshold; if (!use_celsius) threshold = celsius_to_fahrenheit(threshold); gtk_spin_button_set_value(w_sensor_high_threshold, threshold); - threshold = config_get_sensor_alarm_low_threshold(s->id); + threshold = s->alarm_low_threshold; if (!use_celsius) threshold = celsius_to_fahrenheit(threshold); gtk_spin_button_set_value(w_sensor_low_threshold, threshold);