51 lines
2.2 KiB
Bash
51 lines
2.2 KiB
Bash
#!/bin/bash
|
|
|
|
BOOT_SERVICE_NAME="xyz.openbmc_project.State.Host"
|
|
BOOT_STATUS_OBJPATH="/xyz/openbmc_project/state/os"
|
|
BOOT_INTERFACE_NAME="xyz.openbmc_project.State.OperatingSystem.Status"
|
|
BOOT_Property="OperatingSystemState"
|
|
|
|
LED_SERVICE_NAME="xyz.openbmc_project.LED.GroupManager"
|
|
LED_INACTIVE_OBJPATH="/xyz/openbmc_project/led/groups/boot_status_inactive"
|
|
LED_STANDBY_OBJPATH="/xyz/openbmc_project/led/groups/boot_status_standby"
|
|
LED_INTERFACE_NAME="xyz.openbmc_project.Led.Group"
|
|
LED_Property="Asserted"
|
|
|
|
PWR_STATE_SERVICE="xyz.openbmc_project.State.Chassis"
|
|
PWR_STATE_OBJPATH="/xyz/openbmc_project/state/chassis0"
|
|
PWR_STATE_INTERFACE_NAME="xyz.openbmc_project.State.Chassis"
|
|
PWR_STATE_Property="CurrentPowerState"
|
|
|
|
boot_status=""
|
|
power_state=""
|
|
led_status=""
|
|
|
|
mapper wait $LED_INACTIVE_OBJPATH
|
|
mapper wait $LED_STANDBY_OBJPATH
|
|
while true; do
|
|
power_state="$(busctl get-property $PWR_STATE_SERVICE $PWR_STATE_OBJPATH $PWR_STATE_INTERFACE_NAME $PWR_STATE_Property | awk '{print $2}')"
|
|
|
|
boot_status="$(busctl get-property $BOOT_SERVICE_NAME $BOOT_STATUS_OBJPATH $BOOT_INTERFACE_NAME $BOOT_Property | awk '{print $2}')"
|
|
|
|
if [[ $power_state != "\"xyz.openbmc_project.State.Chassis.PowerState.On\"" ]];then
|
|
if [[ $led_status != "OFF" ]];then
|
|
busctl set-property $LED_SERVICE_NAME $LED_INACTIVE_OBJPATH $LED_INTERFACE_NAME $LED_Property b false
|
|
busctl set-property $LED_SERVICE_NAME $LED_STANDBY_OBJPATH $LED_INTERFACE_NAME $LED_Property b false
|
|
led_status="OFF"
|
|
fi
|
|
continue
|
|
else
|
|
if [[ $boot_status != "\"xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.Standby\"" ]] && [[ $led_status != "BLINKING" ]];then
|
|
busctl set-property $LED_SERVICE_NAME $LED_INACTIVE_OBJPATH $LED_INTERFACE_NAME $LED_Property b true
|
|
led_status="BLINKING"
|
|
elif [[ $boot_status == "\"xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.Standby\"" ]] && [[ $led_status != "ON" ]];then
|
|
busctl set-property $LED_SERVICE_NAME $LED_INACTIVE_OBJPATH $LED_INTERFACE_NAME $LED_Property b false
|
|
busctl set-property $LED_SERVICE_NAME $LED_STANDBY_OBJPATH $LED_INTERFACE_NAME $LED_Property b true
|
|
led_status="ON"
|
|
fi
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
exit 0
|