#!/bin/sh
#
# slmodemd:    Starts the SmartLink Modem Daemon
#
# chkconfig: 345 09 10
# description: SmartLink Modem : Autoload slarm + slmodem
# processname: slmodemd
# config: /etc/sysconfig/slmodem

# Source function library.
. /etc/init.d/functions

prog=slmodemd
RETVAL=0

# Default configuration
SLMODEMD_DEVICE=slamr0
SLMODEMD_COUNTRY=USA

# Source configuration
CONFIG=/etc/sysconfig/$prog
if [ -f $CONFIG ]; then
        . $CONFIG
fi

[ -z "$SLMODEMD_MODULE" ] && SLMODEMD_MODULE=slamr

if [ "$SLMODEMD_MODULE" = snd-intel8x0m ]; then
    SLMODEMD_DEVICE=snd/controlC0
    SLMODEMD_OPTIONS="-a hw:"
    SLMODEMD_FULLDEVICE=
else
    SLMODEMD_FULLDEVICE=/dev/$SLMODEMD_DEVICE
fi

# uncomment this if you want this feature (if necessary edit module pattern):
# do not try to start on a kernel which does not support it
# grep -q 'slamr\.o' /lib/modules/`uname -r`/modules.dep || exit 0

start() {
	grep -q ${SLMODEMD_MODULE//-/_} /proc/modules || {
	  gprintf "Loading SmartLink Modem driver into kernel ... "
	  modprobe $SLMODEMD_MODULE && echo_success || { 
	    echo_failed
	    echo
	    exit -1
	  }
	  echo
	}
	try=3
	while [ $try -gt 0 -a ! -c /dev/$SLMODEMD_DEVICE ]; do
	    sleep 1
	    try=$(($try - 1))
	done
	gprintf "Starting SmartLink Modem driver for %s: " "$SLMODEMD_DEVICE"
	# if you want ALSA add SLMODEMD_OPTIONS="--alsa" in /etc/sysconfig/slmodemd
	$prog --country=$SLMODEMD_COUNTRY $SLMODEMD_OPTIONS $SLMODEMD_FULLDEVICE >/dev/null 2>&1 &
	RETVAL=$?
	[ $RETVAL -eq 0 ] && success "%s startup" "$prog" || failure "%s startup" "$prog"
	echo
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
	return $RETVAL
}

stop() {
	gprintf "Shutting down SmartLink Modem driver: "
	killproc $prog
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
	return $RETVAL
}

# See how we were called.
case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  status)
	status $prog
	RETVAL=$?
	;;
  restart|reload)
	stop
	start
	RETVAL=$?
	;;
  condrestart)
        if [ -f /var/lock/subsys/$prog ]; then
		stop
		start
		RETVAL=$?
	fi
	;;
  *)
	gprintf "*** Usage: %s {start|stop|status|restart|condrestart}\n" "$prog"
	exit 1
esac

exit $RETVAL
