comgt: remove old network scripts
[openwrt/svn-archive/archive.git] / package / comgt / files / 3g.sh
diff --git a/package/comgt/files/3g.sh b/package/comgt/files/3g.sh
new file mode 100644 (file)
index 0000000..b5da54c
--- /dev/null
@@ -0,0 +1,90 @@
+#!/bin/sh
+INCLUDE_ONLY=1
+
+. ../netifd-proto.sh
+. ./ppp.sh
+init_proto "$@"
+
+proto_3g_init_config() {
+       no_device=1
+       available=1
+       ppp_generic_init_config
+       proto_config_add_string "device"
+       proto_config_add_string "apn"
+       proto_config_add_string "service"
+       proto_config_add_string "pincode"
+}
+
+proto_3g_setup() {
+       local interface="$1"
+       local chat
+
+       json_get_var device device
+       json_get_var apn apn
+       json_get_var service service
+       json_get_var pincode pincode
+
+       [ -e "$device" ] || {
+               proto_set_available "$interface" 0
+               return 1
+       }
+
+       case "$service" in
+               cdma|evdo)
+                       chat="/etc/chatscripts/evdo.chat"
+               ;;
+               *)
+                       chat="/etc/chatscripts/3g.chat"
+                       cardinfo=$(gcom -d "$device" -s /etc/gcom/getcardinfo.gcom)
+                       if echo "$cardinfo" | grep -q Novatel; then
+                               case "$service" in
+                                       umts_only) CODE=2;;
+                                       gprs_only) CODE=1;;
+                                       *) CODE=0;;
+                               esac
+                               export MODE="AT\$NWRAT=${CODE},2"
+                       elif echo "$cardinfo" | grep -q Option; then
+                               case "$service" in
+                                       umts_only) CODE=1;;
+                                       gprs_only) CODE=0;;
+                                       *) CODE=3;;
+                               esac
+                               export MODE="AT_OPSYS=${CODE}"
+                       elif echo "$cardinfo" | grep -q "Sierra Wireless"; then
+                               SIERRA=1
+                       fi
+
+                       if [ -n "$pincode" ]; then
+                               PINCODE="$pincode" gcom -d "$device" -s /etc/gcom/setpin.gcom || {
+                                       proto_notify_error "$interface" PIN_FAILED
+                                       proto_block_restart "$interface"
+                                       return 1
+                               }
+                       fi
+                       [ -n "$MODE" ] && gcom -d "$device" -s /etc/gcom/setmode.gcom
+
+                       # wait for carrier to avoid firmware stability bugs
+                       [ -n "$SIERRA" ] && {
+                               gcom -d "$device" -s /etc/gcom/getcarrier.gcom || return 1
+                       }
+               ;;
+       esac
+
+       connect="${apn:+USE_APN=$apn }/usr/sbin/chat -t5 -v -E -f $chat"
+       ppp_generic_setup "$interface" \
+               noaccomp \
+               nopcomp \
+               novj \
+               nobsdcomp \
+               noauth \
+               lock \
+               crtscts \
+               115200 "$device"
+       return 0
+}
+
+proto_3g_teardown() {
+       proto_kill_command "$interface"
+}
+
+add_protocol 3g