sped up start up using temp files (could be better)

This commit is contained in:
Alexander Bocken 2020-07-10 11:37:04 +02:00
parent 774c5f7d1c
commit e7c2e1437b

17
bt
View File

@ -30,11 +30,12 @@ scan(){
scanstatus="$( bluetoothctl show | grep Discovering | awk '{print $2}' )" scanstatus="$( bluetoothctl show | grep Discovering | awk '{print $2}' )"
if [ "$1" = on ]; then if [ "$1" = on ]; then
#sets variable in case scanning was no already on before the start of bt #sets variable in case scanning was no already on before the start of bt
[ "$start_scan" = "" ] && start_scan="$( date +'%s' )" [ -f /tmp/bt_start_scan$$ ] || start_scan="$( date +'%s' )"
if [ "$scanstatus" = "no" ]; then if [ "$scanstatus" = "no" ]; then
bluetoothctl scan on & bluetoothctl scan on &
start_scan="$( date +'%s' )" start_scan="$( date +'%s' )"
fi fi
echo "$start_scan" > /tmp/bt_start_scan$$
elif [ "$1" = off ]; then elif [ "$1" = off ]; then
if [ "$scanstatus" = "yes" ]; then if [ "$scanstatus" = "yes" ]; then
bluetoothctl scan off bluetoothctl scan off
@ -54,8 +55,15 @@ update_pair_list(){
#start scanning as early as possible to speed up pairing process #start scanning as early as possible to speed up pairing process
#In function to more quickly display the menu
startup(){ startup(){
#remove old tmp files
for f in /tmp/*
do
case $f in
/tmp/bt_start_scan*) rm "$f";;
*) true;;
esac
done
if $AUTOSCAN if $AUTOSCAN
then then
power on power on
@ -64,7 +72,7 @@ startup(){
} }
#Sadly needs to be run without '&' for now, since it otherwise breaks start_scan variable #Sadly needs to be run without '&' for now, since it otherwise breaks start_scan variable
startup startup &
update_pair_list & update_pair_list &
# shellcheck disable=SC1091 # shellcheck disable=SC1091
@ -91,6 +99,7 @@ poweroption="$( echo "$powerstatus" | sed 's/yes/power off/; s/no/power on/' )"
cleanup(){ cleanup(){
scan off scan off
rm /tmp/bt_start_scan$$
exit 0 exit 0
} }
@ -99,6 +108,7 @@ pair(){
power on power on
scan on scan on
#check whether $SCAN_PERIOD seconds has already passed since starting scanning, if not, wait for the rest of that time. #check whether $SCAN_PERIOD seconds has already passed since starting scanning, if not, wait for the rest of that time.
start_scan="$(cat /tmp/bt_start_scan$$)"
if [ $((( "$(date +'%s')" - "$start_scan" ))) -lt $SCAN_PERIOD ]; then if [ $((( "$(date +'%s')" - "$start_scan" ))) -lt $SCAN_PERIOD ]; then
sleep_period="$((( "$SCAN_PERIOD" - "$( date +'%s')" + "$start_scan" )))" sleep_period="$((( "$SCAN_PERIOD" - "$( date +'%s')" + "$start_scan" )))"
if [ "$sleep_period" -eq 1 ]; then if [ "$sleep_period" -eq 1 ]; then
@ -125,6 +135,7 @@ pair(){
if [ -n "$choice" ]; then if [ -n "$choice" ]; then
if [ "$choice" = "rescan" ]; then if [ "$choice" = "rescan" ]; then
start_scan="$( date +'%s')" start_scan="$( date +'%s')"
echo "$start_scan" > /tmp/bt_start_scan$$
pair pair
else else
dev_no=$( echo "$new_devices" | nl | grep "$choice" | awk '{print $1}') dev_no=$( echo "$new_devices" | nl | grep "$choice" | awk '{print $1}')