From 4ed5985ada0f0420d69d7d959ecc3c9c8515efa0 Mon Sep 17 00:00:00 2001
From: Artur Artamonov <freeartman@wechall.net>
Date: Wed, 24 Jul 2013 22:49:24 +0300
Subject: query3g fixed apnprovider output, added apnprovider option(when web
 part will ready uncomment it)

---
 package/query3g/files/usr/bin/3gdetect.sh | 193 ------------------------------
 package/query3g/files/usr/bin/query3g     |  13 +-
 package/query3g/src/apnprovider.c         |  25 ++--
 3 files changed, 30 insertions(+), 201 deletions(-)
 delete mode 100644 package/query3g/files/usr/bin/3gdetect.sh

(limited to 'package/query3g')

diff --git a/package/query3g/files/usr/bin/3gdetect.sh b/package/query3g/files/usr/bin/3gdetect.sh
deleted file mode 100644
index da93c499e..000000000
--- a/package/query3g/files/usr/bin/3gdetect.sh
+++ /dev/null
@@ -1,193 +0,0 @@
-#!/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"
-
-detect_model()
-{
-	#$1 device
-	#$2 script
-	$GCOM -d $1 -s $2 >> $GCOM_OUT
-}
-
-modem_info()
-{
-	$MODEM_INFO "$1" $2
-}
-
-gcomscr_start()
-{
-	rm $GCOM_CMD
-	echo "opengt
- set com 115200n81
- set comecho off
- set senddelay 0.02
- waitquiet 0.2 0.2
-
- send \"AT^m\"
- waitfor 1 \"OK\",\"ERROR\" " >> $GCOM_CMD 
- 
-}
-
-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
-
-:loop4
- let \$s=\"\"
- return
-
-:loop5
- if i = 0 return
- let i=i-1
- sleep 0.25
- goto loop3
- " >> $GCOM_CMD
-}
-
-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 [ "$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
-
-
diff --git a/package/query3g/files/usr/bin/query3g b/package/query3g/files/usr/bin/query3g
index da93c499e..e8948622e 100755
--- a/package/query3g/files/usr/bin/query3g
+++ b/package/query3g/files/usr/bin/query3g
@@ -7,6 +7,7 @@ RETURN_APN=$DATA_DIR/apnprovider
 usbreset=/usr/bin/usbreset
 GCOM_CMD="/tmp/cmds.gcom"
 GCOM_OUT="/tmp/gcom.out"
+APN_CNVRT="apnprovider"
 
 detect_model()
 {
@@ -81,7 +82,7 @@ gcomscr_run()
 }
 
 rm -f /tmp/modem3g.*
-rm -f $GCOM_OUT
+rm -f $GCOM_OUT*
 rm -f $GCOM_CMD
 
 skip_cycles=0
@@ -106,10 +107,20 @@ for port in 0 1 2 3 4 5 6 7 8 9; do
 		#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]'`)
 		
+		#apn=$(echo `awk -F':' '{if ($1=="+COPS"){l_s=split($2,s,"\"");if(length(s[2])==5){print s[2];}}}' $GCOM_OUT`)
+		#ret="$($APN_CNVRT $apn)"
+		#if [ "$?" == "0" ]; then
+		#	apn_fullname=$(echo "$ret" | cut -d',' -f4 | tr -d ' ')
+		#	ret=$(echo -e "awk '{gsub(/$apn/,\"$apn_fullname\");print}' $GCOM_OUT")
+		#	eval $ret > $GCOM_OUT.p
+		#	mv $GCOM_OUT.p $GCOM_OUT
+		#fi
+		
 		if [ "$model" != "" ] && [ "$manuf" != "" ]; then
 			manuf="${manuf//[[:space:]]/}"
 			#echo "DEVICE:["$manuf"] ["$model"]"
diff --git a/package/query3g/src/apnprovider.c b/package/query3g/src/apnprovider.c
index c5f812073..88b625f4c 100644
--- a/package/query3g/src/apnprovider.c
+++ b/package/query3g/src/apnprovider.c
@@ -9,6 +9,7 @@
 int main( int argc, char **argv )
 {
 	int ret=0;
+	int i,j,k;
 	int cnt_apn=0;
 	if ( argc != 2 )
 	{
@@ -29,7 +30,6 @@ int main( int argc, char **argv )
 	memcpy( mnc, apnnumber+3 , 2 );
 	mnc[2] = 0;
 	
-	int i;
 	struct json_object *jo = json_object_from_file( FNAME );
 	if ( jo == NULL )
 	{
@@ -60,6 +60,9 @@ int main( int argc, char **argv )
 		struct json_object *jmnc = json_object_object_get( obj, "mnc" );
 		struct json_object *jname = json_object_object_get( obj, "name" );
 		struct json_object *jfullname = json_object_object_get( obj, "fullname" );
+		struct json_object *jstatus = json_object_object_get( obj, "status" );
+		struct json_object *jgsmband = json_object_object_get( obj, "gsmband" );
+		struct json_object *jarr[] = { jmcc, jmnc, jname, jfullname, jstatus, jgsmband };
 		if ( (jmcc != NULL) && (jmnc != NULL) && ( (jname != NULL) || (jfullname != NULL) ) )
 		{
 			const char *tmp_mcc = json_object_to_json_string( jmcc );
@@ -72,12 +75,20 @@ int main( int argc, char **argv )
 			{
 				continue;
 			}
-			printf("%s ", tmp_mcc );
-			printf("%s ", tmp_mnc );
-			if ( jname != NULL )
-				printf("%s ", json_object_to_json_string( jname ) );
-			if ( jfullname != NULL )
-				printf("%s ", json_object_to_json_string( jfullname ) );
+			for (j=0; j<6; j++,(j<6)?printf(","):0)
+			{
+				if ( jarr[j] != NULL )
+				{
+					const char *str = json_object_to_json_string( jarr[j] );
+					k=1;
+					while (str[k+1]!=0x0)
+					{
+						if (str[k] != '\\')
+							putc(str[k],stdout);
+						k++;
+					}
+				}
+			}
 			printf("\n");
 			cnt_apn++;
 		}
-- 
cgit v1.2.3