!  Generic GPRS 57600 Serial!!  'mlts' resource info:!    byte 1 == 01 -> modem HAS built-in error correction protocols!    byte 2 == 01 -> modem HAS built-in data compression protocols!    byte 3 == 200 -> max number of chars in varstr 7!    byte 4 == 200 -> max number of chars in varstr 8!    byte 5 == 200 -> max number of chars in varstr 9!	@ORIGINATE@ANSWER!@LABEL 1!! Set serial port speed 57600, all interface signals off! serreset 57600, 0, 8, 1hsreset 0 0 0 0 0 0settries 0!matchclrmatchstr 1 2 "OK\13\10"write "AT\13"matchread 30jump 101!@LABEL 2!@LABEL 3!! Configure the phone!matchclrmatchstr 1 5   "OK\13\10"matchstr 2 101 "ERROR\13\10"write "AT&FE0V1&C1S0=0\13"matchread 30inctriesiftries 3 101jsr 9jump 3!@LABEL 5pause 20settries 0!@LABEL 6!! Set additional options!matchclrmatchstr 1 10  "OK\13\10"matchstr 2 108 "ERROR\13\10"!write "AT+CGDCONT=2,\34IP\34,\34internet2.voicestream.com\34,,0,0\13"
!@LABEL 8matchread 60inctriesiftries 3 101jsr 9jump 6!@LABEL 9!! Attempt to reset the phone!DTRClearpause 5DTRSetflushreturn!@LABEL 10!! Setup complete!ifANSWER 32!!! ---- Place a call ----!@LABEL 20!!note "Making GPRS connection" 3write "ATD*99***2#\13"
!!! ---- Connect response ----
!@LABEL 32matchclrmatchstr  1 81  "RING\13\10"matchstr  2 102 "NO DIALTONE\13\10"matchstr  3 103 "NO CARRIER"matchstr  4 103 "ERROR\13\10"matchstr  5 104 "BUSY\13\10"matchstr  6 105 "NO ANSWER\13\10"matchstr  7 34  "CARRIER"matchstr  8 34  "CONNECT"matchstr  9 61  "PROTOCOL"matchstr 10 66  "COMPRESSION"matchread 700ifANSWER 32jump 105!!!  CARRIER/CONNECT parsing!@LABEL 34!!    2400 and 4800 have three entries each!    to distinguish them from 24000 and 48000!matchclrmatchstr  1 40 "2400\13"matchstr  2 40 "2400/"matchstr  3 40 "2400 "matchstr  4 41 "4800\13"matchstr  5 41 "4800/"matchstr  6 41 "4800 "matchstr  7 42 "7200"matchstr  8 43 "9600"matchstr  9 44 "12000"matchstr 10 45 "14400"matchstr 11 46 "19200"matchstr 12 51 "28800"matchstr 13 52 "38400"matchstr 14 53 "57600"matchstr 15 54 "115200"matchstr 16 54 "115,200"matchstr 17 55 "230400"matchread 10jump 59!! -- Connection rates --!! CommunicatingAt informs ARA of the link speed!@LABEL 40note "Communicating at 2400 bps." 2CommunicatingAt 2400jump 60!@LABEL 41note "Communicating at 4800 bps." 2CommunicatingAt 4800jump 60!@LABEL 42note "Communicating at 7200 bps." 2CommunicatingAt 7200jump 60!@LABEL 43note "Communicating at 9600 bps." 2CommunicatingAt 9600jump 60!@LABEL 44note "Communicating at 12400 bps." 2CommunicatingAt 12400jump 60!@LABEL 45note "Communicating at 14400 bps." 2CommunicatingAt 14400jump 60!@LABEL 46note "Communicating at 19200 bps." 2CommunicatingAt 19200jump 60!@LABEL 51note "Communicating at 28800 bps." 2CommunicatingAt 28800jump 60!@LABEL 52note "Communicating at 38400 bps." 2CommunicatingAt 38400jump 60!@LABEL 53note "Communicating at 57600 bps." 2CommunicatingAt 57600jump 60!@LABEL 54note "Communicating at 115200 bps." 2CommunicatingAt 115200jump 60!@LABEL 55note "Communicating at 230400 bps." 2CommunicatingAt 230400jump 60!@LABEL 59note "Communicating at an unknown rate." 2!@LABEL 60jump 70!! -- PROTOCOL parsing --!@LABEL 61matchclrmatchstr  1 63 "NONE"matchstr  2 62 "LAPM"matchstr  3 62 "ALT"matchstr  4 63 "\13"matchread 10jump 63!@LABEL 62note "Modem Reliable Link Established." 2userhook 2!@LABEL 63jump 32!! -- COMPRESSION parsing --!@LABEL 66matchclrmatchstr  1 68 "NONE"matchstr  2 67 "V42B"matchstr  3 67 "MNP5"matchstr  4 68 "\13"matchread 10jump 68!@LABEL 67note "Modem Compression Established." 2userhook 3!@LABEL 68jump 32!!! -- Normal exit after "CONNECT" --!!@LABEL 70!! Turn CTS on, for hardware flow control!HSReset 0 1 0 0 0 0!ifANSWER 71pause 30!@LABEL 71exit 0!!! ---- Answer calls ----!@LABEL 81ifORIGINATE 32userhook 1note "Answering phone..." 2write "ATA\13"jump 32!!! ---- Hang up and reset modem ----!@HANGUP@LABEL 90settries 0HSReset 0 0 0 0 0 0!@LABEL 92!!  Escape from data to command mode!matchclrmatchstr 1 94 "OK\13\10"pause 11write "+++"matchread 20!@LABEL 94!! Send hangup command!pause 10matchclrmatchstr 1 98 "NO CARRIER\13\10"matchstr 2 98 "OK\13\10"matchstr 3 98 "ERROR\13\10"matchstr 4 98 "0\13\10"write "ATH0\13"matchread 30! ! If that fails, toggle DTR!DTRClearpause 5DTRSetflush!! Try this three times only!inctriesiftries 3 101jump 92!!@LABEL 98!! Reset phone to default settings!pause 10matchclrmatchstr 1 99 "OK\13\10"write "AT&F\13"matchread 30jump 101!@LABEL 99exit 0!! ---- Error messages -----!! Modem Not Responding@LABEL 101exit -6019!! No Dial Tone@LABEL 102exit -6020!! No Carrier or Error@LABEL 103exit -6021!! Busy@LABEL 104exit -6022!! No Answer@LABEL 105exit -6023!! User Cancellation@LABEL 107exit -6008!@LABEL 108exit -6002 "Change your GPRS provider, it seems that it has a buggy PPP implementation."!