blob: 1375b110d4197c7935dd756f9e5394501463a5df [file] [log] [blame]
Vishwanatha Subbannaa4a4f2d2020-10-08 07:14:15 -05001#!/bin/bash
2
3# This shell script sets all the group D-Bus objects
4# in /xyz/openbmc_project/led/groups/ to true or false.
5# If the group is in excluded list, then, they are not
6# altered
7
8function usage()
9{
10 echo "led-set-all-groups-asserted.sh [true/false] [optional groups to be excluded]"
11 echo "Example: led-set-all-groups-asserted.sh true"
12 echo "Example: led-set-all-groups-asserted.sh false bmc_booted power_on"
13 return 0;
14}
15
16# We need at least 1 argument
17if [ $# -lt 1 ]; then
18 echo "At least ONE argument needed";
19 usage;
20 exit -1;
21fi
22
23# User passed in argument [true/false]
24action=$1
25
26# If it is not "true" or "false", exit
27if [ $action != "true" ] && [ $action != "false" ]; then
28 echo "Bad argument $action passed";
29 usage;
30 exit -1;
31fi
32
33# Get the excluded groups, where $@ is all the agruments passed
34index=2;
35excluded_groups=""
36
37for arg in "$@"
38do
39 if [ $arg == $action ]
40 then
41 # Must be true/false
42 continue
43 elif [ $index -eq $# ]
44 then
45 excluded_groups="${excluded_groups}$arg"
46 else
47 excluded_groups="${excluded_groups}$arg|"
48 fi
49 let "index+=1"
50done
51
52# Now, set the LED group to what has been requested
53if [ ${#excluded_groups} -eq 0 ]
54then
55 for line in $(busctl tree xyz.openbmc_project.LED.GroupManager | grep -e groups/ | awk -F 'xyz' '{print "/xyz" $2}');
56 do
57 busctl set-property xyz.openbmc_project.LED.GroupManager $line xyz.openbmc_project.Led.Group Asserted b $action;
58 done
59else
60 for line in $(busctl tree xyz.openbmc_project.LED.GroupManager | grep -e groups/ | grep -Ev $excluded_groups | awk -F 'xyz' '{print "/xyz" $2}');
61 do
62 busctl set-property xyz.openbmc_project.LED.GroupManager $line xyz.openbmc_project.Led.Group Asserted b $action;
63 done
64fi
65
66# Return Success
67exit 0