base-files: add new application led trigger backend
authorFlorian Eckert <fe@dev.tdt.de>
Wed, 5 Feb 2020 08:23:27 +0000 (09:23 +0100)
committerPaul Spooren <mail@aparcar.org>
Fri, 5 Mar 2021 10:10:06 +0000 (00:10 -1000)
For now we have only kernel LED trigger support. With this change it is now
possible to use application triggers.

If we configure a LED with a non kernel trigger, then we check on every
restart and boot of the LED service if we have this trigger as an application
in "/usr/libexec/led-trigger". If this file with the name is found, then we
execute this to init the LED.

Possible use cases are:

- Start/Stop/Restart an application led trigger service for this led
- Init a LED that is configured by a hotplug script (VPN tunnel established)

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
package/base-files/files/etc/init.d/led

index 277fb4e76f7eb9bf812ad4f0831edb8ff4f1189c..51cb8b51784a675405e77da1fbbfb14adf69606d 100755 (executable)
@@ -31,10 +31,11 @@ load_led() {
        config_get gpio $1 gpio "0"
        config_get inverted $1 inverted "0"
 
-       if [ "$trigger" = "rssi" ]; then
-               # handled by rssileds userspace process
-               return
-       fi
+       # execute application led trigger
+       [ -f "/usr/libexec/led-trigger/${trigger}" ] && {
+               . "/usr/libexec/led-trigger/${trigger}"
+               return 0
+       }
 
        [ "$trigger" = "usbdev" ] && {
                # Backward compatibility: translate to the new trigger