xref: /openbmc/openbmc/meta-facebook/meta-ventura/recipes-phosphor/gpio/phosphor-gpio-monitor/frontled (revision f2e5579708b9efb2b033a08802dfbfdad32fb5e1)
1#!/bin/bash
2
3source=$1
4init=$2
5power_state=$3
6
7get_leakport() {
8   if [[ $1 =~ ^PWRGD_TRAY_LEAK_PORT([0-9]+)_N$ ]]; then
9      echo "leakport${BASH_REMATCH[1]}"
10   fi
11}
12
13leakport=$(get_leakport "$source")
14portnum=${leakport#leakport}
15
16leak_state=$(busctl get-property xyz.openbmc_project.leakdetector "/xyz/openbmc_project/state/leak/detector/LeakPort${portnum}_Big" xyz.openbmc_project.State.Leak.Detector State | awk -F'.' '{print $NF}' | tr -d '"')
17
18if [ "$power_state" == "assert" ]; then
19   # If power is asserted and leak state is Normal, turn on blue LED and turn off amber LED
20   # Else do nothing control by the leak detector leakage service
21   if [ "$leak_state" == "Normal" ] || [ "$init" == "true" ]; then
22      busctl set-property "xyz.openbmc_project.LED.GroupManager" "/xyz/openbmc_project/led/groups/${leakport}_amber" "xyz.openbmc_project.Led.Group" "Asserted" "b" "false"
23      busctl set-property "xyz.openbmc_project.LED.GroupManager" "/xyz/openbmc_project/led/groups/${leakport}_blue" "xyz.openbmc_project.Led.Group" "Asserted" "b" "true"
24   fi
25elif [ "$power_state" == "deassert" ]; then
26   busctl set-property "xyz.openbmc_project.LED.GroupManager" "/xyz/openbmc_project/led/groups/${leakport}_blue" "xyz.openbmc_project.Led.Group" "Asserted" "b" "false"
27fi
28
29exit 0
30