diff options
author | Ori Bernstein <orib@fb.com> | 2015-09-03 13:06:18 -0700 |
---|---|---|
committer | Ori Bernstein <orib@fb.com> | 2015-09-23 18:10:45 -0700 |
commit | 67f44805b41a532b7b440773f7ee6d17dc0e97f4 (patch) | |
tree | c21a66b12c4d92a765e1ee0d47b96e2a2b9cd0d2 /meta-facebook/meta-yosemite/recipes-yosemite/fbutils/files/yosemite_power.sh | |
parent | 2a51b7c1c2165ddb188c511e192b75f0aa0fbead (diff) | |
download | ast2050-yocto-openbmc-67f44805b41a532b7b440773f7ee6d17dc0e97f4.zip ast2050-yocto-openbmc-67f44805b41a532b7b440773f7ee6d17dc0e97f4.tar.gz |
Openbmc dev snapshot.
Diffstat (limited to 'meta-facebook/meta-yosemite/recipes-yosemite/fbutils/files/yosemite_power.sh')
-rw-r--r-- | meta-facebook/meta-yosemite/recipes-yosemite/fbutils/files/yosemite_power.sh | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/meta-facebook/meta-yosemite/recipes-yosemite/fbutils/files/yosemite_power.sh b/meta-facebook/meta-yosemite/recipes-yosemite/fbutils/files/yosemite_power.sh new file mode 100644 index 0000000..3a2aaf7 --- /dev/null +++ b/meta-facebook/meta-yosemite/recipes-yosemite/fbutils/files/yosemite_power.sh @@ -0,0 +1,169 @@ +#!/bin/bash +# +# Copyright 2015-present Facebook. All Rights Reserved. +# +# This program file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program in a file named COPYING; if not, write to the +# Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301 USA +# + +. /usr/local/fbpackages/utils/ast-functions + +PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin + +LPS_PATH=/mnt/data/power/por/last_state + +prog="$0" + +usage() { + echo "Usage: $prog <slot#> <command> [command options]" + echo + echo "Commands:" + echo " status: Get the current 1S server power status" + echo + echo " on: Power on 1S server if not powered on already" + echo " options:" + echo " -f: Re-do power on sequence no matter if 1S server has " + echo " been powered on or not." + echo + echo " off: Power off 1S server ungracefully" + echo + echo +} + +do_status() { + if [ $(is_server_prsnt $slot) == "0" ]; then + echo "The given slot is Empty" + return 0 + fi + + echo -n "1S Server power for slot#$slot is " + if [ $(yosemite_is_server_on $slot) -eq 1 ] ; then + echo "on" + else + echo "off" + fi + return 0 +} + +do_on() { + + if [ $(is_server_prsnt $slot) == "0" ]; then + echo "The given slot is Empty" + return 0 + fi + + local force opt + force=0 + while getopts "f" opt; do + case $opt in + f) + force=1 + ;; + *) + usage + exit -1 + ;; + + esac + done + echo -n "Power on slot#$slot server ..." + if [ $force -eq 0 ]; then + # need to check if 1S Server is on or not + if [ $(yosemite_is_server_on $slot) -eq 1 ]; then + echo " Already on. Skip!" + return 1 + fi + fi + + # TODO: State the power state change + echo "on $(date +%s)" > $LPS_PATH + + # first make sure, GPIO is high + gpio_set $gpio 1 + # generate the power on pulse + gpio_set $gpio 0 + sleep 1 + gpio_set $gpio 1 + sleep 1 + # Turn on the power LED + /usr/local/bin/power_led.sh $slot on + echo " Done" + return 0 +} + +do_off() { + if [ $(is_server_prsnt $slot) == "0" ]; then + echo "The given slot is Empty" + return 0 + fi + echo -n "Power off slot#$slot server ..." + + #TODO: State the power state change + echo "off $(date +%s)" > $LPS_PATH + + # first make sure, GPIO is high + gpio_set $gpio 1 + sleep 1 + gpio_set $gpio 0 + sleep 5 + gpio_set $gpio 1 + # Turn off the power LED + /usr/local/bin/power_led.sh $slot off + echo " Done" + return 0 +} + +# Slot1: GPIOD3(27), Slot2: GPIOD1(25), Slot3: GPIOD7(31), Slot4: GPIOD5(29) +slot=$1 + +case $slot in + 1) + gpio=D3 + ;; + 2) + gpio=D1 + ;; + 3) + gpio=D7 + ;; + 4) + gpio=D5 + ;; + *) + gpio=D3 + ;; +esac + +command="$2" +shift +shift + +case "$command" in + status) + do_status $@ + ;; + on) + do_on $@ + ;; + off) + do_off $@ + ;; + *) + usage + exit -1 + ;; +esac + +exit $? |