create_sensor(char *id, char *name, SkDisk *disk, int values_max_length)
{
struct psensor *s;
+ int t;
+
+ t = SENSOR_TYPE_ATASMART | SENSOR_TYPE_HDD | SENSOR_TYPE_TEMP;
+
s = psensor_create(id,
strdup(name),
strdup("HDD"),
- SENSOR_TYPE_HDD_TEMP_ATASMART,
+ t,
values_max_length);
s->disk = disk;
cur = sensors;
while (*cur) {
s = *cur;
- if (s->type == SENSOR_TYPE_HDD_TEMP_ATASMART) {
+ if (s->type & SENSOR_TYPE_ATASMART) {
ret = sk_disk_smart_read_data(s->disk);
if (!ret) {
static struct psensor *
create_sensor(char *id, char *name, int values_max_length)
{
+ int t;
+
+ t = SENSOR_TYPE_HDD | SENSOR_TYPE_HDDTEMP | SENSOR_TYPE_TEMP;
+
return psensor_create(id, name, strdup("HDD"),
- SENSOR_TYPE_HDD_TEMP_HDDTEMP,
+ t,
values_max_length);
}
struct psensor **sensor_cur = sensors;
while (*sensor_cur) {
- if ((*sensor_cur)->type == SENSOR_TYPE_HDD_TEMP_HDDTEMP
+ if ((*sensor_cur)->type == SENSOR_TYPE_HDDTEMP
&& !strcmp((*sensor_cur)->id + 4, info->name))
psensor_set_current_value(*sensor_cur,
(float)info->temp);
return ;
while (*s_ptr) {
- struct psensor *sensor = *s_ptr;
-
- if (sensor->type == SENSOR_TYPE_LMSENSOR_TEMP)
- psensor_set_current_value
- (sensor, get_temp_input(sensor));
- else if (sensor->type == SENSOR_TYPE_LMSENSOR_FAN)
- psensor_set_current_value(sensor,
- get_fan_input(sensor));
+ struct psensor *s = *s_ptr;
+
+ if (s->type & SENSOR_TYPE_LMSENSOR) {
+ if (s->type & SENSOR_TYPE_TEMP)
+ psensor_set_current_value(s,
+ get_temp_input(s));
+ else if (s->type & SENSOR_TYPE_RPM)
+ psensor_set_current_value(s, get_fan_input(s));
+ }
s_ptr++;
}
if (feature->type == SENSORS_FEATURE_TEMP) {
fault_subfeature = SENSORS_SUBFEATURE_TEMP_FAULT;
-
} else if (feature->type == SENSORS_FEATURE_FAN) {
fault_subfeature = SENSORS_SUBFEATURE_FAN_FAULT;
-
} else {
log_err(_(
"lmsensor: lmsensor_psensor_create failure: wrong feature type."));
if (!label)
return NULL;
- type = 0;
+ type = SENSOR_TYPE_LMSENSOR;
if (feature->type == SENSORS_FEATURE_TEMP)
- type = SENSOR_TYPE_LMSENSOR_TEMP;
+ type |= SENSOR_TYPE_TEMP;
else if (feature->type == SENSORS_FEATURE_FAN)
- type = SENSOR_TYPE_LMSENSOR_FAN;
+ type |= (SENSOR_TYPE_RPM|SENSOR_TYPE_FAN);
else
return NULL;
char name[200];
char *sid;
struct psensor *s;
+ int t;
sprintf(name, "GPU%d", id);
sid = malloc(strlen("nvidia") + 1 + strlen(name) + 1);
sprintf(sid, "nvidia %s", name);
+ t = SENSOR_TYPE_NVCTRL | SENSOR_TYPE_GPU | SENSOR_TYPE_TEMP;
+
s = psensor_create(sid,
strdup(name),
strdup("Nvidia GPU"),
- SENSOR_TYPE_NVIDIA_TEMP,
+ t,
values_len);
s->nvidia_id = id;
while (*ss) {
s = *ss;
- if (s->type == SENSOR_TYPE_NVIDIA_TEMP)
+ if (s->type & SENSOR_TYPE_NVCTRL)
psensor_set_current_value(s, get_temp(s));
ss++;
const char *psensor_type_to_str(unsigned int type)
{
- if ((type & SENSOR_TYPE_NVIDIA_TEMP) == SENSOR_TYPE_NVIDIA_TEMP)
- return "NVidia GPU Temperature";
-
- if ((type & SENSOR_TYPE_AMD_TEMP) == SENSOR_TYPE_AMD_TEMP)
- return "AMD GPU Temperature";
-
- if ((type & SENSOR_TYPE_AMD_FAN) == SENSOR_TYPE_AMD_FAN)
- return "AMD GPU Fan Speed";
+ if (type & SENSOR_TYPE_NVCTRL)
+ return "NVidia GPU";
+
+ if (type & SENSOR_TYPE_ATIADL) {
+ if (type & SENSOR_TYPE_TEMP)
+ return "AMD GPU Temperature";
+ else if (type & SENSOR_TYPE_RPM)
+ return "AMD GPU Fan Speed";
+ else /* type & SENSOR_TYPE_USAGE */
+ return "AMD GPU Usage";
+ }
if ((type & SENSOR_TYPE_HDD_TEMP) == SENSOR_TYPE_HDD_TEMP)
return "HDD Temperature";
- if (type & SENSOR_TYPE_CPU_USAGE)
+ if ((type & SENSOR_TYPE_CPU_USAGE) == SENSOR_TYPE_CPU_USAGE)
return "CPU Usage";
if (type & SENSOR_TYPE_TEMP)
if (type & SENSOR_TYPE_FAN)
return "Fan";
+ if (type & SENSOR_TYPE_CPU)
+ return "CPU";
+
if (type & SENSOR_TYPE_REMOTE)
return "Remote";
- return "N/A"; /* should not be possible */
+ return "N/A";
}
cpu_psensor_list_update(sensors);
#endif
- if (psensor_list_contains_type(sensors, SENSOR_TYPE_HDD_TEMP_HDDTEMP))
+ 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_HDD_TEMP_ATASMART))
+ if (psensor_list_contains_type(sensors, SENSOR_TYPE_ATASMART))
hdd_psensor_list_update(sensors);
#endif
}
#include "measure.h"
enum psensor_type {
- SENSOR_TYPE_TEMP = 0x0001,
- SENSOR_TYPE_FAN = 0x0002,
- SENSOR_TYPE_REMOTE = 0x0004,
-
- SENSOR_TYPE_LMSENSOR = 0x0100,
- SENSOR_TYPE_NVIDIA_TEMP = (0x0200 | SENSOR_TYPE_TEMP),
- SENSOR_TYPE_HDD_TEMP = (0x0400 | SENSOR_TYPE_TEMP),
- SENSOR_TYPE_CPU_USAGE = 0x0800,
- SENSOR_TYPE_AMD = 0x1000,
-
- SENSOR_TYPE_HDD_TEMP_ATASMART = (0x2000 | SENSOR_TYPE_HDD_TEMP),
- SENSOR_TYPE_HDD_TEMP_HDDTEMP = (0x4000 | SENSOR_TYPE_HDD_TEMP),
-
- SENSOR_TYPE_AMD_TEMP = (SENSOR_TYPE_AMD | SENSOR_TYPE_TEMP),
- SENSOR_TYPE_AMD_FAN = (SENSOR_TYPE_AMD | SENSOR_TYPE_FAN),
-
- SENSOR_TYPE_LMSENSOR_TEMP = (SENSOR_TYPE_LMSENSOR | SENSOR_TYPE_TEMP),
- SENSOR_TYPE_LMSENSOR_FAN = (SENSOR_TYPE_LMSENSOR | SENSOR_TYPE_FAN)
+ /* type of sensor values */
+ SENSOR_TYPE_TEMP = 0x00001,
+ SENSOR_TYPE_RPM = 0x00002,
+ SENSOR_TYPE_USAGE = 0x00004,
+
+ /* Whether the sensor is remote */
+ SENSOR_TYPE_REMOTE = 0x00008,
+
+ /* Libraries used for retrieving sensor information */
+ SENSOR_TYPE_LMSENSOR = 0x00100,
+ SENSOR_TYPE_NVCTRL = 0x00200,
+ SENSOR_TYPE_GTOP = 0x00400,
+ SENSOR_TYPE_ATIADL = 0x00800,
+ SENSOR_TYPE_ATASMART = 0x01000,
+ SENSOR_TYPE_HDDTEMP = 0x02000,
+
+ /* Type of HW component */
+ SENSOR_TYPE_HDD = 0x04000,
+ SENSOR_TYPE_CPU = 0x08000,
+ SENSOR_TYPE_GPU = 0x10000,
+ SENSOR_TYPE_FAN = 0x20000,
+
+ /* Combinations */
+ SENSOR_TYPE_HDD_TEMP = (SENSOR_TYPE_HDD | SENSOR_TYPE_TEMP),
+ SENSOR_TYPE_CPU_USAGE = (SENSOR_TYPE_CPU | SENSOR_TYPE_USAGE)
};
struct psensor {
if (!test_fct(SENSOR_TYPE_TEMP, 0, "\302\260F"))
failures++;
- if (!test_fct(SENSOR_TYPE_LMSENSOR_TEMP, 1, "\302\260C"))
+ if (!test_fct(SENSOR_TYPE_LMSENSOR | SENSOR_TYPE_TEMP, 1, "\302\260C"))
failures++;
- if (!test_fct(SENSOR_TYPE_LMSENSOR_TEMP, 0, "\302\260F"))
+ if (!test_fct(SENSOR_TYPE_LMSENSOR | SENSOR_TYPE_TEMP, 0, "\302\260F"))
failures++;
if (!test_fct(SENSOR_TYPE_FAN, 0, _("RPM")))