opengt set com 115200n81 set comecho off set senddelay 0.02 waitquiet 0.2 0.2 send "AT\^CURC=0^m" waitfor 5 "OK","ERROR" let $c="AT+CGMI^m" gosub readatcmdnr let $v=$s if $toupper($mid($v,0,3)) = "ZTE" goto zte if $toupper($mid($v,0,3)) = "OPT" goto option if $toupper($mid($v,0,3)) = "SIE" goto sierra if $toupper($mid($v,0,3)) = "NOV" goto novatel if $toupper($mid($v,0,3)) = "HUA" goto huawei if $toupper($mid($v,0,3)) = "VOD" goto vodafone if $toupper($mid($v,0,3)) = "NOK" goto vodafone if $toupper($mid($v,0,4)) = "HSPA" goto ccrap goto generic :signal-generic let $c="AT+CSQ^m" let $r="+CSQ" gosub readatcmd return :cpin-generic let $c="AT+CPIN?^m" let $r="+CPIN" gosub readatcmd return :cpin-qualcomm let $c="AT$QCPINSTAT?^m" let $r="$QCPINSTAT" gosub readatcmd return :ccrap gosub cpin-qualcomm goto generic :vodafone gosub cpin-generic gosub signal-generic let $c="AT%NWSTATE=1^m" let $r="%NWSTATE" gosub readatcmd goto next :novatel gosub cpin-generic gosub signal-generic let $c="AT$CNTI=0^m" let $r="$CNTI" gosub readatcmd goto next :sierra gosub cpin-generic gosub signal-generic let $c="AT*CNTI=0^m" let $r="*CNTI" gosub readatcmd goto next :option gosub cpin-generic gosub signal-generic let $c="AT_OCTI?^m" let $r="_OCTI" gosub readatcmd let $c="AT_OWCTI?^m" let $r="_OWCTI" gosub readatcmd goto next :zte gosub cpin-generic gosub signal-generic let $c="AT+COPS?^m" let $r="+COPS" gosub readatcmd let $c="AT+ZPAS?^m" let $r="+ZPAS" gosub readatcmd goto next1 :huawei gosub cpin-generic gosub signal-generic let $c="AT\^SYSINFOEX^m" let $r="\^SYSINFOEX" gosub readatcmd goto next :generic gosub cpin-generic gosub signal-generic let $c="AT\^SYSINFO^m" let $r="\^SYSINFO" gosub readatcmd :next let $c="AT+COPS=3,2; +COPS?^m" let $r="+COPS" gosub readatcmd :next1 let $c="AT+CREG=2; +CREG?^m" let $r="+CREG" gosub readatcmd let $c="AT+CGREG=2; +CGREG?^m" let $r="+CGREG" gosub readatcmd let $c="AT+CGEQNEG=1^m" let $r="+CGEQNEG" gosub readatcmd let $c="ATE1; +CGMM^m" gosub readatcmdnr print "\nDEVICE:",$v," ",$s,"\n" exit 0 :readatcmd let i=5 send $c :loop get 1 "^m" $s let l=len($r) if len($s) < l goto loop1 if $mid($s,1,l) <> $r goto loop1 print $s return :loop1 if len($s) < 2 goto loop2 if $mid($s,1,2) = "ER" return if $mid($s,1,2) = "CO" return :loop2 if i = 0 return let i=i-1 sleep 0.25 goto loop :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