#!/bin/bash

lines=""


#stringContain() { 
	#echo "1 $1 end"
	#echo "2 $2 end"
#[ -z "${2##*$1*}" ] && [ -z "$1" -o -n "$2" ]; 
#} 
#{ [ -z "${2##*$1*}" ]; }

stringContain() {
#echo "1 = $1 end"
#echo "2 = $2 end"
grep -qi "$2" <<< $1;
}


trim()
{
    trimmed=$1
    trimmed=${trimmed%% }
    trimmed=${trimmed## }

    echo "$trimmed"
}

function doRead {
unset lines
lines=nothing
#lines=""
local line=""
local llines=""
while read -t 1 line; do
  if [ "$line" != "EOF" ]; then
      line=$(echo $line|tr -d '\n')
      line=$(echo $line|tr -d '\r')
        
      echo "$line" >> /var/log/${peerName}_init
      llines="$llines $line"
      unset line

 	#echo "appended lines: $llines ;;; end" >> /var/log/tnm_init

   else
     break
   fi
 done
 lines="${llines}"
 unset line
 line=""
 #lines=$(trim "$lines")

 #echo "lines: $lines end lines" >> /var/log/tnm_init 
 #lines=$(echo $lines|tr -d '\n')
 #lines=$(echo $lines|tr -d '\r')
}

rm -f /var/log/${peerName}_init_old
cp -f /var/log/${peerName}_init /var/log/${peerName}_init_old

echo "-init" > /var/log/${peerName}_init

echo -e -n "AT\r"
doRead

echo -e -n "ATZ\r"
doRead
#sleep 1

echo -e -n "AT+KSLEEP=2\r"
doRead

echo -e -n "AT&D2\r"
doRead


echo -e -n "AT&K3\r"
doRead

echo -e -n "AT+KSYNC=2,5\r"
doRead

echo -e -n "AT&C1\r"
doRead

echo -e -n "AT+WMANTSEL=1\r"
doRead

echo -e -n "AT+KSREP=0\r"
doRead

echo -e -n "AT+COPS=0,0\r"
doRead

#echo -e -n "AT+COPS=0\r"
#doRead
#sleep 4

echo -e -n "AT+COPS=0\r"
doRead

sleep 5

echo -e -n "AT&W\r"
doRead

sleep 3

echo -e -n "ATZ\r"
doRead
sleep 1

echo -e -n "AT+CFUN=1,1\r"
doRead
sleep 4

echo -e -n "AT+CREG?\r"
doRead
sleep 1

COUNTER=0
while [  $COUNTER -lt 4 ]; do
	echo "-check $COUNTER if modem is ready:" >> /var/log/${peerName}_init
	echo -e -n "AT+CREG?\r"
	doRead
	#echo "-lines: $lines end lines" >> /var/log/${peerName}_init
	if [ -z "$lines" ] ; then 
		let COUNTER=COUNTER+1 
		sleep 1
		continue
	fi
	if stringContain "$lines" ',1' ; then
		echo "-modem ready on home network" >> /var/log/${peerName}_init
		break
	fi
	if stringContain "$lines" ',5' ; then 
		echo "-modem ready on roaming network" >> /var/log/${peerName}_init
		break
	fi
	
	let COUNTER=COUNTER+1 
	sleep 1
done

echo -e -n "AT+CREG?\r"
doRead
echo -e -n "AT+KSIMDET?\r"
doRead
echo -e -n "AT+KSREP?\r"
doRead
echo -e -n "AT+CIMI\r"
doRead
echo -e -n "AT+CCID\r"
doRead
echo -e -n "AT+CGQREQ?\r"
doRead
echo -e -n "AT+CGREG?\r"
doRead
echo -e -n "AT+CGDCONT?\r"
doRead

echo -e -n "AT+WOPEN=0\r"
doRead

#echo -e -n "AT+IPR=${baudrate}\r"
#doRead


COUNTER=0
while [  $COUNTER -lt 5 ]; do
	echo "-checking csq (counter: $COUNTER)" >> /var/log/${peerName}_init
	echo -e -n "AT+CSQ\r"
	doRead
	let COUNTER=COUNTER+1 
	if [ -z "$lines" ] ; then sleep 1;continue;fi
	if  stringContain "$lines" '+CSQ: 0,'; then
		sleep 1
		continue
	fi
	if  stringContain "$lines" '+CSQ: 99,'; then
		sleep 1
		continue
	fi
	#if  stringContain "$lines" '99'; then
	#	sleep 1
	#	continue
	#fi
	if ! stringContain "$lines" '+CSQ:'; then
		sleep 1
		continue
	fi
	break	
done

echo -e -n "AT+KBND?\r"
doRead

echo -e -n "AT+COPS?\r"
doRead


echo -e -n "ATI3\r"
doRead

echo -e -n "ATI\r"
doRead


# check which apn

# lets put the default in
echo -e -n "AT+CGDCONT=1,\"IP\",\"${apn}\",\"0.0.0.0\",0,0\r" > /etc/ppp/chat/${peerName}_context



COUNTER=0
while [  $COUNTER -lt 5 ]; do
	echo "-checking ccid mapping to apn (counter: $COUNTER)" >> /var/log/${peerName}_init
	echo -e -n "AT+CCID\r"
	doRead
	#AT+CCID
	#
	#+CCID: 8931086113127741227F
	#
	let COUNTER=COUNTER+1 
	if [ -z "$lines" ] ; then sleep 1;continue;fi
	#echo lines iccid $lines >> /var/log/${peerName}_init
	if  stringContain "$lines" 'CCID: '; then
		
		#CCID=$(echo $T | sed -E 's/.*\+CCID:\s*"?(\d*)"?.*/\1/' )
		#echo "--ccid is ${CCID}" >> /var/log/tnm_init
	
		CCID="$lines"
		
		#if [[ "$CCID" =~ .*${ccid_range1}.* ]]; then
		#    echo -e -n "AT+CGDCONT=1,\"IP\",\"${apn1}\",\"0.0.0.0\",0,0\r" > /etc/ppp/chat/${peerName}_context
		#fi 
		
		${ccid_part}
		
		break
	fi			
done


echo -e -n "ATI\r"
doRead

echo -e -n "AT+CCID\r"
doRead

echo -e -n "AT+CIMI\r"
doRead	

echo -e -n "AT+CSQ\r"
doRead	

