mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			119 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/sh /etc/rc.common
 | |
| 
 | |
| START=69
 | |
| 
 | |
| check_mtk_device() {
 | |
| 	config_get phy "$1" phy
 | |
| 	[ "$phy" = "mtkp2p0" ] && {
 | |
| 		[ "$(uci -q get wireless.$1.disabled)" = "1" ] || apmode="$1"
 | |
| 		[ -z "$(uci -q get wireless.default_$1.ifname)" ] && {
 | |
| 			uci -q batch <<-EOF
 | |
| 				set wireless.default_$1.ifname=mtkap0
 | |
| 				set wireless.default_$1.bss_load_update_period=0
 | |
| 				rename wireless.$1=ap
 | |
| 				rename wireless.default_$1=default_ap
 | |
| 				set wireless.default_$1.device=ap
 | |
| 			EOF
 | |
| 		}
 | |
| 	}
 | |
| 	[ "$phy" = "mtkphy0" ] && {
 | |
| 		[ "$(uci -q get wireless.$1.disabled)" = "1" ] || wlanmode="$1"
 | |
| 		[ "$(uci -q get wireless.default_$1.mode)" = "ap" ] && {
 | |
| 			uci -q batch <<-EOF
 | |
| 				set wireless.default_$1.mode=sta
 | |
| 			EOF
 | |
| 		}
 | |
| 		[ -z "$(uci -q get wireless.default_$1.ifname)" ] && {
 | |
| 			uci -q batch <<-EOF
 | |
| 				set wireless.default_$1.ifname=mtkwlan0
 | |
| 				set wireless.default_$1.bss_load_update_period=0
 | |
| 				rename wireless.$1=client
 | |
| 				rename wireless.default_$1=default_client
 | |
| 				set wireless.default_$1.device=client
 | |
| 			EOF
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| find_radio() {
 | |
| 	config_load wireless
 | |
| 	apmode=""
 | |
| 	wlanmode=""
 | |
| 	config_foreach check_mtk_device wifi-device
 | |
| 	uci -q commit wireless
 | |
| }
 | |
| 
 | |
| start_ap() {
 | |
| 	echo A > /dev/wmtWifi
 | |
| 	# Those are recommended by vendor to avoid chip lockup.
 | |
| 	tc qdisc add dev mtkap0 root handle 1: htb default 11
 | |
| 	tc class add dev mtkap0 parent 1:1 classid 1:2 htb rate 8Mbit ceil 4Mbit prio 2
 | |
| 
 | |
| 	find_radio
 | |
| 	if [ -n "$apmode" ]; then
 | |
| 		config_get_bool disabled "$apmode" disabled
 | |
| 		[ "$disabled" = "1" ] || wifi up "$apmode" 2>/dev/null
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| start_wlan() {
 | |
| 	echo 1 > /dev/wmtWifi
 | |
| 	# Those are recommended by vendor to avoid chip lockup.
 | |
| 	tc qdisc add dev mtkap0 root handle 1: htb default 11
 | |
| 	tc class add dev mtkap0 parent 1:1 classid 1:2 htb rate 8Mbit ceil 4Mbit prio 2
 | |
| 
 | |
| 	find_radio
 | |
| 	if [ -n "$wlanmode" ]; then
 | |
| 		config_get_bool disabled "$wlanmode" disabled
 | |
| 		[ "$disabled" = "1" ] || wifi up "$wlanmode" 2>/dev/null
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| stop_apwlan() {
 | |
| 	find_radio
 | |
| 	[ -n "$apmode" ] && wifi down "$apmode" 2>/dev/null
 | |
| 	[ -n "$wlanmode" ] && wifi down "$wlanmode" 2>/dev/null
 | |
| 	echo 0 > /dev/wmtWifi
 | |
| 
 | |
| }
 | |
| 
 | |
| start() {
 | |
| 	find_radio
 | |
| 
 | |
| 	[ -c /dev/stpwmt ] || /usr/bin/wmt_loader 2>&1
 | |
| 	/usr/bin/stp_uart_launcher -p /etc/firmware 2>&1 | logger -t stp_uart_launcher &
 | |
| 	echo "$!" > /var/run/stp_uart_launcher.pid
 | |
| 	sleep 3
 | |
| 	if [ -c /dev/wmtWifi ]; then
 | |
| 		[ -n "$apmode" ] && start_ap
 | |
| 		[ -n "$wlanmode" ] && start_wlan
 | |
| 		[ -z "$apmode" ] && [ -z "$wlanmode" ] && start_ap
 | |
| 		return 0
 | |
| 	else
 | |
| 		return 1
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| stop() {
 | |
| 	find_radio
 | |
| 
 | |
| 	if [ -c /dev/wmtWifi ]; then
 | |
| 		stop_apwlan
 | |
| 		stp_pid="$(cat /var/run/stp_uart_launcher.pid 2>/dev/null)"
 | |
| 		if [ -n "$stp_pid" ]; then
 | |
| 			kill "$stp_pid"
 | |
| 			rm /var/run/stp_uart_launcher.pid
 | |
| 		fi
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| reload() {
 | |
| 	find_radio
 | |
| 
 | |
| 	if [ -c /dev/wmtWifi ]; then
 | |
| 		stop_apwlan
 | |
| 		[ -n "$apmode" ] && start_ap
 | |
| 		[ -n "$wlanmode" ] && start_wlan
 | |
| 		[ -z "$apmode" ] && [ -z "$wlanmode" ] && start_ap
 | |
| 	fi
 | |
| }
 |