#!/bin/sh
#
# zaptel        This shell script takes care of loading and unloading \
#               Zapata Telephony interfaces
# chkconfig: 2345 9 92
# description: The zapata telephony drivers allow you to use your linux \
# computer to accept incoming data and voice interfaces
#
# config: /etc/sysconfig/zaptel

initdir=/etc/init.d

#
# Determine which kind of configuration we're using
#
. $initdir/functions || exit 0

# Source zaptel configuration.
[ -f /etc/sysconfig/zaptel ] && . /etc/sysconfig/zaptel

if [ -z "${MODULES}" ]; then 
	# Populate defaults if not present
	MODULES=""
fi

RMODULES=""
# Reverse list for un-loading; don't change
for x in $MODULES; do 
    RMODULES="$x $RMODULES"
done

# Check that telephony is up.
[ "${TELEPHONY}" = "yes" ] || exit 0

[ -f /usr/sbin/ztcfg ] || exit 0

[ -f /etc/zaptel.conf ] || exit 0

if [ "${DEBUG}" = "yes" ]; then
	ARGS="debug=1"
fi

RETVAL=0

# See how we were called.
case "$1" in
  start)
	action "Loading zaptel framework: " modprobe zaptel

	echo -n "Waiting for zap to come online..."
	TMOUT=5 # max secs to wait
	while [ ! -d /dev/zap ] ; do
 		sleep 1
		TMOUT=`expr $TMOUT - 1`
		if [ $TMOUT -eq 0 ] ; then
			echo "Error: missing /dev/zap!"
			exit 1
		fi
	done
	echo "OK"

	# Loading cronyx device drivers
	if [ "$CRONYX" == "yes" ]; then
	    echo -n "Loadiny cronyx hardware modules:"
	    modprobe cp
	    modprobe ct
	    modprobe czaptel
        fi
	
	echo -n "Loading zaptel hardware modules:"
	for x in $MODULES; do 
		if modprobe ${x} ${ARGS} >& /dev/null; then
			echo -n " $x"
		fi
	done
	sleep 3
	if [ ! -e /proc/zaptel/1 ]; then
		echo "No functioning zap hardware found in /proc/zaptel, loading ztdummy"
		modprobe ztdummy >& /dev/null
	fi
	action "Running ztcfg: " /usr/sbin/ztcfg
	RETVAL=$?

        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/zaptel
        ;;
  stop)
        # Unload drivers
        echo -n "Unloading zaptel hardware drivers:"
	for x in $RMODULES ztdummy; do 
		if rmmod ${x} >& /dev/null 2> /dev/null; then
			echo -n " $x"
		fi
	done
	echo "."

	action "Removing zaptel module: " rmmod zaptel
	RETVAL=$?

        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/zaptel
        ;;
  condrestart)
  	;;
  condreload)
  	;;
  restart)
	$0 stop
	$0 start
	;;
  reload)
	    action "Reloading ztcfg: " /sbin/ztcfg
		RETVAL=$?
	;;
  *)
        echo "Usage: zaptel {start|stop|restart|reload}"
        exit 1
esac

exit $RETVAL

