#!/bin/sh

PROG=sng-power-ctl
LOCK_FILE=/var/lock/$PROG.lock
LAST_PRESS=/tmp/sng-power-last-pressed
PRESS_FACTORY_CNT=/tmp/sng-power-press-factory-cnt
PRESS_REBOOT_CNT=/tmp/sng-power-press-reboot-cnt

SNG_FACTORY_RESET=/usr/local/sng/bin/sng-factory-reset
FACTORY_CNT=5
REBOOT_CNT=2

seconds=`date +%S`
logger "$0: Power button pressed! ($seconds)"

#echo "last press empty"
if [ -e $LOCK_FILE ]; then
	logger "$0: power ctl is running already!"
	#echo "Error: $PROG running"
	rm -f $LOCK_FILE
	exit 1
fi

touch $LOCK_FILE

if [ ! -e $PRESS_FACTORY_CNT ]; then
	echo 0 > $PRESS_FACTORY_CNT
fi
if [ ! -e $PRESS_REBOOT_CNT ]; then
	echo 0 > $PRESS_REBOOT_CNT
fi
if [ ! -e $LAST_PRESS ]; then
	echo 0 > $LAST_PRESS
fi


last_press=`cat $LAST_PRESS`
cur_press=`date +%s`
if [ "$last_press" = "" ]; then
	echo "$cur_press" > $LAST_PRESS 	
else
	val=$((cur_press-last_press))
	if [ $val -gt 1 ] && [ $val -lt 4 ]; then
		val=`cat $PRESS_REBOOT_CNT`
		val=$((val+1))
		echo $val > $PRESS_REBOOT_CNT		

		if [ $val -ge $REBOOT_CNT ]; then
			logger "$0: Reboot sequence accepted"
			logger "$0: Rebooting"
			echo 0 > $PRESS_REBOOT_CNT

			# Reboot
			reboot
		fi
		echo 0 > $PRESS_FACTORY_CNT
	elif [ $val -lt 2 ]; then
		val=`cat $PRESS_FACTORY_CNT`
		val=$((val+1))
		echo $val > $PRESS_FACTORY_CNT		
		if [ $val -ge $FACTORY_CNT ]; then
			logger "$0: Factory sequence accepted"
			logger "$0: Setting system to factory reset"
			echo 0 > $PRESS_FACTORY_CNT

			# Perform factory reset
			$SNG_FACTORY_RESET

			# Reboot
			reboot
		fi
		echo 0 > $PRESS_REBOOT_CNT
	else
		echo 0 > $PRESS_FACTORY_CNT
		echo 0 > $PRESS_REBOOT_CNT
	fi	

	echo "$cur_press" > $LAST_PRESS 	
fi

rm -f $LOCK_FILE

exit 0

