]> git.ipfire.org Git - network.git/blob - src/functions/functions.leds
Makefile: Fix typo in localstatedir
[network.git] / src / functions / functions.leds
1 #!/bin/bash
2 ###############################################################################
3 # #
4 # IPFire.org - A linux based firewall #
5 # Copyright (C) 2018 IPFire Network Development Team #
6 # #
7 # This program is free software: you can redistribute it and/or modify #
8 # it under the terms of the GNU General Public License as published by #
9 # the Free Software Foundation, either version 3 of the License, or #
10 # (at your option) any later version. #
11 # #
12 # This program is distributed in the hope that it will be useful, #
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of #
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
15 # GNU General Public License for more details. #
16 # #
17 # You should have received a copy of the GNU General Public License #
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. #
19 # #
20 ###############################################################################
21
22 led_exists() {
23 local led="${1}"
24 assert isset led
25
26 file_exists "/sys/class/leds/${led}"
27 }
28
29 led_get_supported_triggers() {
30 local led="${1}"
31
32 if ! led_exists "${led}"; then
33 error "LED ${led} does not exist"
34 return ${EXIT_ERROR}
35 fi
36
37 local triggers="$(fread "/sys/class/leds/${led}/trigger")"
38
39 # Filter markers for active trigger
40 print "${triggers//[\[\]]/}"
41 }
42
43 led_set_trigger() {
44 local led="${1}"
45 local trigger="${2}"
46
47 assert isset led
48 assert isset trigger
49
50 local supported_triggers="$(led_get_supported_triggers "${led}")"
51 if ! list_match "${trigger}" ${supported_triggers}; then
52 log DEBUG "Trigger ${trigger} is not supported by LED ${led}"
53 return ${EXIT_ERROR}
54 fi
55
56 log DEBUG "Setting LED trigger ${trigger} for ${led}"
57 fwrite "/sys/class/leds/${led}/trigger" "${trigger}"
58 }