comgt: port 3g.sh to netifd
SVN-Revision: 28634
This commit is contained in:
		| @@ -17,6 +17,10 @@ PKG_MD5SUM:=db2452680c3d953631299e331daf49ef | |||||||
|  |  | ||||||
| PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME).$(PKG_VERSION) | 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 | include $(INCLUDE_DIR)/package.mk | ||||||
|  |  | ||||||
| define Package/comgt | define Package/comgt | ||||||
| @@ -41,28 +45,37 @@ define Build/Compile | |||||||
| 		comgt | 		comgt | ||||||
| endef | 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 | define Package/comgt/install | ||||||
| 	$(INSTALL_DIR) $(1)/usr/bin | 	$(INSTALL_DIR) $(1)/usr/bin | ||||||
| 	$(INSTALL_BIN) $(PKG_BUILD_DIR)/comgt $(1)/usr/bin/ | 	$(INSTALL_BIN) $(PKG_BUILD_DIR)/comgt $(1)/usr/bin/ | ||||||
| 	ln -s comgt $(1)/usr/bin/gcom | 	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_DIR) $(1)/etc/chatscripts | ||||||
| 	$(INSTALL_DATA) ./files/3g.chat $(1)/etc/chatscripts/3g.chat | 	$(INSTALL_DATA) ./files/3g.chat $(1)/etc/chatscripts/3g.chat | ||||||
| 	$(INSTALL_DATA) ./files/evdo.chat $(1)/etc/chatscripts/evdo.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_DIR) $(1)/etc/gcom | ||||||
| 	$(INSTALL_DATA) ./files/setpin.gcom $(1)/etc/gcom/setpin.gcom | 	$(INSTALL_DATA) ./files/setpin.gcom $(1)/etc/gcom/setpin.gcom | ||||||
| 	$(INSTALL_DATA) ./files/setmode.gcom $(1)/etc/gcom/setmode.gcom | 	$(INSTALL_DATA) ./files/setmode.gcom $(1)/etc/gcom/setmode.gcom | ||||||
| 	$(INSTALL_DATA) ./files/getcardinfo.gcom $(1)/etc/gcom/getcardinfo.gcom | 	$(INSTALL_DATA) ./files/getcardinfo.gcom $(1)/etc/gcom/getcardinfo.gcom | ||||||
| 	$(INSTALL_DATA) ./files/getstrength.gcom $(1)/etc/gcom/getstrength.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 | endef | ||||||
|  |  | ||||||
| $(eval $(call BuildPackage,comgt)) | $(eval $(call BuildPackage,comgt)) | ||||||
|   | |||||||
							
								
								
									
										83
									
								
								package/comgt/files-netifd/3g.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								package/comgt/files-netifd/3g.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -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 | ||||||
							
								
								
									
										33
									
								
								package/comgt/files-netifd/3g.usb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								package/comgt/files-netifd/3g.usb
									
									
									
									
									
										Normal file
									
								
							| @@ -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 | ||||||
|  |  | ||||||
		Reference in New Issue
	
	Block a user
	 Felix Fietkau
					Felix Fietkau