refactoring
[psensor.git] / src / lib / psensor.c
index 299af15..bf7765b 100644 (file)
@@ -31,7 +31,6 @@
 #include "cpu.h"
 #endif
 
-
 struct psensor *psensor_create(char *id,
                               char *name,
                               char *chip,
@@ -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);
@@ -288,7 +287,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;
 }
@@ -527,3 +526,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);
+}