blob: 6a4335bf0872e74a8b1706099d0b10c452124279 [file] [log] [blame]
#!/bin/sh
#
#
# 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`"