#include <hdd.h>
#include <psensor.h>
-#include <lmsensor.h>
#include <temperature.h>
-#ifdef HAVE_GTOP
-#include <cpu.h>
-#include <pmem.h>
-#endif
-
struct psensor *psensor_create(char *id,
char *name,
char *chip,
psensor->graph_enabled = 1;
psensor->appindicator_enabled = 0;
+ psensor->provider_data = NULL;
+ psensor->provider_data_free_fct = &free;
+
return psensor;
}
s->measures = new_ms;
}
-void psensor_free(struct psensor *sensor)
+void psensor_free(struct psensor *s)
{
- if (sensor) {
- log_debug("Cleanup %s", sensor->id);
+ if (!s)
+ return;
- free(sensor->name);
- free(sensor->id);
+ log_debug("Cleanup %s", s->id);
- if (sensor->chip)
- free(sensor->chip);
+ free(s->name);
+ free(s->id);
- if (sensor->color)
- free(sensor->color);
+ if (s->chip)
+ free(s->chip);
- measures_free(sensor->measures);
+ if (s->color)
+ free(s->color);
- free(sensor->url);
+ measures_free(s->measures);
- free(sensor);
- }
+ free(s->url);
+
+ if (s->provider_data && s->provider_data_free_fct)
+ s->provider_data_free_fct(s->provider_data);
+
+ free(s);
}
void psensor_list_free(struct psensor **sensors)
struct psensor **psensors;
struct psensor **tmp_psensors;
- psensors = lmsensor_psensor_list_add(NULL, values_max_length);
+ psensors = NULL;
if (!use_libatasmart) {
tmp_psensors = hddtemp_psensor_list_add(psensors,
}
#ifdef HAVE_ATASMART
else {
- tmp_psensors = hdd_psensor_list_add(psensors,
- values_max_length);
- if (tmp_psensors != psensors) {
- free(psensors);
- psensors = tmp_psensors;
- }
+ atasmart_psensor_list_append(&psensors,
+ values_max_length);
}
#endif
-#ifdef HAVE_GTOP
- mem_psensor_list_add(&psensors, values_max_length);
-#endif
-
if (!psensors) { /* there is no detected sensors */
psensors = malloc(sizeof(struct psensor *));
*psensors = NULL;
void psensor_list_update_measures(struct psensor **sensors)
{
- lmsensor_psensor_list_update(sensors);
-
-#ifdef HAVE_GTOP
- cpu_psensor_list_update(sensors);
- mem_psensor_list_update(sensors);
-#endif
-
if (psensor_list_contains_type(sensors, SENSOR_TYPE_HDDTEMP))
hddtemp_psensor_list_update(sensors);
#ifdef HAVE_ATASMART
if (psensor_list_contains_type(sensors, SENSOR_TYPE_ATASMART))
- hdd_psensor_list_update(sensors);
+ atasmart_psensor_list_update(sensors);
#endif
}
void psensor_init()
{
- lmsensor_init();
}
void psensor_cleanup()
{
- lmsensor_cleanup();
}
struct psensor **psensor_list_copy(struct psensor **sensors)