diff options
author | Fabian Raetz <fabian.raetz@gmail.com> | 2014-06-30 10:03:00 +0000 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2014-06-30 12:09:19 +0200 |
commit | d1bb06985fb30a9dfd4c2eb423ac19540445b9e4 (patch) | |
tree | 40ac3eb4ca5c0d070d28e27a95bd596f640f1141 /src/openbsd | |
parent | b1aeed994884602b3601a7f4b98419c65be9009c (diff) | |
download | upower-d1bb06985fb30a9dfd4c2eb423ac19540445b9e4.tar.gz |
openbsd: Expose "capacity" and "energy-full-design" properties
https://bugs.freedesktop.org/show_bug.cgi?id=80707
Diffstat (limited to 'src/openbsd')
-rw-r--r-- | src/openbsd/up-backend.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/openbsd/up-backend.c b/src/openbsd/up-backend.c index d00730b..d40a269 100644 --- a/src/openbsd/up-backend.c +++ b/src/openbsd/up-backend.c @@ -321,8 +321,8 @@ up_backend_update_acpibat_state(UpDevice* device, struct sensordev s) { enum sensor_type type; int numt; - gdouble bst_volt, bst_rate, bif_lastfullcap, bst_cap, bif_lowcap; - /* gdouble bif_dvolt, bif_dcap, capacity; */ + gdouble bst_volt, bst_rate, bif_cap, bif_lastfullcap, bst_cap, bif_lowcap, capacity; + /* gdouble bif_dvolt; */ struct sensor sens; size_t slen = sizeof(sens); int mib[] = {CTL_HW, HW_SENSORS, 0, 0, 0}; @@ -337,6 +337,9 @@ up_backend_update_acpibat_state(UpDevice* device, struct sensordev s) else if (slen > 0 && (sens.flags & SENSOR_FINVALID) == 0) { if (sens.type == SENSOR_VOLTS_DC && !strcmp(sens.desc, "current voltage")) bst_volt = sens.value / 1000000.0f; + if ((sens.type == SENSOR_AMPHOUR || sens.type == SENSOR_WATTHOUR) && !strcmp(sens.desc, "design capacity")) { + bif_cap = (sens.type == SENSOR_AMPHOUR ? bst_volt : 1) * sens.value / 1000000.0f; + } if ((sens.type == SENSOR_AMPHOUR || sens.type == SENSOR_WATTHOUR) && !strcmp(sens.desc, "last full capacity")) { bif_lastfullcap = (sens.type == SENSOR_AMPHOUR ? bst_volt : 1) * sens.value / 1000000.0f; } @@ -351,19 +354,30 @@ up_backend_update_acpibat_state(UpDevice* device, struct sensordev s) } /* bif_dvolt = "voltage" = unused ? - capacity = lastfull/dcap * 100 ? amphour1 = warning capacity ? raw0 = battery state */ } } } + + capacity = 0.0f; + if(bif_lastfullcap > 0 && bif_cap > 0) { + capacity = (bif_lastfullcap / bif_cap) * 100.0f; + if (capacity < 0) + capacity = 0.0f; + if (capacity > 100.0) + capacity = 100.0f; + } + g_object_set (device, "energy", bst_cap, "energy-full", bif_lastfullcap, + "energy-full-design", bif_cap, "energy-rate", bst_rate, "energy-empty", bif_lowcap, "voltage", bst_volt, + "capacity", capacity, (void*) NULL); } |