added missing static flag
[psensor.git] / src / lib / psensor.c
index c028c5e..05fe03e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -31,7 +31,6 @@
 #include "cpu.h"
 #endif
 
-
 struct psensor *psensor_create(char *id,
                               char *name,
                               char *chip,
@@ -44,7 +43,6 @@ struct psensor *psensor_create(char *id,
        psensor->id = id;
        psensor->name = name;
        psensor->chip = chip;
-       psensor->enabled = 1;
        psensor->min = UNKNOWN_DBL_VALUE;
        psensor->max = UNKNOWN_DBL_VALUE;
 
@@ -65,6 +63,7 @@ struct psensor *psensor_create(char *id,
 
        psensor->color = NULL;
 
+       psensor->graph_enabled = 1;
        psensor->appindicator_enabled = 0;
 
        return psensor;
@@ -160,7 +159,7 @@ int psensor_list_contains_type(struct psensor **sensors, unsigned int type)
 
        s = sensors;
        while (*s) {
-               if ((*s)->type == type)
+               if ((*s)->type & type)
                        return 1;
                s++;
        }
@@ -233,7 +232,7 @@ psensor_value_to_str(unsigned int type, double value, int use_celcius)
 
        unit = psensor_type_to_unit_str(type, use_celcius);
 
-       if (!use_celcius)
+       if (is_temp_type(type) && !use_celcius)
                value = celcius_to_fahrenheit(value);
 
        sprintf(str, "%.0f%s", value, unit);
@@ -259,9 +258,7 @@ void psensor_set_current_value(struct psensor *sensor, double value)
        psensor_set_current_measure(sensor, value, tv);
 }
 
-void
-psensor_set_current_measure(struct psensor *s,
-                           double v, struct timeval tv)
+void psensor_set_current_measure(struct psensor *s, double v, struct timeval tv)
 {
        memmove(s->measures,
                &s->measures[1],
@@ -288,7 +285,7 @@ psensor_set_current_measure(struct psensor *s,
        }
 }
 
-double psensor_get_current_value(struct psensor *sensor)
+double psensor_get_current_value(const struct psensor *sensor)
 {
        return sensor->measures[sensor->values_max_length - 1].value;
 }
@@ -302,7 +299,7 @@ struct measure *psensor_get_current_measure(struct psensor *sensor)
   Returns the minimal value of a given 'type' (SENSOR_TYPE_TEMP or
   SENSOR_TYPE_FAN)
  */
-double get_min_value(struct psensor **sensors, int type)
+static double get_min_value(struct psensor **sensors, int type)
 {
        double m = UNKNOWN_DBL_VALUE;
        struct psensor **s = sensors;
@@ -310,7 +307,7 @@ double get_min_value(struct psensor **sensors, int type)
        while (*s) {
                struct psensor *sensor = *s;
 
-               if (sensor->enabled && (sensor->type & type)) {
+               if (sensor->graph_enabled && (sensor->type & type)) {
                        int i;
                        double t;
 
@@ -342,7 +339,7 @@ double get_max_value(struct psensor **sensors, int type)
        while (*s) {
                struct psensor *sensor = *s;
 
-               if (sensor->enabled && (sensor->type & type)) {
+               if (sensor->graph_enabled && (sensor->type & type)) {
                        int i;
                        double t;
                        for (i = 0; i < sensor->values_max_length; i++) {
@@ -370,7 +367,7 @@ psensor_get_max_current_value(struct psensor **sensors, unsigned int type)
        while (*s_cur) {
                struct psensor *s = *s_cur;
 
-               if (s->enabled && (s->type & type)) {
+               if (s->graph_enabled && (s->type & type)) {
                        double v = psensor_get_current_value(s);
 
                        if (m == UNKNOWN_DBL_VALUE || v > m)
@@ -527,3 +524,25 @@ void psensor_cleanup()
 {
        lmsensor_cleanup();
 }
+
+struct psensor **psensor_list_copy(struct psensor **sensors)
+{
+       struct psensor **result;
+       int n, i;
+
+       n = psensor_list_size(sensors);
+       result = malloc((n+1) * sizeof(struct psensor *));
+       for (i = 0; i < n; i++)
+               result[i] = sensors[i];
+       result[n] = NULL;
+
+       return result;
+}
+
+char *
+psensor_current_value_to_str(const struct psensor *s, unsigned int celcius)
+{
+       return psensor_value_to_str(s->type,
+                                   psensor_get_current_value(s),
+                                   celcius);
+}