#!/bin/bash -e HOST_SERVICE="xyz.openbmc_project.State.HostCondition.Gpio" HOST_OBJPATH="/xyz/openbmc_project/Gpios/host0" HOST_INTERFACE="xyz.openbmc_project.Condition.HostFirmware" HOST_PROPERTY="CurrentFirmwareCondition" FAN_SERVICE="xyz.openbmc_project.State.FanCtrl" FAN_OBJPATH="/xyz/openbmc_project/settings/fanctrl/zone1" FAN_INTERFACE="xyz.openbmc_project.Control.Mode" FAN_PROPERTY="FailSafe" PSU_SERVICE="xyz.openbmc_project.Inventory.Manager" PSU0_PRESENT_OBJPATH="/xyz/openbmc_project/inventory/system/chassis/motherboard/PSU0_PRSNT_L" PSU1_PRESENT_OBJPATH="/xyz/openbmc_project/inventory/system/chassis/motherboard/PSU1_PRSNT_L" PSU0_POWER_OBJPATH="/xyz/openbmc_project/inventory/system/chassis/motherboard/PSU0_POWER_OK" PSU1_POWER_OBJPATH="/xyz/openbmc_project/inventory/system/chassis/motherboard/PSU1_POWER_OK" PSU_INTERFACE="xyz.openbmc_project.Inventory.Item" PSU_PROPERTY="Present" CPLD_LED_offset1=0x80 CPLD_LED_offset2=0x81 CPLD_SYS_FAN_reg=0 CPLD_PSU0_PSU1_reg=0 while true; do #System status LED system_status=$(busctl get-property ${HOST_SERVICE} ${HOST_OBJPATH} ${HOST_INTERFACE} ${HOST_PROPERTY} | awk '{print $2}' | tr -d "\"" | awk -F . '{print $NF}') if [ "${system_status}" == "Running" ]; then #Solid Green CPLD_SYS_reg=0x90 else #Solid Yellow CPLD_SYS_reg=0x80 fi #Fan status LED fan_status=$(busctl get-property ${FAN_SERVICE} ${FAN_OBJPATH} ${FAN_INTERFACE} ${FAN_PROPERTY} | awk '{print $2}') if [ "${fan_status}" == "true" ]; then #Blink Yellow CPLD_FAN_reg=0xc else #Solid Green CPLD_FAN_reg=0x9 fi CPLD_SYS_FAN_reg=$((CPLD_SYS_reg | CPLD_FAN_reg)) #PSU0 status LED psu0_prsnt_status=$(busctl get-property ${PSU_SERVICE} ${PSU0_PRESENT_OBJPATH} ${PSU_INTERFACE} ${PSU_PROPERTY} | awk '{print $2}') psu0_power_status=$(busctl get-property ${PSU_SERVICE} ${PSU0_POWER_OBJPATH} ${PSU_INTERFACE} ${PSU_PROPERTY} | awk '{print $2}') if [ "${psu0_prsnt_status}" == "true" ]; then if [ "${psu0_power_status}" == "true" ]; then #Solid Green CPLD_PSU0_reg=0x9 else #Blink Yellow CPLD_PSU0_reg=0xc fi else CPLD_PSU0_reg=0x0 fi #PSU1 status LED psu1_prsnt_status=$(busctl get-property ${PSU_SERVICE} ${PSU1_PRESENT_OBJPATH} ${PSU_INTERFACE} ${PSU_PROPERTY} | awk '{print $2}') psu1_power_status=$(busctl get-property ${PSU_SERVICE} ${PSU1_POWER_OBJPATH} ${PSU_INTERFACE} ${PSU_PROPERTY} | awk '{print $2}') if [ "${psu1_prsnt_status}" == "true" ]; then if [ "${psu1_power_status}" == "true" ]; then #Solid Green CPLD_PSU1_reg=0x90 else #Blink Yellow CPLD_PSU1_reg=0xc0 fi else CPLD_PSU1_reg=0x0 fi CPLD_PSU0_PSU1_reg=$((CPLD_PSU0_reg | CPLD_PSU1_reg)) i2cset -f -y 2 0x40 "${CPLD_LED_offset1}" "${CPLD_SYS_FAN_reg}" > /dev/null 2>&1 i2cset -f -y 2 0x40 "${CPLD_LED_offset2}" "${CPLD_PSU0_PSU1_reg}" > /dev/null 2>&1 sleep 2 done exit 0