#!/bin/sh
# description: Start or stop the fhem server
# last change 2013-01-27
# Added by Alex Peuchert with additions by Boris Neubert
# Watchdog added by Uli Wolf

### BEGIN INIT INFO
# Provides:             fhem.pl
# Required-Start:       $local_fs $remote_fs
# Required-Stop:        $local_fs $remote_fs
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    FHEM server
### END INIT INFO

set -e
cd /opt/fhem
port=7072
conf=/opt/fhem/fhem.cfg

name_fhem="fhem.pl"
name_watchdog="ctrl-watchdogloop.sh"

# Generic checks
CNT_WATCHDOG=`ps -ef | grep $name_watchdog | grep -v grep | wc -l`
if [ "$CNT_WATCHDOG" -eq "0" ] ; then
	echo "[NOK] Watchdog is not running"
else
	echo "[ OK] Watchdog is running"
fi
CNT_FHEM=`ps -ef | grep $name_fhem | grep -v grep | wc -l`
if [ "$CNT_FHEM" -eq "0" ] ; then
	echo "[NOK] FHEM     is not running"
else
	echo "[ OK] FHEM     is running"
fi


case "$1" in
'start')
	echo "Freeing serial"
	if test ! -d /sys/class/gpio/gpio17; then
		echo 17 > /sys/class/gpio/export;
	fi
	echo out > /sys/class/gpio/gpio17/direction
	echo 1 > /sys/class/gpio/gpio17/value
	if [ "$CNT_FHEM" -eq "0" ] ; then
	        echo "Starting fhem..."
		/opt/fhem/ctrl-fhem-start.sh
	fi
	if [ "$CNT_WATCHDOG" -eq "0" ] ; then
		echo "Starting watchdog"
		./$name_watchdog &
	fi
        #perl fhem.pl $conf
        RETVAL=$?
        ;;
'prof')
        echo "Profiling fhem..."
	# Devel::NYTProf must be installed
	# type 'perldoc -q profile' for usage information
        perl -d:NYTProf $name_fhem $conf
        RETVAL=$?
        ;;
'stop')
	if [ "$CNT_WATCHDOG" -gt "0" ] ; then
		echo "Stopping watchdog"
		killall $name_watchdog
	fi
	if [ "$CNT_FHEM" -gt "0" ] ; then
		echo "Stopping fhem"
		/opt/fhem/ctrl-fhem-stop.sh
	fi
	;;
'restart')
	$0 stop
	$0 start
        RETVAL=$?
        ;;
'status')
	
        ;;
*)
        echo "Usage: $0 { start | stop | restart | prof | status }"
        RETVAL=1
        ;;
esac
exit $RETVAL
