Add FreeBSD support for temperature and battery components
This commit is contained in:
parent
dd7f1896aa
commit
ec306623df
3 changed files with 80 additions and 3 deletions
|
@ -195,4 +195,57 @@
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
#elif defined(__FreeBSD__)
|
||||||
|
#include <sys/sysctl.h>
|
||||||
|
|
||||||
|
const char *
|
||||||
|
battery_perc(const char *unused)
|
||||||
|
{
|
||||||
|
int cap;
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
len = sizeof(cap);
|
||||||
|
if (sysctlbyname("hw.acpi.battery.life", &cap, &len, NULL, 0) == -1
|
||||||
|
|| !len)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return bprintf("%d", cap);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
battery_state(const char *unused)
|
||||||
|
{
|
||||||
|
int state;
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
len = sizeof(state);
|
||||||
|
if (sysctlbyname("hw.acpi.battery.state", &state, &len, NULL, 0) == -1
|
||||||
|
|| !len)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
switch(state) {
|
||||||
|
case 0:
|
||||||
|
case 2:
|
||||||
|
return "+";
|
||||||
|
case 1:
|
||||||
|
return "-";
|
||||||
|
default:
|
||||||
|
return "?";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
battery_remaining(const char *unused)
|
||||||
|
{
|
||||||
|
int rem;
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
len = sizeof(rem);
|
||||||
|
if (sysctlbyname("hw.acpi.battery.time", &rem, &len, NULL, 0) == -1
|
||||||
|
|| !len
|
||||||
|
|| rem == -1)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return bprintf("%uh %02um", rem / 60, rem % 60);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include "../util.h"
|
#include "../util.h"
|
||||||
|
|
||||||
|
|
||||||
#if defined(__linux__)
|
#if defined(__linux__)
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
@ -46,4 +47,25 @@
|
||||||
/* kelvin to celsius */
|
/* kelvin to celsius */
|
||||||
return bprintf("%d", (temp.value - 273150000) / 1E6);
|
return bprintf("%d", (temp.value - 273150000) / 1E6);
|
||||||
}
|
}
|
||||||
|
#elif defined(__FreeBSD__)
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <sys/sysctl.h>
|
||||||
|
|
||||||
|
const char *
|
||||||
|
temp(const char *zone)
|
||||||
|
{
|
||||||
|
char buf[256];
|
||||||
|
int temp;
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
len = sizeof(temp);
|
||||||
|
snprintf(buf, sizeof(buf), "hw.acpi.thermal.%s.temperature", zone);
|
||||||
|
if (sysctlbyname(buf, &temp, &len, NULL, 0) == -1
|
||||||
|
|| !len)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
/* kelvin to decimal celcius */
|
||||||
|
return bprintf("%d.%d", (temp - 2731) / 10, abs((temp - 2731) % 10));
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -13,11 +13,11 @@ static const char unknown_str[] = "n/a";
|
||||||
* function description argument (example)
|
* function description argument (example)
|
||||||
*
|
*
|
||||||
* battery_perc battery percentage battery name (BAT0)
|
* battery_perc battery percentage battery name (BAT0)
|
||||||
* NULL on OpenBSD
|
* NULL on OpenBSD/FreeBSD
|
||||||
* battery_state battery charging state battery name (BAT0)
|
* battery_state battery charging state battery name (BAT0)
|
||||||
* NULL on OpenBSD
|
* NULL on OpenBSD/FreeBSD
|
||||||
* battery_remaining battery remaining HH:MM battery name (BAT0)
|
* battery_remaining battery remaining HH:MM battery name (BAT0)
|
||||||
* NULL on OpenBSD
|
* NULL on OpenBSD/FreeBSD
|
||||||
* cpu_perc cpu usage in percent NULL
|
* cpu_perc cpu usage in percent NULL
|
||||||
* cpu_freq cpu frequency in MHz NULL
|
* cpu_freq cpu frequency in MHz NULL
|
||||||
* datetime date and time format string (%F %T)
|
* datetime date and time format string (%F %T)
|
||||||
|
@ -52,6 +52,8 @@ static const char unknown_str[] = "n/a";
|
||||||
* temp temperature in degree celsius sensor file
|
* temp temperature in degree celsius sensor file
|
||||||
* (/sys/class/thermal/...)
|
* (/sys/class/thermal/...)
|
||||||
* NULL on OpenBSD
|
* NULL on OpenBSD
|
||||||
|
* thermal zone on FreeBSD
|
||||||
|
* (tz0, tz1, etc.)
|
||||||
* uid UID of current user NULL
|
* uid UID of current user NULL
|
||||||
* uptime system uptime NULL
|
* uptime system uptime NULL
|
||||||
* username username of current user NULL
|
* username username of current user NULL
|
||||||
|
|
Loading…
Reference in a new issue