mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-12 10:22:12 +02:00
Battery: support FreeBSD
Completely untested
This commit is contained in:
@@ -12,6 +12,7 @@ Features:
|
||||
* Add `--list-config-paths` option which list search paths of config files
|
||||
* Add `--list-data-paths` option which list search paths for presets and logos
|
||||
* Add `Brightness` module support
|
||||
* Add `Battery` module support for FreeBSD
|
||||
|
||||
Logos:
|
||||
* Raspbian (@IamNoRobot, #373)
|
||||
|
||||
+2
-1
@@ -382,7 +382,7 @@ elseif(BSD)
|
||||
src/common/networking_linux.c
|
||||
src/common/processing_linux.c
|
||||
src/common/sysctl.c
|
||||
src/detection/battery/battery_nosupport.c
|
||||
src/detection/battery/battery_bsd.c
|
||||
src/detection/bios/bios_bsd.c
|
||||
src/detection/board/board_nosupport.c
|
||||
src/detection/brightness/brightness_nosupport.c
|
||||
@@ -424,6 +424,7 @@ elseif(APPLE)
|
||||
src/common/processing_linux.c
|
||||
src/common/sysctl.c
|
||||
src/detection/battery/battery_apple.c
|
||||
src/detection/battery/battery_bsd.c
|
||||
src/detection/bios/bios_apple.c
|
||||
src/detection/board/board_nosupport.c
|
||||
src/detection/brightness/brightness_apple.c
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
#include "fastfetch.h"
|
||||
#include "battery.h"
|
||||
|
||||
#include <dev/acpica/acpiio.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
const char* ffDetectBatteryImpl(FF_UNUSED_PARAM FFinstance* instance, FFlist* results)
|
||||
{
|
||||
int acpifd = open("/dev/acpi", O_RDONLY);
|
||||
if(acpifd < 0)
|
||||
return "open(\"/dev/acpi\", O_RDONLY) failed";
|
||||
|
||||
int units = ioctl(acpifd, ACPIIO_BATT_GET_UNITS, 0);
|
||||
if(units < 0)
|
||||
{
|
||||
close(acpifd);
|
||||
return "No acpiio battery units found";
|
||||
}
|
||||
|
||||
for(int i = 0; i < units; ++i)
|
||||
{
|
||||
union acpi_battery_ioctl_arg battio;
|
||||
battio.unit = 0;
|
||||
|
||||
if(ioctl(acpifd, ACPIIO_BATT_GET_BATTINFO, &battio) < 0 || (battio.battinfo.state & ACPI_BATT_STAT_NOT_PRESENT))
|
||||
continue;
|
||||
|
||||
BatteryResult* battery = ffListAdd(results);
|
||||
battery->temperature = FF_BATTERY_TEMP_UNSET;
|
||||
ffStrbufInit(&battery->manufacturer);
|
||||
ffStrbufInit(&battery->modelName);
|
||||
ffStrbufInit(&battery->status);
|
||||
ffStrbufInit(&battery->technology);
|
||||
|
||||
battery->capacity = battio.battinfo.cap;
|
||||
if(battio.battinfo.state & ACPI_BATT_STAT_INVALID)
|
||||
{
|
||||
ffStrbufAppendS(&battery->status, "Invalid");
|
||||
}
|
||||
else
|
||||
{
|
||||
if(battio.battinfo.state & ACPI_BATT_STAT_DISCHARG)
|
||||
ffStrbufAppendS(&battery->status, "Discharging, ");
|
||||
else if(battio.battinfo.state & ACPI_BATT_STAT_CHARGING)
|
||||
ffStrbufAppendS(&battery->status, "Charging, ");
|
||||
if(battio.battinfo.state & ACPI_BATT_STAT_CRITICAL)
|
||||
ffStrbufAppendS(&battery->status, "Ctritical");
|
||||
ffStrbufTrimRight(&battery->status, ' ');
|
||||
ffStrbufTrimRight(&battery->status, ',');
|
||||
}
|
||||
}
|
||||
close(acpifd);
|
||||
return NULL;
|
||||
}
|
||||
Reference in New Issue
Block a user