comgt: fix misplaced : in directip setup script
[oweals/openwrt.git] / package / network / utils / comgt / files / 3g.sh
1 #!/bin/sh
2 INCLUDE_ONLY=1
3
4 . ../netifd-proto.sh
5 . ./ppp.sh
6 init_proto "$@"
7
8 proto_3g_init_config() {
9         no_device=1
10         available=1
11         ppp_generic_init_config
12         proto_config_add_string "device:device"
13         proto_config_add_string "apn"
14         proto_config_add_string "service"
15         proto_config_add_string "pincode"
16         proto_config_add_string "dialnumber"
17 }
18
19 proto_3g_setup() {
20         local interface="$1"
21         local chat
22
23         json_get_var device device
24         json_get_var apn apn
25         json_get_var service service
26         json_get_var pincode pincode
27         json_get_var dialnumber dialnumber
28
29         [ -e "$device" ] || {
30                 proto_set_available "$interface" 0
31                 return 1
32         }
33
34         case "$service" in
35                 cdma|evdo)
36                         chat="/etc/chatscripts/evdo.chat"
37                 ;;
38                 *)
39                         chat="/etc/chatscripts/3g.chat"
40                         cardinfo=$(gcom -d "$device" -s /etc/gcom/getcardinfo.gcom)
41                         if echo "$cardinfo" | grep -q Novatel; then
42                                 case "$service" in
43                                         umts_only) CODE=2;;
44                                         gprs_only) CODE=1;;
45                                         *) CODE=0;;
46                                 esac
47                                 export MODE="AT\$NWRAT=${CODE},2"
48                         elif echo "$cardinfo" | grep -q Option; then
49                                 case "$service" in
50                                         umts_only) CODE=1;;
51                                         gprs_only) CODE=0;;
52                                         *) CODE=3;;
53                                 esac
54                                 export MODE="AT_OPSYS=${CODE}"
55                         elif echo "$cardinfo" | grep -q "Sierra Wireless"; then
56                                 SIERRA=1
57                         elif echo "$cardinfo" | grep -qi huawei; then
58                                 case "$service" in
59                                         umts_only) CODE="14,2";;
60                                         gprs_only) CODE="13,1";;
61                                         *) CODE="2,2";;
62                                 esac
63                                 export MODE="AT^SYSCFG=${CODE},3FFFFFFF,2,4"
64                         fi
65
66                         if [ -n "$pincode" ]; then
67                                 PINCODE="$pincode" gcom -d "$device" -s /etc/gcom/setpin.gcom || {
68                                         proto_notify_error "$interface" PIN_FAILED
69                                         proto_block_restart "$interface"
70                                         return 1
71                                 }
72                         fi
73                         [ -n "$MODE" ] && gcom -d "$device" -s /etc/gcom/setmode.gcom
74
75                         # wait for carrier to avoid firmware stability bugs
76                         [ -n "$SIERRA" ] && {
77                                 gcom -d "$device" -s /etc/gcom/getcarrier.gcom || return 1
78                         }
79
80                         if [ -z "$dialnumber" ]; then
81                                 dialnumber="*99***1#"
82                         fi
83
84                 ;;
85         esac
86
87         connect="${apn:+USE_APN=$apn }DIALNUMBER=$dialnumber /usr/sbin/chat -t5 -v -E -f $chat"
88         ppp_generic_setup "$interface" \
89                 noaccomp \
90                 nopcomp \
91                 novj \
92                 nobsdcomp \
93                 noauth \
94                 lock \
95                 crtscts \
96                 115200 "$device"
97         return 0
98 }
99
100 proto_3g_teardown() {
101         proto_kill_command "$interface"
102 }
103
104 add_protocol 3g