#!/bin/sh
#
### BEGIN INIT INFO
# Provides: slmodemd
# Should-Start: alsa
# Default-Start: 3 4 5
# Short-Description: SmartLink Modem Daemon
# Description: SmartLink Modem : Autoload modem modules + slmodem daemon
### END INIT INFO

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

prog=slmodemd
RETVAL=0

# Default configuration
SLMODEMD_DEVICE=slamr0
SLMODEMD_COUNTRY=USA
SLMODEMD_CARD_NUMBER=1

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

[ -z "$SLMODEMD_MODULE" ] && SLMODEMD_MODULE=slamr
SLMODEMD_MODULE=${SLMODEMD_MODULE//-/_}

case "$SLMODEMD_MODULE" in
	snd_* ) 
	    SLMODEMD_DEVICE=snd/controlC${SLMODEMD_CARD_NUMBER}
	    SLMODEMD_OPTIONS="$SLMODEMD_OPTIONS --alsa"
	    SLMODEMD_FULLDEVICE=hw:${SLMODEMD_CARD_NUMBER}
	;;
	* )
	    SLMODEMD_FULLDEVICE=/dev/$SLMODEMD_DEVICE
	;;
esac

# 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() {
	[ -d /sys/module/${SLMODEMD_MODULE} ] || {
	  gprintf "Loading SmartLink Modem driver into kernel ... "
	  modprobe $SLMODEMD_MODULE && echo_success || { 
	    echo_failure
	    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 set SLMODEMD_MODULE=<your-alsa-driver>
	$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
