! 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=1,\34IP\34,\34wap.cingular\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***1#\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." !