mirror of
https://github.com/MiSTer-devel/Scripts_MiSTer.git
synced 2026-04-19 03:05:34 +00:00
83 lines
1.7 KiB
Bash
83 lines
1.7 KiB
Bash
#!/bin/sh
|
|
|
|
set -E -u -T
|
|
|
|
timeout_seconds=60
|
|
pipe=/tmp/btpair
|
|
|
|
function killprocs() {
|
|
killall btpair 2>/dev/null
|
|
killall btctl 2>/dev/null
|
|
}
|
|
|
|
function hideinput() {
|
|
if [ -t 0 ]; then
|
|
tput civis
|
|
stty -echo -icanon time 0 min 0
|
|
fi
|
|
}
|
|
trap hideinput CONT
|
|
|
|
function cleanup() {
|
|
printf $"\b"
|
|
trap - HUP INT TERM EXIT # avoid re-entrancy
|
|
if [ -t 0 ]; then
|
|
stty sane
|
|
tput cnorm
|
|
fi
|
|
[ ! -p "$pipe" ] || rm -f "$pipe"
|
|
killprocs
|
|
exit
|
|
}
|
|
trap cleanup HUP INT TERM EXIT
|
|
|
|
hideinput
|
|
killprocs
|
|
|
|
echo "Switch input device(s) to pairing mode."
|
|
echo ""
|
|
echo "Searching for $timeout_seconds seconds..."
|
|
|
|
function get_current_milliseconds() {
|
|
local cur_ms="$(date +%s.%3N)"
|
|
cur_ms=$(bc -l <<< "scale=0; $cur_ms * 1000 / 1")
|
|
printf "$cur_ms"
|
|
}
|
|
|
|
start_ms="$(get_current_milliseconds)"
|
|
function get_elapsed_milliseconds() {
|
|
local cur_ms="$(get_current_milliseconds)"
|
|
printf "$(( $cur_ms - $start_ms ))"
|
|
}
|
|
|
|
paired=0
|
|
anim_frame=0
|
|
|
|
[ -p $pipe ] || mkfifo $pipe
|
|
exec 3<>$pipe
|
|
/usr/sbin/btctl pair 1<>$pipe &
|
|
elapsed_milliseconds=0
|
|
while [ $elapsed_milliseconds -lt $(( timeout_seconds * 1000 )) ]; do
|
|
if read -t 0.1 -u 3 line; then
|
|
echo -e "\\b$line"
|
|
if [[ "$line" == "Done." ]]; then
|
|
paired=1
|
|
break
|
|
fi
|
|
else
|
|
case $anim_frame in
|
|
0) printf $"\b/"; anim_frame=1;;
|
|
1) printf $"\b-"; anim_frame=2;;
|
|
2) printf $"\b\\"; anim_frame=3;;
|
|
3) printf $"\b|"; anim_frame=0;;
|
|
esac
|
|
fi
|
|
elapsed_milliseconds=$(get_elapsed_milliseconds)
|
|
done
|
|
|
|
[ $anim_frame -lt 0 ] || printf $"\b"
|
|
if [ $paired -eq 0 ]; then
|
|
echo -e "\bNo input devices found."
|
|
fi
|
|
|