meta-netmodule-wlan/recipes-testing/ti-wl18xx-calibrator/ti-wl18xx-calibrator/wgod-ng

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