add freebsd support for battery power

This commit is contained in:
jkre 2023-12-15 01:14:47 +01:00
parent cd6c1b7294
commit a81b514d6d

View file

@ -200,7 +200,7 @@ namespace Cpu {
string cpuName;
string cpuHz;
bool has_battery = true;
tuple<int, long, string> current_bat;
tuple<int, float, long, string> current_bat;
const array<string, 10> time_names = {"user", "nice", "system", "idle"};
@ -366,10 +366,11 @@ namespace Cpu {
return core_map;
}
auto get_battery() -> tuple<int, long, string> {
if (not has_battery) return {0, 0, ""};
auto get_battery() -> tuple<int, float, long, string> {
if (not has_battery) return {0, 0, 0, ""};
long seconds = -1;
float watts = -1;
uint32_t percent = -1;
size_t size = sizeof(percent);
string status = "discharging";
@ -381,6 +382,10 @@ namespace Cpu {
if (sysctlbyname("hw.acpi.battery.time", &seconds, &size, nullptr, 0) < 0) {
seconds = 0;
}
size = sizeof(watts);
if (sysctlbyname("hw.acpi.battery.rate", &watts, &size, nullptr, 0) < 0) {
watts = -1;
}
int state;
size = sizeof(state);
if (sysctlbyname("hw.acpi.battery.state", &state, &size, nullptr, 0) < 0) {
@ -395,7 +400,7 @@ namespace Cpu {
}
}
return {percent, seconds, status};
return {percent, watts, seconds, status};
}
auto collect(bool no_update) -> cpu_info & {