mibs: fix openbsd

This commit is contained in:
Alastair Poole 2020-12-22 14:13:16 +00:00
parent 83a33bd991
commit 16cdd0e12a
3 changed files with 43 additions and 14 deletions

View File

@ -48,6 +48,8 @@ typedef struct
char *child_name; char *child_name;
#if defined(__linux__) #if defined(__linux__)
char *path; char *path;
#elif defined(__OpenBSD__)
int mibs[5];
#endif #endif
double value; double value;
bool invalid; bool invalid;
@ -143,6 +145,11 @@ system_sensors_thermal_get(int *count);
int int
system_sensor_thermal_by_id(char *id, double *value); system_sensor_thermal_by_id(char *id, double *value);
#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

@ -51,6 +51,22 @@ system_sensor_thermal_by_id(char *id, double *value)
return 0; return 0;
} }
#if defined(__OpenBSD__)
int
system_sensor_thermal_by_mib(int mibs[], double *value)
{
struct sensor snsr;
size_t slen = sizeof(struct sensor);
if (sysctl(mibs, 5, &snsr, &slen, NULL, 0) == -1) return 0;
*value = (snsr.value - 273150000) / 1000000.0;
return 1;
}
#endif
sensor_t ** sensor_t **
system_sensors_thermal_get(int *sensor_count) system_sensors_thermal_get(int *sensor_count)
{ {
@ -94,6 +110,7 @@ system_sensors_thermal_get(int *sensor_count)
sensors[(*sensor_count)++] = sensor = calloc(1, sizeof(sensor_t)); sensors[(*sensor_count)++] = sensor = calloc(1, sizeof(sensor_t));
sensor->name = strdup(snsrdev.xname); sensor->name = strdup(snsrdev.xname);
sensor->value = (snsr.value - 273150000) / 1000000.0; // (uK -> C) sensor->value = (snsr.value - 273150000) / 1000000.0; // (uK -> C)
memcpy(sensor->mibs, &mibs, sizeof(mibs));
} }
#elif defined(__FreeBSD__) || defined(__DragonFly__) #elif defined(__FreeBSD__) || defined(__DragonFly__)
sensor_t *sensor; sensor_t *sensor;

View File

@ -85,7 +85,11 @@ _sensors_update(void *data, Ecore_Thread *thread)
{ {
if (pd->selected_it) if (pd->selected_it)
{ {
#if defined(__OpenBSD__)
if (system_sensor_thermal_by_mib(pd->sensor->mibs, &msg->thermal_temp))
#else
if (system_sensor_thermal_by_id(pd->sensor->path, &msg->thermal_temp)) if (system_sensor_thermal_by_id(pd->sensor->path, &msg->thermal_temp))
#endif
msg->thermal_valid = 1; msg->thermal_valid = 1;
} }
system_power_state_get(&msg->power); system_power_state_get(&msg->power);
@ -285,19 +289,22 @@ ui_win_sensors_add(Ui *ui)
evas_object_show(content); evas_object_show(content);
elm_object_content_set(win, content); elm_object_content_set(win, content);
pd->power_fr = fr = elm_frame_add(win);
evas_object_size_hint_weight_set(fr, EXPAND, EXPAND);
evas_object_size_hint_align_set(fr, FILL, FILL);
elm_object_text_set(fr, _("Power"));
evas_object_show(fr);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EXPAND, EXPAND);
evas_object_size_hint_align_set(bx, FILL, FILL);
evas_object_show(bx);
elm_object_content_set(fr, bx);
system_power_state_get(&power); system_power_state_get(&power);
if (power.battery_count)
{
pd->power_fr = fr = elm_frame_add(win);
evas_object_size_hint_weight_set(fr, EXPAND, EXPAND);
evas_object_size_hint_align_set(fr, FILL, FILL);
elm_object_text_set(fr, _("Power"));
evas_object_show(fr);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EXPAND, EXPAND);
evas_object_size_hint_align_set(bx, FILL, FILL);
evas_object_show(bx);
elm_object_content_set(fr, bx);
elm_box_pack_end(content, fr);
}
for (int i = 0; i < power.battery_count; i++) for (int i = 0; i < power.battery_count; i++)
{ {
@ -346,8 +353,6 @@ ui_win_sensors_add(Ui *ui)
system_power_state_free(&power); system_power_state_free(&power);
elm_box_pack_end(content, fr);
fr = elm_frame_add(win); fr = elm_frame_add(win);
evas_object_size_hint_weight_set(fr, EXPAND, EXPAND); evas_object_size_hint_weight_set(fr, EXPAND, EXPAND);
evas_object_size_hint_align_set(fr, FILL, FILL); evas_object_size_hint_align_set(fr, FILL, FILL);