102 lines
1.9 KiB
Bash
102 lines
1.9 KiB
Bash
|
#!/bin/bash
|
||
|
normal='0 : normal'
|
||
|
unpowered='2 : unpowered'
|
||
|
fault='4 : fault'
|
||
|
notinstalled='7 : not installed'
|
||
|
FAN_UNPLUG_NUM=0
|
||
|
FAN_LED_RED='fan_led_red'
|
||
|
NUM=1
|
||
|
FAN_NUM=5
|
||
|
FIRST_READ=0
|
||
|
SECOND_READ=0
|
||
|
|
||
|
PSOC_PATH="/tmp/psoc"
|
||
|
CPLD_ADDR="/sys/bus/i2c/devices/i2c-0/0-0077"
|
||
|
ROUTE="/sys/class/hwmon/"
|
||
|
|
||
|
|
||
|
#PSU_STAUS='000'
|
||
|
#switch is ready , transfer control of cpld to cpu
|
||
|
echo 1 > $CPLD_ADDR/ctl
|
||
|
|
||
|
while true
|
||
|
do
|
||
|
|
||
|
#monitor how many fan modules are unplugged
|
||
|
|
||
|
|
||
|
#first check
|
||
|
FAN_UNPLUG_NUM=0
|
||
|
FAN_ARR=$(cat $PSOC_PATH/$FAN_LED_RED?)
|
||
|
|
||
|
while read -r line; do
|
||
|
fan_led_red_check=$(echo "$line")
|
||
|
if [ $fan_led_red_check -eq 1 ]
|
||
|
then
|
||
|
let FAN_UNPLUG_NUM=FAN_UNPLUG_NUM+1
|
||
|
fi
|
||
|
done <<< "$FAN_ARR"
|
||
|
FIRST_READ=$FAN_UNPLUG_NUM
|
||
|
|
||
|
#second check
|
||
|
FAN_UNPLUG_NUM=0
|
||
|
FAN_ARR=$(cat $PSOC_PATH/$FAN_LED_RED?)
|
||
|
|
||
|
while read -r line; do
|
||
|
fan_led_red_check=$(echo "$line")
|
||
|
if [ $fan_led_red_check -eq 1 ]
|
||
|
then
|
||
|
let FAN_UNPLUG_NUM=FAN_UNPLUG_NUM+1
|
||
|
fi
|
||
|
done <<< "$FAN_ARR"
|
||
|
SECOND_READ=$FAN_UNPLUG_NUM
|
||
|
|
||
|
if [ $FIRST_READ -ne $SECOND_READ ]
|
||
|
then
|
||
|
#echo "not equl:$FIRST_READ != $SECOND_READ"
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
if [ $FAN_UNPLUG_NUM -ge 2 ]
|
||
|
then
|
||
|
#echo "solid red"
|
||
|
echo 7 > $CPLD_ADDR/red_led
|
||
|
echo 0 > $CPLD_ADDR/grn_led
|
||
|
sleep 1
|
||
|
continue
|
||
|
elif [ $FAN_UNPLUG_NUM -eq 1 ]
|
||
|
then
|
||
|
#solid orange
|
||
|
echo 7 > $CPLD_ADDR/red_led
|
||
|
echo 7 > $CPLD_ADDR/grn_led
|
||
|
sleep 1
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
#echo "normal"
|
||
|
psu0var=$(cat $CPLD_ADDR/psu0) # bottom PSU
|
||
|
psu1var=$(cat $CPLD_ADDR/psu1) # top PSU
|
||
|
|
||
|
if [ "$psu0var" = "$normal" ] &&
|
||
|
[ "$psu1var" = "$normal" ] # PSU normal operatio
|
||
|
then
|
||
|
#solid green
|
||
|
echo 7 > $CPLD_ADDR/grn_led
|
||
|
echo 0 > $CPLD_ADDR/red_led
|
||
|
#echo "solid green"
|
||
|
else
|
||
|
if [ "$psu0var" = "$unpowered" ] ||
|
||
|
[ "$psu1var" = "$unpowered" ]
|
||
|
then
|
||
|
#echo solid orange
|
||
|
echo 7 > $CPLD_ADDR/grn_led
|
||
|
echo 7 > $CPLD_ADDR/red_led
|
||
|
fi
|
||
|
|
||
|
fi
|
||
|
|
||
|
|
||
|
sleep 1
|
||
|
done
|
||
|
|