diff options
| -rw-r--r-- | package/comgt/Makefile | 33 | ||||
| -rw-r--r-- | package/comgt/files-netifd/3g.sh | 83 | ||||
| -rw-r--r-- | package/comgt/files-netifd/3g.usb | 33 | ||||
| -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 61c123a73..c071c8ca1 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 000000000..cbf8bd1e6 --- /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 000000000..d3859c257 --- /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 57f428607..57f428607 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 04f45f9de..04f45f9de 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 a89f05387..a89f05387 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 616beec4c..616beec4c 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 ba6c64617..ba6c64617 100644 --- a/package/comgt/files/3g.usb +++ b/package/comgt/files-old/3g.usb | 
