#! /bin/sh

### BEGIN INIT INFO
# Provides:          fancontrol
# Required-Start:    $remote_fs
# Required-Stop:     $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: fancontrol
# Description:       fan speed regulator
### END INIT INFO

. /lib/lsb/init-functions

[ -f /etc/default/rcS ] && . /etc/default/rcS
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
DAEMON=/usr/local/bin/fancontrol
DESC="fan speed regulator"
NAME="fancontrol"
PIDFILE=/var/run/fancontrol.pid
PLATFORMPATH=/sys/devices/platform/LPC
MAIN_CONF=/usr/share/sonic/device/x86_64-dell_s3000_c2338-r0/fancontrol
DEVPATH=/sys/devices/pci0000:00/0000:00:13.0/i2c-0/i2c-8/i2c-23/23-004d

test -x $DAEMON || exit 0

for i in 1 2 3
do
	j=$i
	[ $i -eq 3 ] && j=4
	FANFAULT=$(cat ${DEVPATH}/fan${j}_fault)
  [ $FANFAULT = 1 ] && continue
	FANDIR=$(cat ${PLATFORMPATH}/fan${i}_dir)
done
CONF=${MAIN_CONF}-${FANDIR}

case "$1" in
  start)
        if [ -f $CONF ] ; then
		if $DAEMON --check $CONF 1>/dev/null 2>/dev/null ; then
			log_daemon_msg "Starting $DESC" "$NAME\n"
			start-stop-daemon --start --quiet --pidfile $PIDFILE --startas $DAEMON $CONF
			log_end_msg $?
		else
			log_failure_msg "Not starting fancontrol, broken configuration file; please re-run pwmconfig."
		fi
	else
		if [ "$VERBOSE" != no ]; then
			log_warning_msg "Not starting fancontrol; run pwmconfig first."
		fi
	fi
	;;
  stop)
		log_daemon_msg "Stopping $DESC" "$NAME"
		start-stop-daemon --stop --quiet --pidfile $PIDFILE --oknodo --startas $DAEMON $CONF
		rm -f $PIDFILE
		log_end_msg $?
	;;
  restart)
        $0 stop
		sleep 3
		$0 start
	;;
  force-reload)
	if start-stop-daemon --stop --test --quiet --pidfile $PIDFILE --startas $DAEMON $CONF ; then
		$0 restart
	fi
	;;
  status)
		status_of_proc $DAEMON $NAME $CONF && exit 0 || exit $?
	;;
  *)
	log_success_msg "Usage: /etc/init.d/fancontrol {start|stop|restart|force-reload|status}"
	exit 1
	;;
esac

exit 0