#!/bin/sh
### BEGIN INIT INFO
# Provides:          rescue-menu
# Required-Start:    udev
# Required-Stop:     $remote_fs $syslog
# Default-Start:     S
# Default-Stop:      
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO
# ugly hacks follow
ROOT_PLACE=/
INITFS=/mnt/initfs
PRODUCT=`awk '/product/ { print $2 }' /proc/component_version`

[ "$EVNAME" = "" ] && case $PRODUCT in SU-18) EVNAME=event1 ;; RX-34) EVNAME=event2 ;; RX-44) EVNAME=event0 ;; RX-48) EVNAME=event0 ;; esac

GETKEY="/usr/bin/evkey -u -t 100 /dev/input/${EVNAME}"
KEY_ENTER=28
KEY_SELECT=96
KEY_UP=103
KEY_DOWN=108
KEY_LEFT=105
KEY_RIGHT=106

KEY_MENU=62
KEY_HOME=63
KEY_ESC=1
MENU_MIN=1
MENU_MAX=5
MENU_IDX=1
draw_screen() 
{
	chroot $ROOT_PLACE fb-progress -c -b 00000 -p 00ff00 -l $1 -i 0 -o 10
#	chroot $INITFS text2screen -t "Mer Rescue Menu" -H center -V top -s 2
#	chroot $INITFS text2screen -t "$4" -H center -y 320 -s 2
#	chroot $INITFS text2screen -t "push left or right to navigate" -H center -y 350 -s 2
#	chroot $INITFS text2screen -t "center to select" -H center -y 370 -s 2
}

draw_current()
{
	if [ x$1 = "x1" ]; then
		draw_screen /lib/rescuemenu/normalboot.jpg $1 $MENU_MAX "Start Mer normally"
	fi
	
	if [ x$1 = "x2" ]; then
		draw_screen /lib/rescuemenu/console.jpg $MENU_MAX "Activate console on framebuffer"
	fi

	if [ x$1 = "x3" ]; then
		draw_screen /lib/rescuemenu/usbnet.jpg $1 $MENU_MAX "Act as an Ethernet USB Gadget with open telnetd"
	fi
	if [ x$1 = "x4" ]; then
		draw_screen /lib/rescuemenu/usbserial.jpg $1 $MENU_MAX "Act as an Serial USB Gadget with shell"
	fi
	if [ x$1 = "x5" ]; then
		draw_screen /lib/rescuemenu/reboot.jpg $1 $MENU_MAX "Reboot"
	fi
}


menu_loop(){
key_pressed=0
draw_current $MENU_IDX
while true ; do
	key=`$GETKEY`
	[ "$key" = "" ] || key_pressed=1
	echo $key
	case "$key" in
		${KEY_SELECT}) # select N810 key, exit menu
			break # exit menu loop
		;;
		${KEY_ENTER}) # enter/select key, exit menu
			break # exit menu loop
		;;
		${KEY_LEFT}) # up key
			if [ $MENU_IDX -gt $MENU_MIN ] ; then MENU_IDX=$((MENU_IDX-1)) ; else MENU_IDX=$MENU_MAX; fi
			draw_current $MENU_IDX
		;;
		${KEY_RIGHT}) # down key
			if [ $MENU_IDX -lt $MENU_MAX ] ; then MENU_IDX=$((MENU_IDX+1)) ; else MENU_IDX=$MENU_MIN ; fi
			draw_current $MENU_IDX
		;;
	esac
done
	echo $MENU_IDX > /tmp/.bootmode
}

tablet_setup()
{
	HWKEYSTATE=$(/usr/bin/evkey -s /dev/input/$EVNAME)
	if [ x$HWKEYSTATE = x$KEY_HOME ]; then
		menu_loop
	else
		echo 0 > /tmp/.bootmode
	fi
}

case "$1" in
        start|restart|force-reload)
        tablet_setup
        ;;
        stop)
        ;;
        *)
        echo "Usage: /etc/init.d/rescue-menu {start|stop|restart|force-reload}" >&2
        exit 3
        ;;
esac
