#! /bin/sh

# dialog(B1)

TTPROTO=dss1
TTFILE=dss1
TDDIN=1
TDDI1=0
TDDI1F=n
TOK=n
TIOADDR=150
TIRQ=5

prompt () {
	eval $3=\"$2\"
	echo -n "$1 [$2]: "
	read tmp
	if [ -n "$tmp" ]; then 
		eval $3=\"$tmp\"
	fi
}

ask_bool () {
	default=`eval echo '$'$2`
	if [ ! "$default" ]; then 
		default=n
	fi
	answer=""
	while [ "$answer" != "n" -a "$answer" != "y" ]; do
		prompt "$1" "$default" answer
	done
	eval "$2=$answer"
}

ask_number () {
        default=`eval echo '$'$2`
        if [ ! "$default" ]; then
                default=0
        fi
        answer=""
        while [ "$answer" == "" ]; do
                prompt "$1" "$default" answer
                numlen=`expr "$answer" : "[0-9]\+"`
                strlen=`expr length "$answer"`
                if [ $numlen -ne $strlen ]; then
                        answer=""
                else
			if [ "$3" != "" ]; then
                        	if [ $answer -ge $3 ]; then
                                	answer=""
	                        fi
			fi
                fi
        done
        eval "$2=$answer"
}

protochk () {
	case $1 in
	dss1|1tr6|ni-1)
		true
		;;
	*)
		false
		;;
	esac	
}

iochk () {
	case $1 in
	150|250|300|340)
		true
		;;
	*)
		false
		;;
	esac
}

irqchk () {
	case $1 in
	3|4|5|6|7|10|11|12|15)
		true
		;;
	*)
		false
		;;
	esac
}

ask_str () {
	default=`eval echo '$'$2`
	answer=""
	while [ ! "$answer" ]; do
		prompt "$1" "$default" answer
		eval "$3 '$answer'"
		if [ $? -ne 0 ]; then
			answer=""
		fi
	done
	eval "$2=$answer"
}

while [ "$TOK" == "n" ]; do
	clear
	echo -e "\nWelcome at the installation of the AVM ISDN-Controller B1\n"

	ask_str "D-channel protocol     (dss1/1tr6/ni-1)" TTPROTO protochk
	TTFILE=$TTPROTO
	case $TTPROTO in
	dss1)
		ask_bool "Point-to-point BRI?               (y/n)" TDDI1F
		if [ "$TDDI1F" == "y" ]; then
			TDDI1=1
		else
			TDDI1=0
		fi
		;;
	1tr6)
		TDDI1=0
		;;
	ni-1)
		if [ "$DN1" == "DN" ]; then
			DN1=0
			DN2=0
			SPID1=0
			SPID2=0
		fi
		ask_number "Directory number 1                     " DN1
		ask_number "Service provider identificator 1       " SPID1
		ask_number "Directory number 2                     " DN2
		ask_number "Service provider identificator 2       " SPID2
		TDDI1=0
		;;
	esac
	if [ "$CARD" == "b1isa" ]; then
		ask_str "I/O address           (150/250/300/340)" TIOADDR iochk
		ask_str "IRQ number      (3,4,5,6,7,10,11,12,15)" TIRQ irqchk
	fi

	echo -e "\n\nYou have chosen the following:\n"
	echo "D-channel protocol : $TTPROTO"
	if [ "$TTPROTO" == "dss1" ]; then
		echo "Point-to-point BRI : $TDDI1F"
	fi
	if [ "$TTPROTO" == "ni-1" ]; then
		echo "DN1:SPID1          : $DN1:$SPID1"
		echo "DN2:SPID2          : $DN2:$SPID2"
	fi
	if [ "$CARD" == "b1isa" ]; then
		echo "I/O address        : $TIOADDR"
		echo "IRQ number         : $TIRQ"
	fi
	echo ""
	ask_bool "Are these settings correct? (y/n)" TOK
done

TPROTO=$TTPROTO
TFILE=$TTFILE

echo -e "\n"
