sensors: use your brain

This commit is contained in:
Alastair Poole 2020-12-22 17:53:17 +00:00
parent 16cdd0e12a
commit 1313354239
3 changed files with 18 additions and 28 deletions

View File

@ -143,12 +143,7 @@ sensor_t **
system_sensors_thermal_get(int *count); system_sensors_thermal_get(int *count);
int int
system_sensor_thermal_by_id(char *id, double *value); system_sensor_thermal_get(sensor_t *snsr);
#if defined(__OpenBSD__)
int
system_sensor_thermal_by_mib(int mib[], double *value);
#endif
void void
system_sensors_thermal_free(sensor_t **sensors, int count); system_sensors_thermal_free(sensor_t **sensors, int count);

View File

@ -35,37 +35,31 @@ system_sensors_thermal_free(sensor_t **sensors, int count)
} }
int int
system_sensor_thermal_by_id(char *id, double *value) system_sensor_thermal_get(sensor_t *sensor)
{ {
#if defined(__linux__) #if defined(__linux__)
char *d = file_contents(id); char *d = file_contents(sensor->path);
if (d) if (d)
{ {
*value = atof(d); double val = atof(d);
if (*value) *value /= 1000; if (val);
sensor->value = val /= 1000;
free(d); free(d);
return 1; return 1;
} }
return 0; return 0;
#endif #elif defined(__OpenBSD__)
return 0;
}
#if defined(__OpenBSD__)
int
system_sensor_thermal_by_mib(int mibs[], double *value)
{
struct sensor snsr; struct sensor snsr;
size_t slen = sizeof(struct sensor); size_t slen = sizeof(struct sensor);
if (sysctl(mibs, 5, &snsr, &slen, NULL, 0) == -1) return 0; if (sysctl(sensor->mibs, 5, &snsr, &slen, NULL, 0) == -1) return 0;
*value = (snsr.value - 273150000) / 1000000.0; sensor->value = (snsr.value - 273150000) / 1000000.0;
return 1; return 1;
}
#endif #endif
return 0;
}
sensor_t ** sensor_t **
system_sensors_thermal_get(int *sensor_count) system_sensors_thermal_get(int *sensor_count)

View File

@ -85,12 +85,13 @@ _sensors_update(void *data, Ecore_Thread *thread)
{ {
if (pd->selected_it) if (pd->selected_it)
{ {
#if defined(__OpenBSD__) if (!system_sensor_thermal_get(pd->sensor))
if (system_sensor_thermal_by_mib(pd->sensor->mibs, &msg->thermal_temp)) msg->thermal_valid = 0;
#else else
if (system_sensor_thermal_by_id(pd->sensor->path, &msg->thermal_temp)) {
#endif msg->thermal_valid = 1;
msg->thermal_valid = 1; msg->thermal_temp = pd->sensor->value;
}
} }
system_power_state_get(&msg->power); system_power_state_get(&msg->power);