#!/bin/ash
for i in 0 1;
do
	/bin/stty -F /dev/tts/0 speed 9600
	echo '?c0?f' > /dev/tts/0
	echo '?B80' > /dev/tts/0
	echo "?f" >> /dev/tts/0
done

getcardinfo() { 

	# the comgt package has changed the executable
	comgt=$(which gcom 2>/dev/null)
         
	# determine the card ports
	wwan_device="$(nvram get wwan_device)"
	modem_data_port=${wwan_device:-"/dev/usb/tts/0"}
	modem_control_ports="/dev/usb/tts/2 /dev/noz2"
	for port in $modem_control_ports
	do
		[ -e "$port" ] && {
			modem_control_port=$port
		}
	done
	
	case "$(nvram get wwan_type)" in
		gsm)
			info=$($comgt -d "$modem_control_port" -s /usr/lib/webif/comgt.webif 2>/dev/null)
			signal=$(echo "$info" | grep "+CSQ:" | cut -d: -f2 | cut -d, -f1)
		;;
		cdma)
			if [ $1 = "disconnected" ]; then
				# only if disconnected
				signal=$($comgt -sd "$modem_data_port" /usr/lib/webif/comgt-cdma.webif 2>/dev/null)
			else
				hideif_connected_cdma="|hidden"
			fi
		;;
	esac

	# calculate signal strength in db and percentage
	if [ -n "$signal" -a "$signal" != "99" ]; then
		signaldb="$((109-signal*2))"
		signalpercent=$(((128-$signaldb)*100/81))
	else
		signaldb="128"
		signalpercent="0"
	fi
}


rx0=$(/sbin/ifconfig ppp0 | grep 'RX bytes'|sed -r -e 's/.*RX bytes://g'|awk '{print $1}')
tx0=$(/sbin/ifconfig ppp0 | grep 'TX bytes'|sed -r -e 's/.*TX bytes://g'|awk '{print $1}')
oldtime=$(date "+%s")
while true;
do
        rx1=$(/sbin/ifconfig ppp0 | grep 'RX bytes'|sed -r -e 's/.*RX bytes://g'|awk '{print $1}')       
        tx1=$(/sbin/ifconfig ppp0 | grep 'TX bytes'|sed -r -e 's/.*TX bytes://g'|awk '{print $1}')
        echo "$(/sbin/ifconfig ppp0 | grep inet | awk '{print $2}'| awk -F : '{print $2}')?n" >> /dev/tts/0 
	newtime=$(date "+%s")
	difftime=$(($newtime-$oldtime))
	if [ $difftime=0 ];
	then
		difftime=1
	fi
        rxbytes=$((($rx1-$rx0)/(128*$difftime)))
        txbytes=$((($tx1-$tx0)/(128*$difftime)))
        printf "+%4.1dkb/s -%4.1dkb/s?n" $rxbytes $txbytes >> /dev/tts/0
        printf "Signal -%3.1ddB %3.1d%%?n" $signaldb $signalpercent >> /dev/tts/0
	printf "%20s" ' ' >> /dev/tts/0
        rx0=$rx1;
        tx0=$tx1;
	getcardinfo
done;


