A C++ library for the Linux kernel's LED device class.
You might have used the LEDs on a single-board computer running Linux, such as a Raspberry Pi or other embedded system. If you did, you probably used either direct GPIO, or the kernel's built-in Linux subsystem for LEDs, with something like:
echo 0 > /sys/class/leds/tpacpi\:\:power/brightness
This is a quick little C++ library for that built-in kernel interface, so you don't have to mess with writing strings to magical files. Instead, you can do things like:
vector<LED> led_list = LED::getSystemLEDs();
or
myled.set_state(true);
myled.set_brightness(0.5);
Under the hood, this is using libudevpp, a C++ wrapper for libudev, which is itself a C library for manipulating entires in /sys.
This uses CMake as the build system, so you'll need it installed, as well as libudev. libudevpp will get downloaded automatically. These dependancies might require you to do something like:
sudo apt install libudev-dev cmake build-essential
You can try this out by cloning, building, and running the example program:
git clone https://github.com/zeroping/sysfsled.git
cd sysfsled
mkdir build
cd build
cmake ../
make
Then, to list available LEDs:
./example/led_flash
And to flash an LED on my laptop:
sudo ./example/led_flash /sys/devices/platform/thinkpad_acpi/leds/tpacpi::power
This library still needs all sorts of things to fully support what the kernel subsystem can do. The glaring omission is that this library can't set up triggers.