190 lines
5.0 KiB
Bash
190 lines
5.0 KiB
Bash
#!/bin/sh
|
|
|
|
WGOD=$(basename $0)
|
|
|
|
W_INTERFACE="wlan0"
|
|
W_TESTMODE=0
|
|
W_SRCADDR="00:11:22:33:44:55"
|
|
W_DSTADDR="55:44:33:22:11:00"
|
|
W_BANDWIDTH=1
|
|
W_CHANNEL=1
|
|
W_POWER=20
|
|
W_ANTENNA=0
|
|
W_RATE=19
|
|
W_SGI=0
|
|
|
|
die_here() {
|
|
echo "$WGOD: $1"
|
|
exit 1
|
|
}
|
|
|
|
usage() {
|
|
echo "usage: $WGOD [OPTION] start/stop"
|
|
echo ""
|
|
echo "General Options"
|
|
echo " -b bandwidth"
|
|
echo " 1 = 20MHz -> default"
|
|
echo " 2 = 40MHz-"
|
|
echo " 3 = 40MHz+"
|
|
echo " -c channel -> default: 1"
|
|
echo " -s source address -> default: 00:11:22:33:44:55"
|
|
echo " -d destination address -> default: 55:44:33:22:11:00"
|
|
echo " -t test mode test mode:"
|
|
echo " tx=1, rx=2"
|
|
echo " -i wlan interface -> default: wlan0"
|
|
echo ""
|
|
echo "Tx Mode Options:"
|
|
echo ""
|
|
echo " -a antenna selection"
|
|
echo " 0 = auto mode -> default"
|
|
echo " 1 = 1st antenna"
|
|
echo " 2 = 2nd antenna"
|
|
echo " 3 = both antennas"
|
|
echo " -g guard interval"
|
|
echo " 0 = long -> default"
|
|
echo " 1 = short"
|
|
echo " -p power 0-20 -> default: 20"
|
|
echo " -r rate"
|
|
echo " 0 = 1.0 Mbps"
|
|
echo " 1 = 2.0 Mbps"
|
|
echo " 2 = 5.0 Mbps"
|
|
echo " 3 = 11.0 Mbps"
|
|
echo " 4 = 6.0 Mbps"
|
|
echo " 5 = 9.0 Mbps"
|
|
echo " 6 = 12.0 Mbps"
|
|
echo " 7 = 18.0 Mbps"
|
|
echo " 8 = 24.0 Mbps"
|
|
echo " 9 = 36.0 Mbps"
|
|
echo " 10 = 48.0 Mbps"
|
|
echo " 11 = 54.0 Mbps"
|
|
echo " 12 = 6.5 Mbps"
|
|
echo " 13 = 13.0 Mbps"
|
|
echo " 14 = 19.5 Mbps"
|
|
echo " 15 = 26.0 Mbps"
|
|
echo " 16 = 39.0 Mbps"
|
|
echo " 17 = 52.0 Mbps"
|
|
echo " 18 = 58.5 Mbps"
|
|
echo " 19 = 65.0 Mbps -> default"
|
|
echo " 20 = MCS8 / MCS4 at 40MHz"
|
|
echo " 21 = MCS9 / MCS5 at 40MHz "
|
|
echo " 22 = MCS10 / MCS6 at 40MHz "
|
|
echo " 23 = MCS11 / MCS7 at 40MHz "
|
|
echo " 24 = MCS12 / MCS7,40MHz SGI "
|
|
echo " 25 = MCS13"
|
|
echo " 26 = MCS14"
|
|
echo " 27 = MCS15"
|
|
echo ""
|
|
exit 0
|
|
}
|
|
|
|
wgod_get_band() {
|
|
local channel=$1
|
|
local band=0
|
|
|
|
if [ $channel -gt 30 ]; then
|
|
band=1
|
|
fi
|
|
|
|
echo $band
|
|
}
|
|
|
|
wget_set_channel() {
|
|
local band=$(wgod_get_band $W_CHANNEL)
|
|
calibrator wlan0 wl18xx_plt tune_channel $W_CHANNEL $band $W_BANDWIDTH
|
|
}
|
|
|
|
wget_set_power() {
|
|
local band=$(wgod_get_band $W_CHANNEL)
|
|
local power=$(expr $W_POWER * 1000)
|
|
local bandwidth=0
|
|
|
|
if [ $W_BANDWIDTH -eq 2 ]; then
|
|
bandwidth=1
|
|
elif [ $W_BANDWIDTH -eq 3 ]; then
|
|
bandwidth=-1
|
|
fi
|
|
|
|
calibrator wlan0 wl18xx_plt set_tx_power $power 0 $band $W_CHANNEL $W_BANDWIDTH $W_ANTENNA \
|
|
0 0 0 0 0 0
|
|
}
|
|
|
|
wgod_stop_rx() {
|
|
|
|
echo "--> run stop Rx sequence"
|
|
|
|
calibrator $W_INTERFACE wl18xx_plt get_rx_stats 2> /dev/null
|
|
calibrator $W_INTERFACE wl18xx_plt stop_rx > /dev/null 2>&1
|
|
}
|
|
|
|
wgod_stop() {
|
|
echo "--> run stop sequence"
|
|
|
|
if [ $W_TESTMODE -eq 2 ]; then
|
|
wgod_stop_rx
|
|
fi
|
|
|
|
calibrator $W_INTERFACE plt power_mode off > /dev/null 2>&1
|
|
}
|
|
|
|
wgod_start_tx() {
|
|
local bandwidth=0
|
|
echo "--> run start Tx sequence"
|
|
|
|
wget_set_power
|
|
|
|
if [ $W_BANDWIDTH -gt 1 ]; then
|
|
bandwidth=1
|
|
fi
|
|
|
|
calibrator $W_INTERFACE wl18xx_plt start_tx 400 $W_RATE 3000 0 0 $W_SGI 0 0 \
|
|
$W_SRCADDR $W_DSTADDR $bandwidth
|
|
}
|
|
|
|
wgod_start_rx() {
|
|
|
|
echo "--> run start Rx sequence"
|
|
|
|
calibrator $W_INTERFACE wl18xx_plt start_rx $SRCADDR $DSTADDR > /dev/null 2>&1
|
|
}
|
|
|
|
wgod_start() {
|
|
calibrator $W_INTERFACE plt power_mode on
|
|
|
|
wget_set_channel
|
|
|
|
case $W_TESTMODE in
|
|
1) wgod_start_tx;;
|
|
2) wgod_start_rx;;
|
|
esac
|
|
}
|
|
|
|
if [ $# -le 0 ]; then
|
|
usage
|
|
fi
|
|
|
|
while getopts a:b:c:d:g:hi:r:s:t: OPT; do
|
|
case $OPT in
|
|
a) W_ANTENNA=$OPTARG;;
|
|
b) W_BANDWIDTH=$OPTARG;;
|
|
c) W_CHANNEL=$OPTARG;;
|
|
d) W_DSTADDR="$OPTARG";;
|
|
g) W_SGI="$OPTARG";;
|
|
h) usage;;
|
|
i) W_INTERFACE="$OPTARG";;
|
|
p) W_POWER=$OPTARG;;
|
|
r) W_RATE=$OPTARG;;
|
|
s) W_SRCADDR="$OPTARG";;
|
|
t) W_TESTMODE=$OPTARG;;
|
|
|
|
*) usage;;
|
|
esac
|
|
done
|
|
shift $(expr $OPTIND - 1)
|
|
|
|
wgod_stop
|
|
if [ "$1" != "start" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
wgod_start
|