Author: blogic Date: 2014-09-16 20:34:44 +0200 (Tue, 16 Sep 2014) New Revision: 42577
Added: branches/barrier_breaker/package/network/utils/comgt/files/directip-stop.gcom branches/barrier_breaker/package/network/utils/comgt/files/directip.gcom branches/barrier_breaker/package/network/utils/comgt/files/directip.sh Modified: branches/barrier_breaker/package/network/utils/comgt/Makefile Log: comgt: add directip proto add a proto handler for sierra wireless directip modems Signed-off-by: John Crispin <[email protected]> Backport of r42465 Modified: branches/barrier_breaker/package/network/utils/comgt/Makefile =================================================================== --- branches/barrier_breaker/package/network/utils/comgt/Makefile 2014-09-16 16:46:20 UTC (rev 42576) +++ branches/barrier_breaker/package/network/utils/comgt/Makefile 2014-09-16 18:34:44 UTC (rev 42577) @@ -9,7 +9,7 @@ PKG_NAME:=comgt PKG_VERSION:=0.32 -PKG_RELEASE:=22 +PKG_RELEASE:=23 PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tgz PKG_SOURCE_URL:=@SF/comgt @@ -59,10 +59,13 @@ $(INSTALL_DATA) ./files/getcarrier.gcom $(1)/etc/gcom/getcarrier.gcom $(INSTALL_DATA) ./files/getcnum.gcom $(1)/etc/gcom/getcnum.gcom $(INSTALL_DATA) ./files/getimsi.gcom $(1)/etc/gcom/getimsi.gcom + $(INSTALL_DATA) ./files/directip.gcom $(1)/etc/gcom/directip.gcom + $(INSTALL_DATA) ./files/directip-stop.gcom $(1)/etc/gcom/directip-stop.gcom $(INSTALL_DIR) $(1)/etc/hotplug.d/tty $(INSTALL_DATA) ./files/3g.usb $(1)/etc/hotplug.d/tty/30-3g $(INSTALL_DIR) $(1)/lib/netifd/proto $(INSTALL_BIN) ./files/3g.sh $(1)/lib/netifd/proto/3g.sh + $(INSTALL_BIN) ./files/directip.sh $(1)/lib/netifd/proto/directip.sh endef $(eval $(call BuildPackage,comgt)) Added: branches/barrier_breaker/package/network/utils/comgt/files/directip-stop.gcom =================================================================== --- branches/barrier_breaker/package/network/utils/comgt/files/directip-stop.gcom (rev 0) +++ branches/barrier_breaker/package/network/utils/comgt/files/directip-stop.gcom 2014-09-16 18:34:44 UTC (rev 42577) @@ -0,0 +1,16 @@ +opengt +set com 115200n81 +set comecho off +set senddelay 0.05 +waitquiet 1 0.2 + +:start + send "AT!SCACT=0,3^m" + waitfor 5 "OK" + if % = 0 goto hangupok + print "WWAN error. Hangup failed.\r\n" + exit 1 + +:hangupok + print "WWAN connection established.\r\n" + exit 0 Added: branches/barrier_breaker/package/network/utils/comgt/files/directip.gcom =================================================================== --- branches/barrier_breaker/package/network/utils/comgt/files/directip.gcom (rev 0) +++ branches/barrier_breaker/package/network/utils/comgt/files/directip.gcom 2014-09-16 18:34:44 UTC (rev 42577) @@ -0,0 +1,55 @@ +opengt +set com 115200n81 +set comecho off +set senddelay 0.05 +waitquiet 1 0.2 + +:start + if $env("USE_AUTH") = "0" goto connect + send "AT$QCPDPP=3," + send $env("USE_AUTH") + send ",\"" + if $env("USE_USER") <> "" send $env("USE_USER") + send "\",\"" + if $env("USE_PASS") <> "" send $env("USE_PASS") + send "\"^m" + waitfor 5 "OK" + if % = 0 goto connect + print "WWAN error. Auth failed.\r\n" + exit 1 + +:connect + send "AT+CFUN=1^m" + send "AT+CGDCONT=3,\"IP\",\"" + send $env("USE_APN") + send "\"^m" + waitfor 5 "OK" + if % = 0 goto connok + print "WWAN error. Connection failed.\r\n" + exit 1 + +:connok + let c=1 +:loop + sleep 2 + send "AT+CGATT?^m" + waitfor 5 "+CGATT: 1" + if % = 0 goto carrierok + if c > 10 goto carriererr + inc c + goto loop + +carriererr: + print "WWAN error. No carrier.\r\n" + exit 1 + +:carrierok + send "AT!SCACT=1,3^m" + waitfor 5 "OK" + if % = 0 goto dialok + print "WWAN error. Dialing failed.\r\n" + exit 1 + +:dialok + print "WWAN connection established.\r\n" + exit 0 Added: branches/barrier_breaker/package/network/utils/comgt/files/directip.sh =================================================================== --- branches/barrier_breaker/package/network/utils/comgt/files/directip.sh (rev 0) +++ branches/barrier_breaker/package/network/utils/comgt/files/directip.sh 2014-09-16 18:34:44 UTC (rev 42577) @@ -0,0 +1,92 @@ +#!/bin/sh + +. /lib/functions.sh +. ../netifd-proto.sh +init_proto "$@" + +proto_directip_init_config() { + available=1 + proto_config_add_string "device:device" + proto_config_add_string "ifname" + proto_config_add_string "apn" + proto_config_add_string "pincode" + proto_config_add_string "auth" + proto_config_add_string "username" + proto_config_add_string "password" +} + +proto_directip_setup() { + local interface="$1" + local chat + + local device apn pincode ifname auth username password + json_get_vars device apn pincode ifname auth username password + + [ -e "$device" ] || { + proto_notify_error "$interface" NO_DEVICE + proto_set_available "$interface" 0 + return 1 + } + + [ -n "$ifname" ] || { + proto_notify_error "$interface" NO_IFNAME + proto_set_available "$interface" 0 + return 1 + } + + cardinfo=$(gcom -d "$device" -s /etc/gcom/getcardinfo.gcom) + [ -n $(echo "$cardinfo" | grep -q "Sierra Wireless") ] || { + proto_notify_error "$interface" BAD_DEVICE + proto_block_restart "$interface" + return 1 + } + + 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 + # wait for carrier to avoid firmware stability bugs + gcom -d "$device" -s /etc/gcom/getcarrier.gcom || return 1 + + local auth_type=0 + [ -z "$auth" ] && case $auth in + pap) auth_type=1;; + chap) auth_type=1;; + esac + + USE_APN="$apn" USE_USER="$username" USE_PASS="$password" USE_AUTH="$auth_type" \ + gcom -d "$device" -s /etc/gcom/directip.gcom || { + proto_notify_error "$interface" CONNECT_FAILED + proto_block_restart "$interface" + return 1 + } + + logger -p daemon.info -t "directip[$$]" "Connected, starting DHCP" + proto_init_update "*" 1 + proto_send_update "$interface" + + json_init + json_add_string name "${interface}_dhcp" + json_add_string ifname "@$interface" + json_add_string proto "dhcp" + ubus call network add_dynamic "$(json_dump)" + + return 0 +} + +proto_directip_teardown() { + local interface="$1" + + local device + json_get_vars device + + gcom -d "$device" -s /etc/gcom/directip-stop.gcom || proto_notify_error "$interface" CONNECT_FAILED + + proto_init_update "*" 0 + proto_send_update "$interface" +} + +add_protocol directip _______________________________________________ openwrt-commits mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits
