* documentation files are generated with asciidoctor instead of
asciidoc.
* added support of BCM2835 which is mostly used in the Raspberry PI3.
+* Fresh install of 1.2.0 complains about missing sensor config
+ keys. (LP :#1650378)
v1.2.0
------
return g_key_file_get_string(kfile, sid, att, NULL);
}
-static bool sensor_get_double(const char *sid, const char *att, double *d)
+static bool sensor_get_double(const char *sid,
+ const char *att,
+ double *d,
+ double d_default)
{
GKeyFile *kfile;
GError *err;
kfile = get_sensor_key_file();
err = NULL;
+ if (!g_key_file_has_key(kfile, sid, att, &err)) {
+ if (err) {
+ log_err(err->message);
+ g_error_free(err);
+ return false;
+ }
+
+ *d = d_default;
+ return true;
+ }
+
+ err = NULL;
v = g_key_file_get_double(kfile, sid, att, &err);
if (err) {
sensor_set_bool(sid, ATT_SENSOR_GRAPH_ENABLED, enabled);
}
-bool config_get_sensor_alarm_high_threshold(const char *sid, double *v)
+bool config_get_sensor_alarm_high_threshold(const char *sid,
+ double *v,
+ double d)
{
- return sensor_get_double(sid, ATT_SENSOR_ALARM_HIGH_THRESHOLD, v);
+ return sensor_get_double(sid, ATT_SENSOR_ALARM_HIGH_THRESHOLD, v, d);
}
void config_set_sensor_alarm_high_threshold(const char *sid, int threshold)
sensor_set_int(sid, ATT_SENSOR_ALARM_HIGH_THRESHOLD, threshold);
}
-bool config_get_sensor_alarm_low_threshold(const char *sid, double *v)
+bool config_get_sensor_alarm_low_threshold(const char *sid, double *v, double d)
{
- return sensor_get_double(sid, ATT_SENSOR_ALARM_LOW_THRESHOLD, v);
+ return sensor_get_double(sid, ATT_SENSOR_ALARM_LOW_THRESHOLD, v, d);
}
void config_set_sensor_alarm_low_threshold(const char *sid, int threshold)
GdkRGBA *config_get_sensor_color(const char *);
void config_set_sensor_color(const char *, const GdkRGBA *);
-bool config_get_sensor_alarm_high_threshold(const char *, double *);
+bool config_get_sensor_alarm_high_threshold(const char *, double *, double);
void config_set_sensor_alarm_high_threshold(const char *, int);
-bool config_get_sensor_alarm_low_threshold(const char *, double *);
+bool config_get_sensor_alarm_low_threshold(const char *, double *, double);
void config_set_sensor_alarm_low_threshold(const char *, int);
bool config_get_sensor_alarm_enabled(const char *);
{
bool ret;
struct psensor *s;
- double high_temp;
+ double high_temp, high_default, low_default;
high_temp = config_get_default_high_threshold_temperature();
s->cb_alarm_raised = cb_alarm_raised;
s->cb_alarm_raised_data = ui;
- ret = config_get_sensor_alarm_high_threshold
- (s->id, &s->alarm_high_threshold);
-
- if (!ret) {
- if (s->max == UNKNOWN_DBL_VALUE) {
- if (s->type & SENSOR_TYPE_TEMP)
- s->alarm_high_threshold = high_temp;
- } else {
- s->alarm_high_threshold = s->max;
- }
+ if (s->max == UNKNOWN_DBL_VALUE) {
+ if (s->type & SENSOR_TYPE_TEMP)
+ high_default = high_temp;
+ else
+ high_default = UNKNOWN_DBL_VALUE;
+ } else {
+ high_default = s->max;
}
+ ret = config_get_sensor_alarm_high_threshold
+ (s->id, &s->alarm_high_threshold, high_default);
+
+ if (!ret)
+ s->alarm_high_threshold = high_default;
+
+ if (s->min == UNKNOWN_DBL_VALUE)
+ low_default = 0;
+ else
+ low_default = s->min;
+
ret = config_get_sensor_alarm_low_threshold
- (s->id, &s->alarm_low_threshold);
+ (s->id, &s->alarm_low_threshold, low_default);
- if (!ret && s->min != UNKNOWN_DBL_VALUE)
- s->alarm_low_threshold = s->min;
+ if (!ret)
+ s->alarm_low_threshold = low_default;
sensors++;
}