diff options
| author | Artur Artamonov <freeartman@wechall.net> | 2013-07-23 23:50:35 +0300 | 
|---|---|---|
| committer | Artur Artamonov <freeartman@wechall.net> | 2013-07-23 23:50:35 +0300 | 
| commit | d27678cf375bbb473e5111084c1c53a4081731d6 (patch) | |
| tree | 1ef159661963bf810918ac6131ec5252b9b897a6 /package/query3g/files/usr/bin | |
| parent | b63df4c5414a40d087c9a07702273099d7e6cf73 (diff) | |
query3g fixed output for compability
Diffstat (limited to 'package/query3g/files/usr/bin')
| -rw-r--r--[-rwxr-xr-x] | package/query3g/files/usr/bin/3gdetect.sh | 66 | ||||
| -rwxr-xr-x | package/query3g/files/usr/bin/query3g | 205 | 
2 files changed, 221 insertions, 50 deletions
| diff --git a/package/query3g/files/usr/bin/3gdetect.sh b/package/query3g/files/usr/bin/3gdetect.sh index 53715a9cc..da93c499e 100755..100644 --- a/package/query3g/files/usr/bin/3gdetect.sh +++ b/package/query3g/files/usr/bin/3gdetect.sh @@ -1,15 +1,18 @@  #!/bin/sh  DATA_DIR=./data  GCOM=comgt -GCOM_MODEMDETECT="/usr/share/3gmodem/model.gcom" +GCOM_MODEMDETECT="/usr/share/query3g.gcom"  MODEM_INFO="modemname.sh"  RETURN_APN=$DATA_DIR/apnprovider  usbreset=/usr/bin/usbreset  GCOM_CMD="/tmp/cmds.gcom" +GCOM_OUT="/tmp/gcom.out"  detect_model()  { -	$GCOM -d $1 $2 | tail -n 1 +	#$1 device +	#$2 script +	$GCOM -d $1 -s $2 >> $GCOM_OUT  }  modem_info() @@ -28,6 +31,7 @@ gcomscr_start()   send \"AT^m\"   waitfor 1 \"OK\",\"ERROR\" " >> $GCOM_CMD  +   }  gcomscr_add_cmd() @@ -76,6 +80,10 @@ gcomscr_run()  	$GCOM -d $1 $GCOM_CMD  } +rm -f /tmp/modem3g.* +rm -f $GCOM_OUT +rm -f $GCOM_CMD +  skip_cycles=0  skip_passed=0  known_modems="" @@ -94,19 +102,21 @@ for port in 0 1 2 3 4 5 6 7 8 9; do  		pid="$(cat "$tty/../../idProduct")"  		#echo $dir  		#echo $uid -		echo "DEVICE:"$dev +		#echo "PORT:"$dev  		#echo $vid":"$pid -		ret=$(detect_model "$dev" $GCOM_MODEMDETECT) -		#echo $ret -		manuf=$(echo $ret | cut -d',' -f1 | tr '[A-Z]' '[a-z]' ) -		model=$(echo $ret | cut -d',' -f2 | tr '[A-Z]' '[a-z]' ) -		serialnum=$(echo $ret | cut -d',' -f3 ) -		echo "MODEL: "$model -		echo "MANUF: "$manuf -		echo "SERIAL:"$serialnum +		$GCOM -d $dev -s $GCOM_MODEMDETECT > $GCOM_OUT +		model=$( echo `awk -F ':' '{if ($1=="DEVICE") {gsub(/^ */,"",$2);l_a=split($2,a," ");print a[l_a]}}' $GCOM_OUT | tr '[A-Z]' '[a-z]'` ) +		serialnum=$( echo `awk -F ':' '{if ($1=="SERIAL") {gsub(/^ */,"",$2);print $2}}' $GCOM_OUT` ) +		manuf=$(echo `awk -F ':' '{if ($1=="DEVICE") {gsub(/^ */,"",$2);l_a=split($2,a," ");r="";for(i=1;i<l_a;i++)r=r""a[i]" ";gsub(/[[:space:]]*/,"",r); print r}}' $GCOM_OUT | tr '[A-Z]' '[a-z]'`) -		#FILE="/tmp/modem3g.$serialnum" +		if [ "$model" != "" ] && [ "$manuf" != "" ]; then +			manuf="${manuf//[[:space:]]/}" +			#echo "DEVICE:["$manuf"] ["$model"]" +			#echo "IMEI:"$serialnum +		fi +		 +		FILE="/tmp/modem3g.$serialnum"  		#echo "FILE:"$FILE  		if [ -f $FILE ]; then  			found=1 @@ -119,21 +129,23 @@ for port in 0 1 2 3 4 5 6 7 8 9; do  			if [ $found -eq 0 ]; then  				touch /tmp/modem3g.$serialnum  				manuf="${manuf//[[:space:]]/}" +				#echo "$manuf" $model  				ret=$(modem_info "$manuf" $model)  				reti="$?" -				##echo "modem_info == "$ret +				#echo "modem_info == "$ret  				#echo "reti"$reti  				if [ "$reti" == "0" ];then -					echo "FOUND 3G MODEM "$model" "$manuf"?" +					#echo "FOUND 3G MODEM "$model" "$manuf"?"  					#echo "ret="$ret -					#read usbid TMP TMP serialportnum serialport cmds reset<<<$(IFS=",";echo $ret) +					 +					  					tmp="/tmp/tmp.txt" -					echo "$ret" >> $tmp -					usbid=`awk -F "," '{print $1}' $tmp` -					serialportnum=`awk -F "," '{print $4}' $tmp` -					serialport=`awk -F "," '{print $5}' $tmp` -					cmds=`awk -F "," '{print $6}' $tmp` -					reset=`awk -F "," '{print $7}' $tmp` +						echo "$ret" >> $tmp +						usbid=`awk -F "," '{print $1}' $tmp` +						serialportnum=`awk -F "," '{print $4}' $tmp` +						serialport=`awk -F "," '{print $5}' $tmp` +						cmds=`awk -F "," '{print $6}' $tmp` +						reset=`awk -F "," '{print $7}' $tmp`  					rm -f $tmp @@ -143,7 +155,7 @@ for port in 0 1 2 3 4 5 6 7 8 9; do  					#echo serialport "$serialport"  					if [ "$reset" == "1" ]; then -						echo "RESET MODEM" +						#echo "RESET MODEM"  						$usbreset "$vid:$pid" >/dev/null  					fi @@ -161,12 +173,20 @@ for port in 0 1 2 3 4 5 6 7 8 9; do  						gcomscr_end  						gcomscr_run $dev  					fi +					 +					awk '1' $GCOM_OUT +					 +					echo "PORT:$dev" +					echo "VID:$vid" +					echo "PID:$pid" +					echo "UID:$uid" +					exit 0  				fi  			fi  		fi  	done  done -rm -f /tmp/modem3g.* +  exit 1 diff --git a/package/query3g/files/usr/bin/query3g b/package/query3g/files/usr/bin/query3g index 33cfe2379..da93c499e 100755 --- a/package/query3g/files/usr/bin/query3g +++ b/package/query3g/files/usr/bin/query3g @@ -1,42 +1,193 @@  #!/bin/sh +DATA_DIR=./data +GCOM=comgt +GCOM_MODEMDETECT="/usr/share/query3g.gcom" +MODEM_INFO="modemname.sh" +RETURN_APN=$DATA_DIR/apnprovider +usbreset=/usr/bin/usbreset +GCOM_CMD="/tmp/cmds.gcom" +GCOM_OUT="/tmp/gcom.out" -reset=/usr/bin/usbreset -comgt=/usr/bin/gcom -script=/usr/share/query3g.gcom +detect_model() +{ +	#$1 device +	#$2 script +	$GCOM -d $1 -s $2 >> $GCOM_OUT +} -last_reset="x" +modem_info() +{ +	$MODEM_INFO "$1" $2 +} -wan_proto="$(uci -q get network.wan.proto)" +gcomscr_start() +{ +	rm $GCOM_CMD +	echo "opengt + set com 115200n81 + set comecho off + set senddelay 0.02 + waitquiet 0.2 0.2 -if [ "$wan_proto" = "3g" ]; then -	ifdown wan -fi + send \"AT^m\" + waitfor 1 \"OK\",\"ERROR\" " >> $GCOM_CMD  +  +} -for port in 0 1 2 3 4 5 6 7 8 9; do -	for tty in $(find /sys/devices/ -name "ttyUSB$port" -type d | sort -u); do -		[ -f "$tty/../../idProduct" ] || continue +gcomscr_add_cmd() +{ +	echo " + let \$c=\"$1^m\" + gosub readatcmdnr +" >> $GCOM_CMD +} + +gcomscr_end() +{ +	echo -e " + exit 0 +  +:readatcmdnr + let i=10 + send \$c +:loop3 + get 1 \"^m\" \$s + if len(\$s) < 2 goto loop5 + if \$mid(\$s,1,2) = \"ER\" goto loop4 + if \$mid(\$s,1,2) = \"OK\" goto loop5 + if \$mid(\$s,1,2) = \"AT\" goto loop5 + if \$mid(\$s,1,2) = \"TE\" goto loop5 + if \$mid(\$s,1,1) = \"+\"  goto loop5 + if \$mid(\$s,1,1) = \"\^\"  goto loop5 + let l=len(\$s) + let \$s=\$mid(\$s,1,l) + return -		local dir="$(cd "$tty/../.."; pwd)" -		local uid="$(basename "$dir")" -		local dev="/dev/$(basename "$tty")" -		local vid="$(cat "$tty/../../idVendor")" -		local pid="$(cat "$tty/../../idProduct")" +:loop4 + let \$s=\"\" + return -		if [ "$last_reset" != "$vid:$pid" ] && [ "$vid:$pid" != "0685:7000" ]; then -			last_reset="$vid:$pid" -#			$reset "$vid:$pid" >/dev/null +:loop5 + if i = 0 return + let i=i-1 + sleep 0.25 + goto loop3 + " >> $GCOM_CMD +} -			local try=0 -			while [ $((try++)) -lt 5 ] && [ ! -e "$dev" ]; do sleep 1; done  +gcomscr_run() +{ +	$GCOM -d $1 $GCOM_CMD +} + +rm -f /tmp/modem3g.* +rm -f $GCOM_OUT +rm -f $GCOM_CMD + +skip_cycles=0 +skip_passed=0 +known_modems="" +for port in 0 1 2 3 4 5 6 7 8 9; do +	for tty in $(find /sys/devices/ -name "ttyUSB$port" -type d | sort -u); do +		[ -f "$tty/../../idProduct" ] || continue +		if [ $skip_cycles -gt 0 ]; then +			skip_cycles=$((skip_cycles-1)) +			skip_passed=1 +			continue +		fi +		dir="$(cd "$tty/../.."; pwd)" +		uid="$(basename "$dir")" +		dev="/dev/$(basename "$tty")" +		vid="$(cat "$tty/../../idVendor")" +		pid="$(cat "$tty/../../idProduct")" +		#echo $dir +		#echo $uid +		#echo "PORT:"$dev +		#echo $vid":"$pid +		 +		$GCOM -d $dev -s $GCOM_MODEMDETECT > $GCOM_OUT +		model=$( echo `awk -F ':' '{if ($1=="DEVICE") {gsub(/^ */,"",$2);l_a=split($2,a," ");print a[l_a]}}' $GCOM_OUT | tr '[A-Z]' '[a-z]'` ) +		serialnum=$( echo `awk -F ':' '{if ($1=="SERIAL") {gsub(/^ */,"",$2);print $2}}' $GCOM_OUT` ) +		manuf=$(echo `awk -F ':' '{if ($1=="DEVICE") {gsub(/^ */,"",$2);l_a=split($2,a," ");r="";for(i=1;i<l_a;i++)r=r""a[i]" ";gsub(/[[:space:]]*/,"",r); print r}}' $GCOM_OUT | tr '[A-Z]' '[a-z]'`) +		 +		if [ "$model" != "" ] && [ "$manuf" != "" ]; then +			manuf="${manuf//[[:space:]]/}" +			#echo "DEVICE:["$manuf"] ["$model"]" +			#echo "IMEI:"$serialnum +		fi +		 +		FILE="/tmp/modem3g.$serialnum" +		#echo "FILE:"$FILE +		if [ -f $FILE ]; then +			found=1 +		else +			found=0  		fi -		if $comgt -s "$script" -d "$dev" 2>/dev/null; then -			echo "PORT:$dev" -			echo "VID:$vid" -			echo "PID:$pid" -			echo "UID:$uid" -			exit 0 +		if [ "$model" != "" ] && \ +			[ "$manuf" != "" ]; then +			if [ $found -eq 0 ]; then +				touch /tmp/modem3g.$serialnum +				manuf="${manuf//[[:space:]]/}" +				#echo "$manuf" $model +				ret=$(modem_info "$manuf" $model) +				reti="$?" +				#echo "modem_info == "$ret +				#echo "reti"$reti +				if [ "$reti" == "0" ];then +					#echo "FOUND 3G MODEM "$model" "$manuf"?" +					#echo "ret="$ret +					 +					 +					tmp="/tmp/tmp.txt" +						echo "$ret" >> $tmp +						usbid=`awk -F "," '{print $1}' $tmp` +						serialportnum=`awk -F "," '{print $4}' $tmp` +						serialport=`awk -F "," '{print $5}' $tmp` +						cmds=`awk -F "," '{print $6}' $tmp` +						reset=`awk -F "," '{print $7}' $tmp` +					rm -f $tmp +					 +					 +					 +					#echo usbid "$usbid" +					#echo serialportnum "$serialportnum" +					#echo serialport "$serialport" +					 +					if [ "$reset" == "1" ]; then +						#echo "RESET MODEM" +						$usbreset "$vid:$pid" >/dev/null +					fi +					 +					#echo "cmds="$cmds +					if [ "$cmds" != "" ]; then +						 +						gcomscr_start +						old_ifs="$IFS" +						IFS=$';' +						for cmd in $cmds; do +							#echo "CMD : "$cmd +							gcomscr_add_cmd $cmd +						done +						IFS="$old_ifs" +						gcomscr_end +						gcomscr_run $dev +					fi +					 +					awk '1' $GCOM_OUT +					 +					echo "PORT:$dev" +					echo "VID:$vid" +					echo "PID:$pid" +					echo "UID:$uid" +					exit 0 +				fi +			fi  		fi  	done  done + +  exit 1 + + | 
