From 820d9295b51e427f3e17c9e83227a127ef9b7631 Mon Sep 17 00:00:00 2001 From: James Rayner Date: Mon, 7 Sep 2009 22:29:56 +1000 Subject: Rework rfkill into re-usable functions --- src/wireless | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) (limited to 'src/wireless') diff --git a/src/wireless b/src/wireless index f63f7e1..4e66bfa 100644 --- a/src/wireless +++ b/src/wireless @@ -166,5 +166,61 @@ wpa_supplicant_scan_info() { return 0 } +set_rf_state() { + local INTERFACE=$1 state=$2 PROFILE=$3 + + source $IFACE_DIR/$INTERFACE + [[ $PROFILE ]] && source $PROFILE_DIR/$PROFILE # profile overrides + [[ $RFKILL == "hard" ]] && report_fail "Cannot set state on hardware rfkill switch" + path=$(get_rf_path $INTERFACE $RFKILL_NAME) + case $state in + up) + echo 1 > $path/state + ;; + down) + echo 0 > $path/state + ;; + esac +} + +get_rf_path() { + local INTERFACE=$1 RFKILL_NAME=$2 + + if [[ $RFKILL_NAME ]]; then + for path in /sys/class/rfkill/*; do + if [[ "$(cat $path/name)" == $RFKILL_NAME ]]; then + echo $path + return 0 + fi + done + report_fail "no rfkill switch with name $RFKILL_NAME" + else + path=/sys/class/net/$INTERFACE/rfkill + if [[ -d $path ]]; then + echo $path + return 0 + fi + report_fail "no rfkill switch available on interface $INTERFACE" + fi +} + +get_rf_state() { + local INTERFACE=$1 PROFILE=$2 + source $IFACE_DIR/$INTERFACE + [[ $PROFILE ]] && source $PROFILE_DIR/$PROFILE # profile overrides + path=$(get_rf_path $INTERFACE $RFKILL_NAME) + state=$(cat $path/state) + + case $state in + 0) + echo "disabled";; + 1) + echo "enabled";; + *) + echo $state;; + esac +} + + # vim: set ts=4 et sw=4 ft=sh: -- cgit v1.2.3-24-g4f1b