#!/bin/bash

GPIO_BASE=$(cat /sys/devices/platform/ahb/ahb:apb/1e780000.gpio/gpio/*/base)
#MGMT_ASSERT_PWR_BTN - Asserts the system power button, GPIO M0, Active High,  (Default = Low)
GPIO_PWR_BTN=$(($GPIO_BASE + 96 + 0))
#MGMT_ASSERT_RST_BTN - Assert the system cold reset button, GPIO M1, Active High,  (Default = Low)
GPIO_RST_BTN=$(($GPIO_BASE + 96 + 1))
# MGMT_ASSERT_BMC_READY - Hold low until BMC has completed initialization, then drive high, GPIO M7,  (Default = Low)
GPIO_BMC_READY=$((${GPIO_BASE} + 96 + 7))

# Usage of this utility
function usage() {
	echo "usage: power-util [on|off|cycle|status|reset]";
}

power_off() {
	echo "Shutting down Server"
	POWER_STATUS=off
	printf %s "$POWER_STATUS" > /tmp/power_status
	echo 1 > /sys/class/gpio/gpio${GPIO_PWR_BTN}/value
	# Long Press
	sleep 5
	echo 0 > /sys/class/gpio/gpio${GPIO_PWR_BTN}/value
}

power_on() {
	echo "Powering on Server"
	echo 1 > /sys/class/gpio/gpio${GPIO_PWR_BTN}/value
	# Short Press
	sleep 1
	echo 0 > /sys/class/gpio/gpio${GPIO_PWR_BTN}/value
	POWER_STATUS=on
	printf %s "$POWER_STATUS" > /tmp/power_status
}

power_status() {
	POWER_STATUS=$(cat /tmp/power_status)
	echo ${POWER_STATUS}
}

power_reset() {
	echo "Toggle Cold Reset"
	echo 1 > /sys/class/gpio/gpio${GPIO_RST_BTN}/value
	sleep 1
	echo 0 > /sys/class/gpio/gpio${GPIO_RST_BTN}/value
}

if [ $# -lt 1 ]; then
	echo "Total number of parameter=$#"
	echo "Insufficient parameter"
	usage;
	exit 0;
fi

if [ $1 = "on" ]; then
	if [ $(power_status) == "off" ]; then
		power_on
	fi
elif [ $1 = "off" ]; then
	if [ $(power_status) == "on" ]; then
		power_off
	fi
elif [ $1 == "cycle" ]; then
	if [ $(power_status) == "on" ]; then
		power_off
	else
		echo "WARNING: Powering on server"
		power_on
	fi
elif [ $1 == "reset" ]; then
	if [ $(power_status) == "on" ]; then
		power_reset
	else
		echo "ERROR: Server not powered on"
	fi
elif [ $1 == "status" ]; then
	power_status
else
	echo "Invalid parameter=$1"
	usage;
fi

exit 0;
