From 16cdd0e12a9d83013702631c904c55dc3e57b012 Mon Sep 17 00:00:00 2001 From: Alastair Poole Date: Tue, 22 Dec 2020 14:13:16 +0000 Subject: [PATCH] mibs: fix openbsd --- src/bin/system/machine.h | 7 ++++++ src/bin/system/machine/sensors.bogox | 17 ++++++++++++++ src/bin/ui/ui_sensors.c | 33 ++++++++++++++++------------ 3 files changed, 43 insertions(+), 14 deletions(-) diff --git a/src/bin/system/machine.h b/src/bin/system/machine.h index be8cdc6..1fb6885 100644 --- a/src/bin/system/machine.h +++ b/src/bin/system/machine.h @@ -48,6 +48,8 @@ typedef struct char *child_name; #if defined(__linux__) char *path; +#elif defined(__OpenBSD__) + int mibs[5]; #endif double value; bool invalid; @@ -143,6 +145,11 @@ system_sensors_thermal_get(int *count); int system_sensor_thermal_by_id(char *id, double *value); +#if defined(__OpenBSD__) +int +system_sensor_thermal_by_mib(int mib[], double *value); +#endif + void system_sensors_thermal_free(sensor_t **sensors, int count); diff --git a/src/bin/system/machine/sensors.bogox b/src/bin/system/machine/sensors.bogox index 4656ec3..f4f25b2 100644 --- a/src/bin/system/machine/sensors.bogox +++ b/src/bin/system/machine/sensors.bogox @@ -51,6 +51,22 @@ system_sensor_thermal_by_id(char *id, double *value) 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 ** 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)); sensor->name = strdup(snsrdev.xname); sensor->value = (snsr.value - 273150000) / 1000000.0; // (uK -> C) + memcpy(sensor->mibs, &mibs, sizeof(mibs)); } #elif defined(__FreeBSD__) || defined(__DragonFly__) sensor_t *sensor; diff --git a/src/bin/ui/ui_sensors.c b/src/bin/ui/ui_sensors.c index 3124364..9f68eb4 100644 --- a/src/bin/ui/ui_sensors.c +++ b/src/bin/ui/ui_sensors.c @@ -85,7 +85,11 @@ _sensors_update(void *data, Ecore_Thread *thread) { 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)) +#endif msg->thermal_valid = 1; } system_power_state_get(&msg->power); @@ -285,19 +289,22 @@ ui_win_sensors_add(Ui *ui) evas_object_show(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); + 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++) { @@ -346,8 +353,6 @@ ui_win_sensors_add(Ui *ui) system_power_state_free(&power); - elm_box_pack_end(content, fr); - fr = elm_frame_add(win); evas_object_size_hint_weight_set(fr, EXPAND, EXPAND); evas_object_size_hint_align_set(fr, FILL, FILL);