diff options
author | Landry Breuil <landry@rhaalovely.net> | 2011-03-07 21:34:32 +0100 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2011-03-21 18:40:16 +0000 |
commit | 53ba669490af094b9ce9a1ab5d861f7e3f399fb9 (patch) | |
tree | 9bfe7ac0b8aff5f45771fd34038c03910bb63e73 /src/openbsd | |
parent | 6dd2e35d6fef2f7808a163c30e0855995b7e4ac7 (diff) | |
download | upower-53ba669490af094b9ce9a1ab5d861f7e3f399fb9.tar.gz |
openbsd: wip on acpibat_state, need to sort wh/ah units
Signed-off-by: Richard Hughes <richard@hughsie.com>
Diffstat (limited to 'src/openbsd')
-rw-r--r-- | src/openbsd/up-backend.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/openbsd/up-backend.c b/src/openbsd/up-backend.c index c2411e9..4605674 100644 --- a/src/openbsd/up-backend.c +++ b/src/openbsd/up-backend.c @@ -4,6 +4,7 @@ #include "up-daemon.h" #include "up-marshal.h" #include "up-device.h" +#include <string.h> /* strcmp() */ #define UP_BACKEND_SUSPEND_COMMAND "/usr/sbin/zzz" @@ -303,6 +304,7 @@ up_backend_update_acpibat_state(UpDevice* device, struct sensordev s) { enum sensor_type type; int numt; + gdouble bst_volt, bif_dvolt, bst_rate, bif_lastfullcap, bst_cap, bif_dcap, bif_lowcap, capacity; struct sensor sens; size_t slen = sizeof(sens); int mib[] = {CTL_HW, HW_SENSORS, 0, 0, 0}; @@ -315,10 +317,32 @@ up_backend_update_acpibat_state(UpDevice* device, struct sensordev s) if (sysctl(mib, 5, &sens, &slen, NULL, 0) < 0) g_error("failed to get sensor type %d(%s) numt %d on %s", type, sensor_type_s[type], numt, s.xname); else if (slen > 0 && (sens.flags & SENSOR_FINVALID) == 0) { - /* XX do something with sens.desc/sens.type/sens.value */ + if (sens.type == SENSOR_VOLTS_DC && !strcmp(sens.desc, "current voltage")) + bst_volt = sens.value / 1000000.0f; + if (sens.type == SENSOR_AMPHOUR && !strcmp(sens.desc, "last full capacity")) + bif_lastfullcap = sens.value / 1000000.0f; + if (sens.type == SENSOR_AMPHOUR && !strcmp(sens.desc, "low capacity")) + bif_lowcap = sens.value / 1000000.0f; + if (sens.type == SENSOR_AMPHOUR && !strcmp(sens.desc, "remaining capacity")) + bst_cap = sens.value / 1000000.0f; + if (sens.type == SENSOR_INTEGER && !strcmp(sens.desc, "rate")) + bst_rate = sens.value / 1.0f; + /* + bif_dvolt = "voltage" = unused ? + capacity = lastfull/dcap * 100 ? + amphour1 = warning capacity ? + raw0 = battery state + */ } } } + g_object_set (device, + "energy", bst_cap * bst_volt, + "energy-full", bif_lastfullcap * bst_volt, + "energy-rate", bst_rate * bst_volt, + "energy-empty", bif_lowcap * bst_volt, + "voltage", bst_volt, + (void*) NULL); } /* callback updating the device */ |