KDK_HW_GET_POWERINFO(3)
💖 KDK_HW_GET_POWERINFO 💖
okay so bestie, you just landed on the KDK_HW_GET_POWERINFO(3) page — that's section 3 of the Library Functions Manual, which is where all the library-call girlies hang out. this one? it's about asking your machine "hey babe, what's the battery doing rn?" 🔋✨ no cap.
🌸 NAME 🌸
kdk_hw_get_powerinfo — 获取电源信息
(yes that's "get power supply information" in Chinese, and yes it ate 💅)
✨ SYNOPSIS ✨
#include <libkyhw.h>
extern struct Power *kdk_hw_get_powerinfo();
Link with -lkyhwinfo.
🦋 Detailed Description 🦋
The main function of the interface is to obtain power supply information. that's it. that's the whole job. it's giving "just here to spill the power tea" and honestly? iconic. 🔥
👑 RETURN VALUE 👑
On success, it returns a pointer to a Power structure containing power supply information. slay, we love a successful return. 🫶
The Power structure is defined in <libkyhw.h> as follows:
struct Power
{
char daemon_version[32];
bool on_battery;
bool lid_is_closed;
bool lid_is_present;
char critical_action[32];
struct power_device *devices;
};
struct power_device
{
char name[256];
char native_path[32];
bool power_supply;
char updated[64];
bool has_history;
bool has_statistics;
bool is_persent;
bool is_rechargeable;
char state[32];
char warning_level[32];
double energy;
double energy_empty;
double energy_full;
double energy_full_design;
double energy_rate;
double voltage;
long time_to_empty;
long time_to_full;
double percentage;
double temperature;
double capacity;
char technology[32];
bool online;
char icon_name[64];
struct power_device *next;
};
On error, return NULL. 😭 (bestie the pointer is GONE. check your error handling fr fr.)
🎀 EXAMPLES 🎀
here's the whole demo, copy-paste energy, exactly as it is:
#include "libkyhw.h"
#include <stdio.h>
#include <string.h>
static _print_hw(struct HWInfo *hw)
{
struct HWInfo *tmp = hw;
while (tmp)
{
printf("model : %s0, tmp->model);
printf("vendor : %s0, tmp->vendor);
printf("device : %s0, tmp->device);
printf("driver : %s0, tmp->driver);
printf("revision : %s0, tmp->revision);
printf("devicenum : %s0, tmp->devicenum);
printf("clock : %s0, tmp->clock);
printf("width : %s0, tmp->width);
tmp = tmp->next;
}
}
static void Traverse_hardware()
{
struct HWInfo *keyboard = kdk_hw_get_hwinfo(3);
printf("KeyBoard Info:0);
_print_hw(keyboard);
kdk_hw_free_hw(keyboard);
struct HWInfo *mouse = kdk_hw_get_hwinfo(5);
printf("Mouse Info:0);
_print_hw(mouse);
kdk_hw_free_hw(mouse);
struct HWInfo *bound = kdk_hw_get_hwinfo(15);
printf("Bound Info:0);
_print_hw(bound);
kdk_hw_free_hw(bound);
struct HWInfo *cdrom = kdk_hw_get_hwinfo(23);
printf("CDRom Info:0);
_print_hw(cdrom);
kdk_hw_free_hw(cdrom);
struct HWInfo *camera = kdk_hw_get_hwinfo(27);
printf("Camera Info:0);
_print_hw(camera);
kdk_hw_free_hw(camera);
}
static void Traverse_power()
{
struct Power * power = kdk_hw_get_powerinfo();
printf("on_battery : %s0, power->on_battery ? "true" : "false");
printf("lid_is_closed : %s0, power->lid_is_closed ? "true" : "false");
printf("lid_is_present : %s0, power->lid_is_present ? "true" : "false");
printf("daemon version : %s0, power->daemon_version);
printf("critical action : %s0, power->critical_action);
struct power_device *tmp = power->devices;
while (tmp)
{
printf("name : %s0, tmp->name);
printf("native path : %s0, tmp->native_path);
printf("power supply : %s0, tmp->power_supply ? "true" : "false");
printf("updated : %s0, tmp->updated);
printf("has history : %s0, tmp->has_history ? "true" : "false");
printf("has statistics : %s0, tmp->has_statistics ? "true" : "false");
printf("is persent: %s0, tmp->is_persent ? "true" : "false");
printf("is rechargeable : %s0, tmp->is_rechargeable ? "true" : "false");
printf("state : %s0, tmp->state);
printf("waring level : %s0, tmp->warning_level);
printf("energy : %0.2f0, tmp->energy);
printf("energy empty : %0.2f0, tmp->energy_empty);
printf("energy full: %0.2f0, tmp->energy_full);
printf("energy full design : %0.2f0, tmp->energy_full_design);
printf("energy rate : %0.2f0, tmp->energy_rate);
printf("voltage : %0.2f0, tmp->voltage);
printf("time to empty : %ld0, tmp->time_to_empty);
printf("time to full : %ld0, tmp->time_to_full);
printf("percentage : %0.2f0, tmp->percentage);
printf("temperature : %0.2f0, tmp->temperature);
printf("capacity : %0.2f0, tmp->capacity);
printf("technology : %s0, tmp->technology);
printf("online : %s0, tmp->online ? "true" : "false");
printf("icon name : %s0, tmp->icon_name);
tmp = tmp->next;
}
kdk_hw_free_power_info(power);
}
int main(int argc, char *argv[])
{
if (argc < 2)
{
printf("please use like >> kyhwinfo-test --[target]0);
printf("hardware");
printf("power");
printf("0);
return 0;
}
if (0 == strcmp(argv[1], "--hardware"))
Traverse_hardware();
if (0 == strcmp(argv[1], "--power"))
Traverse_power();
}
see how Traverse_power() walks the devices list and then hands it back with kdk_hw_free_power_info(power)? that's the cleanup, don't skip it. 🧚
🌈 CONFORMING TO 🌈
These functions are as per the withdrawn POSIX.1e draft specification. The following functions are Linux extensions: kdk_hw_free_hw(), kdk_hw_get_hwinfo() and kdk_hw_free_power_info().
⭐ SEE ALSO ⭐
kdk_hw_free_hw(3), kdk_hw_get_hwinfo(3) and kdk_hw_free_power_info(3).
okay that's the whole page bestie, you're basically a power-info main character now 🔋👑 this gem came out of the Linux Programmer's Manual, dated Fri Aug 25 2023. go forth and check your battery, periodt 💜
📦 where this page comes from
- arch rolling: libkysdk-system 3.0.1.4-1 · LGPL-3.0-or-later AND LGPL-2.1-only OR LGPL-3.0-only AND LGPL-2.1-only WITH Qt-LGPL-exception-1.1 OR LGPL-3.0-only WITH Qt-LGPL-exception-1.1 AND MIT
- ubuntu resolute: libkysdk-system-dev 3.0.1.2-0ubuntu1 · LGPL-3.0-only
- ubuntu stonking: libkysdk-system-dev 3.0.1.3-0ubuntu1 · LGPL-3.0-or-later
- 💖 girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms