# # # Copyright (C) 2012 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # Script that turns on useful logging for wpa_supplicant WPA_LEVEL_LIST="excessive msgdump debug info warning error" usage(){ echo " Usage: wpa_debug [level]|[--reset]|[--help][--list_valid_levels] wpa_debug sets the debug level of wpa_supplicant. Current debug level is displayed if no parameters are provided level: The level is the level we want to set the debugging level to. The valid levels can be viewed by using the --list_valid_levels flag eg: wpa_debug msgdump Sets the wpa_supplicant logging level to msgdump --reset : Resets the level to 'info' --help : Displays this output --list_valid_levels: Displays the valid levels wpa_supplicant can be set to " } CMD_FLAG="<<cmd>>" WPA_CMD="dbus-send --system --dest=fi.w1.wpa_supplicant1 --print-reply /fi/w1/wpa_supplicant1 org.freedesktop.DBus.Properties.$CMD_FLAG string:fi.w1.wpa_supplicant1 string:DebugLevel" # Returns whether or not $2 exists in $1 where $1 is a space # separated list of tags is_valid_tag(){ expr " $1 " : ".* $2 .*"> /dev/null } get_wpa_logging(){ set_cmd="`echo $WPA_CMD | sed "s/$CMD_FLAG/Get/"`" $set_cmd | sed -e '/string/!d; s/[[:space:]]\+/ /g' | cut -d "\"" -f 2 } set_wpa_logging(){ if ! is_valid_tag "$WPA_LEVEL_LIST" "$1"; then return 1 fi if [ $1 = `get_wpa_logging` ]; then return 1 fi set_cmd="`echo $WPA_CMD | sed "s/$CMD_FLAG/Set/"` variant:string:$1" $set_cmd } if [ $# -gt 0 ]; then for param in "$@"; do case $param in --reset) set_wpa_logging "info" ;; --list*) echo "Valid levels are: `echo $WPA_LEVEL_LIST| sed 's/ /, /g'`" exit 0 ;; --help|--*) usage exit 0 ;; *) old_level="`get_wpa_logging`" set_wpa_logging "$param" echo "Old wpa level: $old_level" ;; esac done fi echo "Current wpa level: `get_wpa_logging`"