aboutsummaryrefslogtreecommitdiffstats
path: root/package/comgt
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2011-10-27 20:29:00 +0000
committerFelix Fietkau <nbd@openwrt.org>2011-10-27 20:29:00 +0000
commitd624e7ea5dfceb99fc43cd9be1a9cf09bdaaebbe (patch)
treeecacc3c9263044b2b810a93fa37b329fc081c11b /package/comgt
parent4540abfbadc4a824ad524038f40633ee05f48556 (diff)
downloadmaster-187ad058-d624e7ea5dfceb99fc43cd9be1a9cf09bdaaebbe.tar.gz
master-187ad058-d624e7ea5dfceb99fc43cd9be1a9cf09bdaaebbe.tar.bz2
master-187ad058-d624e7ea5dfceb99fc43cd9be1a9cf09bdaaebbe.zip
comgt: port 3g.sh to netifd
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@28634 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/comgt')
-rw-r--r--package/comgt/Makefile33
-rw-r--r--package/comgt/files-netifd/3g.sh83
-rw-r--r--package/comgt/files-netifd/3g.usb33
-rw-r--r--package/comgt/files-old/3g.button (renamed from package/comgt/files/3g.button)0
-rw-r--r--package/comgt/files-old/3g.connect (renamed from package/comgt/files/3g.connect)0
-rw-r--r--package/comgt/files-old/3g.iface (renamed from package/comgt/files/3g.iface)0
-rw-r--r--package/comgt/files-old/3g.sh (renamed from package/comgt/files/3g.sh)0
-rw-r--r--package/comgt/files-old/3g.usb (renamed from package/comgt/files/3g.usb)0
8 files changed, 139 insertions, 10 deletions
diff --git a/package/comgt/Makefile b/package/comgt/Makefile
index 61c123a737..c071c8ca19 100644
--- a/package/comgt/Makefile
+++ b/package/comgt/Makefile
@@ -17,6 +17,10 @@ PKG_MD5SUM:=db2452680c3d953631299e331daf49ef
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME).$(PKG_VERSION)
+PKG_CONFIG_DEPENDS:=CONFIG_USE_NETIFD
+COMGT_VARIANT:=$(if $(CONFIG_USE_NETIFD),netifd,old)
+FILES_DIR:=./files-$(COMGT_VARIANT)
+
include $(INCLUDE_DIR)/package.mk
define Package/comgt
@@ -41,28 +45,37 @@ define Build/Compile
comgt
endef
+define Package/comgt/install/netifd
+ $(INSTALL_DIR) $(1)/lib/netifd/proto
+ $(INSTALL_BIN) $(FILES_DIR)/3g.sh $(1)/lib/netifd/proto/3g.sh
+endef
+
+define Package/comgt/install/old
+ $(INSTALL_DIR) $(1)/etc/ppp
+ $(INSTALL_BIN) $(FILES_DIR)/3g.connect $(1)/etc/ppp/3g.connect
+ $(INSTALL_DIR) $(1)/lib/network
+ $(INSTALL_BIN) $(FILES_DIR)/3g.sh $(1)/lib/network/3g.sh
+ $(INSTALL_DIR) $(1)/etc/hotplug.d/button
+ $(INSTALL_DATA) $(FILES_DIR)/3g.button $(1)/etc/hotplug.d/button/05-3g
+ $(INSTALL_DIR) $(1)/etc/hotplug.d/iface
+ $(INSTALL_DATA) $(FILES_DIR)/3g.iface $(1)/etc/hotplug.d/iface/05-3g
+endef
+
define Package/comgt/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/comgt $(1)/usr/bin/
ln -s comgt $(1)/usr/bin/gcom
- $(INSTALL_DIR) $(1)/etc/ppp
- $(INSTALL_BIN) ./files/3g.connect $(1)/etc/ppp/3g.connect
$(INSTALL_DIR) $(1)/etc/chatscripts
$(INSTALL_DATA) ./files/3g.chat $(1)/etc/chatscripts/3g.chat
$(INSTALL_DATA) ./files/evdo.chat $(1)/etc/chatscripts/evdo.chat
- $(INSTALL_DIR) $(1)/lib/network
- $(INSTALL_BIN) ./files/3g.sh $(1)/lib/network/3g.sh
- $(INSTALL_DIR) $(1)/etc/hotplug.d/button
- $(INSTALL_DATA) ./files/3g.button $(1)/etc/hotplug.d/button/05-3g
- $(INSTALL_DIR) $(1)/etc/hotplug.d/iface
- $(INSTALL_DATA) ./files/3g.iface $(1)/etc/hotplug.d/iface/05-3g
- $(INSTALL_DIR) $(1)/etc/hotplug.d/tty
- $(INSTALL_DATA) ./files/3g.usb $(1)/etc/hotplug.d/tty/30-3g
$(INSTALL_DIR) $(1)/etc/gcom
$(INSTALL_DATA) ./files/setpin.gcom $(1)/etc/gcom/setpin.gcom
$(INSTALL_DATA) ./files/setmode.gcom $(1)/etc/gcom/setmode.gcom
$(INSTALL_DATA) ./files/getcardinfo.gcom $(1)/etc/gcom/getcardinfo.gcom
$(INSTALL_DATA) ./files/getstrength.gcom $(1)/etc/gcom/getstrength.gcom
+ $(INSTALL_DIR) $(1)/etc/hotplug.d/tty
+ $(INSTALL_DATA) $(FILES_DIR)/3g.usb $(1)/etc/hotplug.d/tty/30-3g
+ $(Package/comgt/install/$(COMGT_VARIANT))
endef
$(eval $(call BuildPackage,comgt))
diff --git a/package/comgt/files-netifd/3g.sh b/package/comgt/files-netifd/3g.sh
new file mode 100644
index 0000000000..cbf8bd1e66
--- /dev/null
+++ b/package/comgt/files-netifd/3g.sh
@@ -0,0 +1,83 @@
+#!/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_int "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}"
+ 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
+ ;;
+ 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
diff --git a/package/comgt/files-netifd/3g.usb b/package/comgt/files-netifd/3g.usb
new file mode 100644
index 0000000000..d3859c257c
--- /dev/null
+++ b/package/comgt/files-netifd/3g.usb
@@ -0,0 +1,33 @@
+#!/bin/sh
+. /etc/functions.sh
+. /lib/netifd/netifd-proto.sh
+
+find_3g_iface() {
+ local cfg="$1"
+ local tty="$2"
+
+ local proto
+ config_get proto "$cfg" proto
+ [ "$proto" = 3g ] || return 0
+
+ local dev
+ config_get dev "$cfg" device
+
+ if [ "${dev##*/}" = "${tty##*/}" ]; then
+ if [ "$ACTION" = add ]; then
+ available=1
+ else
+ available=0
+ fi
+ proto_set_available "$cfg" $available
+ fi
+}
+
+case "$DEVICENAME" in
+ tty*)
+ [ -e "/dev/$DEVICENAME" ] || [ "$ACTION" = remove ] || exit 0
+ config_load network
+ config_foreach find_3g_iface interface "/dev/$DEVICENAME"
+ ;;
+esac
+
diff --git a/package/comgt/files/3g.button b/package/comgt/files-old/3g.button
index 57f4286073..57f4286073 100644
--- a/package/comgt/files/3g.button
+++ b/package/comgt/files-old/3g.button
diff --git a/package/comgt/files/3g.connect b/package/comgt/files-old/3g.connect
index 04f45f9de6..04f45f9de6 100644
--- a/package/comgt/files/3g.connect
+++ b/package/comgt/files-old/3g.connect
diff --git a/package/comgt/files/3g.iface b/package/comgt/files-old/3g.iface
index a89f053873..a89f053873 100644
--- a/package/comgt/files/3g.iface
+++ b/package/comgt/files-old/3g.iface
diff --git a/package/comgt/files/3g.sh b/package/comgt/files-old/3g.sh
index 616beec4c4..616beec4c4 100644
--- a/package/comgt/files/3g.sh
+++ b/package/comgt/files-old/3g.sh
diff --git a/package/comgt/files/3g.usb b/package/comgt/files-old/3g.usb
index ba6c646177..ba6c646177 100644
--- a/package/comgt/files/3g.usb
+++ b/package/comgt/files-old/3g.usb