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 | |
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')
-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 4a3ec8cfef..759cfb0a84 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 |