All pastes #37683 Raw Edit

Something

public text v1 · immutable
#37683 ·published 2006-01-20 22:11 UTC
rendered paste body
!  Motorola 3G
!
!	Author:	Ross Barkman
!
!	History:
!		06 Apr 01	First release of base GPRS script
!		17 Jun 01	Allow APN to be set to 'None'
!		13 Mar 02	Add buffer flush before dialling
!		17 Apr 04	Add APN Check, 3 initial retries, other small improvements
!					Configure for 3G
!
!  '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
!
note "Motorola 3G CID1" 1
!
!
!	Check APN
!
!	Common mistake: using *99 instead of APN
!
ifstr 1 110 "*99#"
ifstr 1 110 "*99***1#"
ifstr 1 110 "*99***2#"
ifstr 1 110 "*99***3#"
ifstr 1 110 "*99***4#"
ifstr 1 110 "*99***5#"
ifstr 1 110 "*99***5#"
!
!
! ---- Modem setup ----
!
! Set serial port speed 460800, all interface signals off
! 
serreset 460800, 0, 8, 1
hsreset 0 0 0 0 0 0
settries 0
!
!
@LABEL 1
!
! Check the phone is responding
!
matchclr
matchstr 1 2 "OK\13\10"
write "AT\13"
matchread 30
inctries
iftries 3 101
jsr 9
jump 1
!
!
@LABEL 2
!
! Check the phone is a Motorola
!
matchclr
matchstr 1 3  "Motorola"
write "AT+CGMI\13"
matchread 60
jump 109
!
!
@LABEL 3
!
! Configure the phone; detach from network
!
matchclr
matchstr 1 5   "OK\13\10"
matchstr 2 101 "ERROR\13\10"
write "AT&F0&D2&C1E0V1W1S95=47;+CGATT=0\13"
matchread 30
inctries
iftries 3 101
jsr 9
jump 3
!
!
@LABEL 5
!
! Main setup done, prepare for additional setup
!
pause 20
settries 0
!
!
@LABEL 6
!
! Set additional options
!
matchclr
matchstr 1 10  "OK\13\10"
matchstr 2 108 "ERROR\13\10"
!
! Check Access Point Name stored in dialstring (VarString 1)
! If APN is set to None, ignore it
!
ifstr 1 7 "None"
ifstr 1 7 "none"
ifstr 1 7 "NONE"
!
!	 
!	Set APN using +CGDCONT=1,"IP","<APN>"
!
write "AT+CGDCONT=1,\34IP\34,\34^1\34\13"
jump 8
!
!
@LABEL 7
!
!	No APN
!
write "AT\13"
!
!
@LABEL 8
!
!	Check response
!
matchread 60
inctries
iftries 3 101
jump 6
!
!
@LABEL 9
!
! Subroutine: Attempt to reset the phone
!
DTRClear
pause 5
DTRSet
flush
return
!
!
@LABEL 10
!
! Setup complete
!
ifANSWER 32
!
!
! ---- Place a call ----
!
@LABEL 20
!
!
flush
pause 5
note "Making 3G network connection" 3
write "ATD*99***1#\13"
!
!
! ---- Connect response ----
!
! Parses successful connect responses in the following format:
!   CARRIER xxxxx
!	PROTOCOL: ppp
!	COMPRESSION: ccc
!   CONNECT zzzzz
!
@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"
matchstr 17 56 "460800"
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 56
note "Communicating at 460800 bps." 2
CommunicatingAt 460800
jump 60
!
@LABEL 59
note "Communicating at an unknown rate." 2
!
@LABEL 60
jump 70
!
! -- PROTOCOL parsing --
!
! Userhook 2 informs ARA that a modem-to-modem error
! correcting protocol has been negotiated
!
@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 --
!
! Userhook 3 informs ARA that a modem-to-modem compression
! protocol has been negotiated
!
@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 ----
!
!	A RING result from the modem and in ANSWERING mode
!	claims the serial port and answering the phone
!
@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 "ATZ\13"
matchread 30
jump 101
!
@LABEL 99
DTRClear
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 "The phone or network does not seem to support the GPRS options required for this script"
!
@LABEL 109
exit -6002 "This script is only suitable for Motorola mobile phones"
!
@LABEL 110
exit -6002 "DO NOT put *99... in the telephone number - use the Access Point Name (APN) for your network instead"