From the website: Byobu is a GPLv3 open source text-based window manager and terminal multiplexer. It was originally designed to provide elegant enhancements to the otherwise functional, plain, practical GNU Screen, for the Ubuntu server distribution. Byobu now includes an enhanced profiles, convenient keybindings, configuration utilities, and toggle-able system status notifications for both the GNU Screen window manager and the more modern Tmux terminal multiplexer, and works on most Linux, BSD, and Mac distributions. Adapted from the old packages feed: https://git.openwrt.org/?p=openwrt/svn-archive/packages.git;a=tree;f=utils/byobu Signed-off-by: Jeffery To <jeffery.to@gmail.com>
82 lines
3 KiB
Diff
82 lines
3 KiB
Diff
--- a/usr/lib/byobu/wifi_quality
|
|
+++ b/usr/lib/byobu/wifi_quality
|
|
@@ -19,32 +19,61 @@
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
+___get_dev_list() {
|
|
+ if [ -n "$MONITORED_NETWORK" ]; then
|
|
+ echo "$MONITORED_NETWORK"
|
|
+ else
|
|
+ iw dev | grep Interface | cut -f2 -d\
|
|
+ fi
|
|
+}
|
|
+
|
|
__wifi_quality_detail() {
|
|
- /sbin/iwconfig 2>/dev/null
|
|
+ if eval $BYOBU_TEST iw >/dev/null 2>&1; then
|
|
+ local dev
|
|
+ for dev in $(___get_dev_list); do
|
|
+ iw dev "$dev" info
|
|
+ iw dev "$dev" link
|
|
+ echo
|
|
+ done
|
|
+ elif eval $BYOBU_TEST iwconfig >/dev/null 2>&1; then
|
|
+ iwconfig 2>/dev/null
|
|
+ fi
|
|
}
|
|
|
|
__wifi_quality() {
|
|
local out bitrate quality
|
|
- # iwconfig is expected to output lines like:
|
|
- # Bit Rate=54 Mb/s Tx-Power=15 dBm
|
|
- # Link Quality=60/70 Signal level=-50 dBm
|
|
- # the awk below tokenizes the output and prints shell evalable results
|
|
- out=`iwconfig $MONITORED_NETWORK 2>/dev/null |
|
|
- awk '$0 ~ /[ ]*Link Quality./ {
|
|
- sub(/.*=/,"",$2); split($2,a,"/");
|
|
- printf "quality=%.0f\n", 100*a[1]/a[2] };
|
|
- $0 ~ /[ ]*Bit Rate/ { sub(/.*[:=]/,"",$2); printf("bitrate=%s\n", $2); }
|
|
- '`
|
|
- eval "$out"
|
|
- [ -z "$bitrate" ] && bitrate="0"
|
|
- if [ -z "$quality" ] || [ "$quality" = "0" ]; then
|
|
- quality="0"
|
|
+ if eval $BYOBU_TEST iw >/dev/null 2>&1; then
|
|
+ local dev
|
|
+ for dev in $(___get_dev_list); do
|
|
+ # signal to quality: https://superuser.com/a/1360447
|
|
+ out=`iw dev "$dev" link 2>/dev/null |
|
|
+ awk '$0 ~ /^\s*signal:/ { a = 100 * ($2 + 110) / 70;
|
|
+ printf "quality=%.0f\n", (a > 100) ? 100 : ((a < 0) ? 0 : a); }
|
|
+ $0 ~ /^\s*tx bitrate:/ { printf "bitrate=%s\n", $3; }
|
|
+ '`
|
|
+ eval "$out"
|
|
+ [ -z "$bitrate" ] || [ -z "$quality" ] || break
|
|
+ done
|
|
+ elif eval $BYOBU_TEST iwconfig >/dev/null 2>&1; then
|
|
+ # iwconfig is expected to output lines like:
|
|
+ # Bit Rate=54 Mb/s Tx-Power=15 dBm
|
|
+ # Link Quality=60/70 Signal level=-50 dBm
|
|
+ # the awk below tokenizes the output and prints shell evalable results
|
|
+ out=`iwconfig $MONITORED_NETWORK 2>/dev/null |
|
|
+ awk '$0 ~ /[ ]*Link Quality./ {
|
|
+ sub(/.*=/,"",$2); split($2,a,"/");
|
|
+ printf "quality=%.0f\n", 100*a[1]/a[2] };
|
|
+ $0 ~ /[ ]*Bit Rate/ { sub(/.*[:=]/,"",$2); printf("bitrate=%s\n", $2); }
|
|
+ '`
|
|
+ eval "$out"
|
|
fi
|
|
- if [ "$bitrate" = "0" ] || [ "$quality" = "0" ] || [ -z "$bitrate" ] || [ -z "$quality"]; then
|
|
+ [ -n "$bitrate" ] || bitrate=0
|
|
+ [ -n "$quality" ] || quality=0
|
|
+ if [ "$bitrate" -gt 0 ] && [ "$quality" -gt 0 ]; then
|
|
+ printf "${ICON_WIFI}"; color b C k; printf "%s" "$bitrate"; color -; color C k; printf "%s" "$ICON_MBPS"; color -; color b C k; printf "%s" "$quality"; color -; color C k; printf "%s" "$PCT"; color --
|
|
+ else
|
|
rm -f "$BYOBU_RUN_DIR/status.$BYOBU_BACKEND/wifi_quality"*
|
|
- return
|
|
fi
|
|
- printf "${ICON_WIFI}"; color b C k; printf "%s" "$bitrate"; color -; color C k; printf "%s" "$ICON_MBPS"; color -; color b C k; printf "%s" "$quality"; color -; color C k; printf "%s" "$PCT"; color --
|
|
}
|
|
|
|
# vi: syntax=sh ts=4 noexpandtab
|