Updating branch refs/heads/master to 5fdc701440f97cee111a2a47c85f7d838aab7e13 (commit) from cd4eb2055bad8ef84445e8b89ea3d0431190d5ab (commit)
commit 5fdc701440f97cee111a2a47c85f7d838aab7e13 Author: Landry Breuil <lan...@xfce.org> Date: Tue Apr 17 21:46:48 2012 +0200 Implement read_acpi_state()/read_acpi_info() on FreeBSD, from bug #2814 panel-plugin/libacpi.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 51 insertions(+), 0 deletions(-) diff --git a/panel-plugin/libacpi.c b/panel-plugin/libacpi.c index 0e368f4..530194d 100644 --- a/panel-plugin/libacpi.c +++ b/panel-plugin/libacpi.c @@ -30,6 +30,16 @@ #include <dirent.h> #include <glob.h> +#ifdef __FreeBSD__ +#include <fcntl.h> +#include <sys/ioctl.h> +#include <dev/acpica/acpiio.h> +#define ACPIDEV "/dev/acpi" +static int acpifd; +#define UNKNOWN_CAP 0xffffffff +#define UNKNOWN_VOLTAGE 0xffffffff +#endif + #if HAVE_SYSCTL #if defined(__NetBSD__) || defined (__OpenBSD__) @@ -730,6 +740,24 @@ int read_acpi_info(int battery) #endif } acpiinfo->present = retval; + +#ifdef __FreeBSD__ + union acpi_battery_ioctl_arg battio; + acpifd = open(ACPIDEV, O_RDONLY); + + battio.unit = battery; + if (ioctl(acpifd, ACPIIO_BATT_GET_BIF, &battio) == -1) { + return 0; + } + close(acpifd); + + acpiinfo->design_capacity = battio.bif.dcap; + acpiinfo->last_full_capacity = battio.bif.lfcap; + acpiinfo->battery_technology = battio.bif.btech; + acpiinfo->design_voltage = battio.bif.dvol; + acpiinfo->design_capacity_warning = battio.bif.wcap; + acpiinfo->design_capacity_low = battio.bif.lcap; +#endif return 1; #else return 0; @@ -966,6 +994,29 @@ int read_acpi_state(int battery) #endif } acpistate->percentage =retval; + +#ifdef __FreeBSD__ + union acpi_battery_ioctl_arg battio; + acpifd = open(ACPIDEV, O_RDONLY); + + battio.unit = battery; + if (ioctl(acpifd, ACPIIO_BATT_GET_BATTINFO, &battio) == -1) { + return 0; + } + + acpistate->state = battio.battinfo.state; + acpistate->prate = battio.battinfo.rate; + acpistate->rcapacity = acpiinfo->last_full_capacity * battio.battinfo.cap / 100; + acpistate->rtime = battio.battinfo.min; + acpistate->percentage = battio.battinfo.cap; + + battio.unit = battery; + if (ioctl(acpifd, ACPIIO_BATT_GET_BATTINFO, &battio) == -1) { + return 0; + } + close(acpifd); + acpistate->pvoltage = battio.bst.volt; +#endif return 1; #else return 0; _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits