diff options
| author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2006-10-15 15:27:34 +0000 | 
|---|---|---|
| committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2006-10-15 15:27:34 +0000 | 
| commit | b573d8ec23fe7dcba00cdea3be95608b72f37902 (patch) | |
| tree | 7d2d7b9f697f0b32614e2772b0315f2b8b81a823 /package/base-files/default/sbin/wifi | |
| parent | a454958a86d36508f75febc37ede96243a614fe0 (diff) | |
implement simple device autodetection for wifi drivers
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@5113 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/base-files/default/sbin/wifi')
| -rwxr-xr-x | package/base-files/default/sbin/wifi | 60 | 
1 files changed, 50 insertions, 10 deletions
| diff --git a/package/base-files/default/sbin/wifi b/package/base-files/default/sbin/wifi index 4a3ec8cfe..759cfb0a8 100755 --- a/package/base-files/default/sbin/wifi +++ b/package/base-files/default/sbin/wifi @@ -3,6 +3,49 @@  . /etc/functions.sh +wifi_up() { +	for device in ${2:-$DEVICES}; do ( +		config_get iftype "$device" type +		if eval "type enable_$iftype" 2>/dev/null >/dev/null; then +			eval "scan_$iftype '$device'" +			eval "enable_$iftype '$device'" || echo "$device($iftype): Setup failed" +		else +			echo "$device($iftype): Interface type not supported" +		fi +	); done +} + +wifi_down() { +	for device in ${2:-$DEVICES}; do ( +		config_get iftype "$device" type +		if eval "type disable_$iftype" 2>/dev/null >/dev/null; then +			eval "scan_$iftype '$device'" +			eval "disable_$iftype '$device'" || echo "$device($iftype): Setup failed" +		else +			echo "$device($iftype): Interface type not supported" +		fi +	); done +} + +wifi_detect() { +	for driver in ${2:-$DRIVERS}; do ( +		if eval "type detect_$driver" 2>/dev/null >/dev/null; then +			eval "detect_$driver" || echo "$driver: Detect failed" >&2 +		else +			echo "$driver: Hardware detection not supported" >&2 +		fi +	); done +} + +start_net() {( +	local iface="$1" +	local config="$2" + +	include /lib/network +	scan_interfaces +	setup_interface "$1" "$2" +)} +  config_get_bool() {  	local _tmp  	config_get "$1" "$2" "$3" @@ -29,16 +72,13 @@ config_cb() {  	esac  } +DEVICES= +DRIVERS=  config_load wireless  include /lib/wifi -for device in $DEVICES; do ( -	config_get iftype "$device" type -	eval "type setup_$iftype" 2>/dev/null >/dev/null && { -		eval "scan_$iftype '$device'" -		eval "setup_$iftype '$device'" && { -			# TODO: set up network settings -			/bin/true -		} || echo "$device($iftype): Setup failed" || true -	} || echo "$device($iftype): Interface type not supported" -); done +case "$1" in +	down) wifi_down "$2";; +	detect) wifi_detect "$2";; +	*) wifi_up "$2";; +esac | 
