use max/min of the sensor for the threshold if not overriden by the configuration
authorJean-Philippe Orsini <jeanfi@gmail.com>
Thu, 9 Oct 2014 07:39:56 +0000 (09:39 +0200)
committerJean-Philippe Orsini <jeanfi@gmail.com>
Thu, 9 Oct 2014 07:39:56 +0000 (09:39 +0200)
src/cfg.c
src/cfg.h
src/lib/lmsensor.c
src/lib/psensor.h
src/main.c
src/ui_sensorpref.c

index 075989a..3bd02f4 100644 (file)
--- 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)
index 2aa5a3e..02e605d 100644 (file)
--- 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 *);
index 32785b6..ccd2fd5 100644 (file)
@@ -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);
index cf5dc24..1637f89 100644 (file)
@@ -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;
index 1eea594..a1af9bc 100644 (file)
@@ -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++;
        }
index 5ed1e49..0704710 100644 (file)
@@ -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);