summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stapelberg <stapelberg@users.noreply.github.com>2015-10-09 09:11:03 -0700
committerMichael Stapelberg <stapelberg@users.noreply.github.com>2015-10-09 09:11:03 -0700
commitc582090cbc56e3d03ea599181cb425f968c5d47e (patch)
tree7c2522eb3ac8a690a47b8b97fdedcc26b66ce70a
parent974f95702efbf1ae15882777d191c7fde99bfb9b (diff)
parent5e33d9fe748efc8df49c123fe01d486b04c20f57 (diff)
Merge pull request #70 from bsdjhb/freebsd_battery
Properly detect the battery charging status under FreeBSD.
-rw-r--r--src/print_battery_info.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/print_battery_info.c b/src/print_battery_info.c
index f65090a..90db4bb 100644
--- a/src/print_battery_info.c
+++ b/src/print_battery_info.c
@@ -12,6 +12,7 @@
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
#include <sys/types.h>
#include <sys/sysctl.h>
+#include <dev/acpica/acpiio.h>
#endif
#if defined(__OpenBSD__)
@@ -236,7 +237,7 @@ void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char
state = sysctl_rslt;
if (state == 0 && present_rate == 100)
status = CS_FULL;
- else if (state == 0 && present_rate < 100)
+ else if ((state & ACPI_BATT_STAT_CHARGING) && present_rate < 100)
status = CS_CHARGING;
else
status = CS_DISCHARGING;
@@ -248,7 +249,7 @@ void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char
(void)snprintf(percentagebuf, sizeof(percentagebuf), "%02d%s",
present_rate, pct_mark);
- if (state == 1) {
+ if (state == ACPI_BATT_STAT_DISCHARG) {
int hours, minutes;
minutes = remaining;
hours = minutes / 60;