#!/bin/sh /etc/rc.common
# (C) 2008 openwrt.org

START=96

[ ! -f /dev/vmmc10 ] && {
	mknod /dev/vmmc10 c 122 10
	mknod /dev/vmmc11 c 122 11
	mknod /dev/vmmc12 c 122 12
	mknod /dev/vmmc13 c 122 13
	mknod /dev/vmmc14 c 122 14
	mknod /dev/vmmc15 c 122 15
	mknod /dev/vmmc16 c 122 16
	mknod /dev/vmmc17 c 122 17
	mknod /dev/vmmc18 c 122 18
}

TD_EXTRA_FLAGS_FXO=
TD_EXTRA_FLAGS_KPI2UDP=
TD_DOWNLOAD_PATH=/lib/firmware/
DEV_NODE_TERIDIAN=ter10

 # Show help
help()
{
	 echo "Usage:"
	 echo " - $0 WAN-IF-NAME - start TAPIDEMO without FXO support"
	 echo " - $0 WAN-IF-NAME fxo - start TAPIDEMO with FXO support."
	 echo " - $0 stop - stop TAPIDEMO"
}

# Check if device node for Teridian exists
checkFxoSupport()
{
	if [ ! -e /dev/$DEV_NODE_TERIDIAN ];then
		echo "FXO support is disabled. Can not find required driver's device node."
	else
		TD_EXTRA_FLAGS_FXO="-x"
	fi
}

# Check if module drv_kpi2udp is loaded
checkKpi2UdpSupport()
{
	tmp=`cat /proc/modules | grep 'drv_kpi2udp '`
	if [ "$tmp" != "" ]; then
		TD_EXTRA_FLAGS_KPI2UDP="-q"
	fi
}

start()
{
	TD_WANIF=$1

	TD_WANIF_IP=`ifconfig $TD_WANIF | grep 'inet addr:' | cut -f2 -d: | cut -f1 -d' '`
	if [ "$TD_WANIF_IP" = "" ]; then
		echo "Error, getting IP address for network device $TD_WANIF failed."
		exit 1
	fi

	if [ "$2" = "" ];then
		# FXO support is disabled.
	  continue
	elif [ "$2" = "fxo" ];then
	  checkFxoSupport
	else
	  echo "Error, unknown second parameter."
	  help
	  exit 1
	fi

	checkKpi2UdpSupport

	if [ -r /etc/rc.conf ]; then
		. /etc/rc.conf
	fi

	TD_DEBUG_LEVEL=$tapiDebugLevel
	if [ "$TD_DEBUG_LEVEL" = "" ]; then
		TD_DEBUG_LEVEL=3
	fi

	/usr/sbin/tapidemo -d $TD_DEBUG_LEVEL $TD_EXTRA_FLAGS_FXO $TD_EXTRA_FLAGS_KPI2UDP -i $TD_WANIF_IP -l $TD_DOWNLOAD_PATH &
}

stop()
{
	 killall tapidemo > /dev/null 2> /dev/null
}