#include <libintl.h>
#define _(str) gettext(str)
+#include <stdio.h>
+
#include <hdd.h>
#include <psensor.h>
#include <temperature.h>
psensor->id = id;
psensor->name = name;
psensor->chip = chip;
- psensor->min = UNKNOWN_DBL_VALUE;
- psensor->max = UNKNOWN_DBL_VALUE;
+ psensor->sess_lowest = UNKNOWN_DBL_VALUE;
+ psensor->sess_highest = UNKNOWN_DBL_VALUE;
+
+ if (type & SENSOR_TYPE_PERCENT) {
+ psensor->min = 0;
+ psensor->max = 100;
+ } else {
+ psensor->min = UNKNOWN_DBL_VALUE;
+ psensor->max = UNKNOWN_DBL_VALUE;
+ }
psensor->type = type;
psensor->values_max_length = values_max_length;
psensor->measures = measures_dbl_create(values_max_length);
- psensor->alarm_enabled = 0;
psensor->alarm_high_threshold = 0;
psensor->alarm_low_threshold = 0;
psensor->cb_alarm_raised_data = NULL;
psensor->alarm_raised = 0;
- psensor->url = NULL;
-
- psensor->color = NULL;
-
- psensor->graph_enabled = 1;
- psensor->appindicator_enabled = 0;
-
psensor->provider_data = NULL;
psensor->provider_data_free_fct = &free;
if (s->chip)
free(s->chip);
- if (s->color)
- free(s->color);
-
measures_free(s->measures);
- free(s->url);
-
if (s->provider_data && s->provider_data_free_fct)
s->provider_data_free_fct(s->provider_data);
return size;
}
-bool psensor_list_contains_type(struct psensor **sensors, unsigned int type)
-{
- if (!sensors)
- return false;
-
- while (*sensors) {
- if (((*sensors)->type & type) == type)
- return true;
- sensors++;
- }
-
- return false;
-}
-
struct psensor **psensor_list_add(struct psensor **sensors,
struct psensor *sensor)
{
int size;
+ struct psensor **result;
size = psensor_list_size(sensors);
- struct psensor **result
- = malloc((size + 1 + 1) * sizeof(struct psensor *));
+ result = malloc((size + 1 + 1) * sizeof(struct psensor *));
if (sensors)
memcpy(result, sensors, size * sizeof(struct psensor *));
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)
- s->min = v;
-
- if (s->max == UNKNOWN_DBL_VALUE || v > s->max)
- s->max = v;
+ if (s->sess_lowest == UNKNOWN_DBL_VALUE || v < s->sess_lowest)
+ s->sess_lowest = v;
- if (s->alarm_enabled) {
- if (v > s->alarm_high_threshold || v < s->alarm_low_threshold) {
- if (!s->alarm_raised && s->cb_alarm_raised)
- s->cb_alarm_raised(s, s->cb_alarm_raised_data);
+ if (s->sess_highest == UNKNOWN_DBL_VALUE || v > s->sess_highest)
+ s->sess_highest = v;
- s->alarm_raised = 1;
- } else {
- s->alarm_raised = 0;
+ if (v > s->alarm_high_threshold || v < s->alarm_low_threshold) {
+ if (!s->alarm_raised && s->cb_alarm_raised) {
+ s->alarm_raised = true;
+ s->cb_alarm_raised(s, s->cb_alarm_raised_data);
}
+ } else {
+ s->alarm_raised = false;
}
}
return m;
}
-double
-psensor_get_max_current_value(struct psensor **sensors, unsigned int type)
-{
- double m = UNKNOWN_DBL_VALUE;
- struct psensor **s_cur = sensors;
-
- while (*s_cur) {
- struct psensor *s = *s_cur;
-
- if (s->graph_enabled && (s->type & type)) {
- double v = psensor_get_current_value(s);
-
- if (m == UNKNOWN_DBL_VALUE || v > m)
- m = v;
- }
-
- s_cur++;
- }
-
- return m;
-}
-
double get_min_temp(struct psensor **sensors)
{
return get_min_value(sensors, SENSOR_TYPE_TEMP);
psensor_get_current_value(s),
use_celsius);
}
-
-struct psensor **psensor_list_filter_graph_enabled(struct psensor **sensors)
-{
- int n, i;
- struct psensor **result, **cur, *s;
-
- if (!sensors)
- return NULL;
-
- n = psensor_list_size(sensors);
- result = malloc((n+1) * sizeof(struct psensor *));
-
- for (cur = sensors, i = 0; *cur; cur++) {
- s = *cur;
-
- if (s->graph_enabled)
- result[i++] = s;
- }
-
- result[i] = NULL;
-
- return result;
-}