#! /bin/sh

# Copyright (c) Nokia 2002. All Rights Reserved. 
#
# Nokia is a registered trademark of Nokia Corporation.
# Other product and company names mentioned herein may be
# trademarks or tradenames of their respective owners. 

# Portions are: Copyright (C) 1998, 1999, 2000 David A. Hinds

if [ -r ./shared ] ; then . ./shared ; else . /etc/pcmcia/shared ; fi

# Get device attributes

get_info $DEVICE

PROC_FILE=/proc/net/nokia_cs
CHDEV_FILE=/dev/nokia_cs
NOKIA_CTL=/sbin/nokia_ctl
NOKIA_CS=/sbin/nokia_cs

echo action $ACTION

case "$ACTION" in

'start')

    TTYDEV=`cat $PROC_FILE | grep 'GSM TTYDev' | sed -n -e 's/GSM TTYDev  =//p'`
    GSMCHRDEVMAJOR=`cat $PROC_FILE | grep 'GSM ChMajor' | sed -n -e 's/GSM ChMajor =//p'`
    GSMCHRDEVMINOR=`cat $PROC_FILE | grep 'GSM ChMinor' | sed -n -e 's/GSM ChMinor =//p'`

    #sanity check
    if [ -n "$TTYDEV" ] ; then
	rm -f /dev/$TTYDEV
    else
	echo "No TTYDEV, driver is not properly installed"
	exit -1
    fi
    mknod /dev/$TTYDEV c $GSMCHRDEVMAJOR $GSMCHRDEVMINOR

    # Control Device
    CHRDEVMAJOR=`cat $PROC_FILE | grep 'WLAN ChMajor' | sed -n -e 's/WLAN ChMajor=//p'`
    CHRDEVMINOR=`cat $PROC_FILE | grep 'WLAN ChMinor' | sed -n -e 's/WLAN ChMinor=//p'`

    rm -f $CHDEV_FILE
    mknod $CHDEV_FILE c $CHRDEVMAJOR $CHRDEVMINOR

    #start nokia_cs daemon
    initlog -c "$NOKIA_CS" &

    MODE=`cat $0.opts | sed -n -e '/^MODE=/s/MODE=//p' | sed -e 's,[[:space:]],,g'`
    PROFILE=`cat $0.opts | sed -n -e '/^PROFILE=/s/PROFILE=//p' | sed -e 's,[[:space:]],,g'`
    NETWORK_START=`cat $0.opts | sed -n -e '/^NETWORK_START=/s/NETWORK_START=//p' | sed -e 's,[[:space:]],,g'`

    if [ "$MODE" = WLAN ] ; then

	echo Starting up WLAN

	sleep 1

	# MAC
	HWADDR=`cat $PROC_FILE | grep Mac | sed -n -e 's/Mac    =//p'`

	# Load site-specific settings
	ADDRESS="$SCHEME,$SOCKET,$INSTANCE,$HWADDR"

	echo I know of these:
	echo $DEVICE,$SCHEME,$SOCKET,$INSTANCE,$HWADDR,$CHRDEVMAJOR,$CHRDEVMINOR

	echo Initializing profile "$PROFILE"

	"$NOKIA_CTL" profile "$PROFILE"

	if is_true $NETWORK_START ; then

	    echo Starting Network $1 $2
	    ./network $1 $2
	fi
    fi
    exit $?
    ;;

'stop' )

    ./network $1 $2
    killall -KILL "$NOKIA_CTL" 2> /dev/null
    killall -TERM "$NOKIA_CS"
    errvalue=$?

    sleep 2

    pid=`pidof nokia_cs`

    if [ -n "$pid" ] ; then
	echo WARNING! nokia_cs daemon may be zombie!
	killall -KILL "$NOKIA_CS"
	errvalue=$?
    fi
    exit $errvalue
    ;;

'check'|'cksum'|'restart'|'suspend'|'resume')

    ./network $1 $2
    errvalue=$?
    exit $errvalue
    ;;
*)
    usage
    ;;
esac
exit 0
