diff --git a/.getardoplist-cron b/.getardoplist-cron index 4659dd3..0e4e8e1 100755 --- a/.getardoplist-cron +++ b/.getardoplist-cron @@ -18,6 +18,7 @@ TODAY=$(date) #path where files are located #must match path in findardop script MYPATH=$HOME/patmenu2/ardop-list/ +MYVARA=$HOME/patmenu2/vara-list/ #my log file LOG=$HOME/Documents/mylog.txt @@ -43,8 +44,9 @@ echo "GRID=$GRID" > $HOME/patmenu2/.grid #make directory if it doesn't exist mkdir -p $MYPATH +mkdir -p $MYVARA -#set variables for each list +#set variables for each ARDOP list FILE=$MYPATH'ardoplist.txt' EIGHTY=$MYPATH'80mardoplist.txt' FORTY=$MYPATH'40mardoplist.txt' @@ -52,6 +54,13 @@ TWENTY=$MYPATH'20mardoplist.txt' THIRTY=$MYPATH'30mardoplist.txt' PACKET=$MYPATH'packet.txt' +#set variables for each vara list +VARAFILE=$MYVARA'varalist.txt' +VARAEIGHTY=$MYVARA'80mvaralist.txt' +VARAFORTY=$MYVARA'40mvaralist.txt' +VARATWENTY=$MYVARA'20mvaralist.txt' +VARATHIRTY=$MYVARA'30mvaralist.txt' +VARAFM=$MYVARA'varafm.txt' #check internet connection echo "Please wait while we check your internet connection" @@ -79,7 +88,33 @@ else echo "Internet connection detected" fi -#remove old files before downloading new ones + +#remove old vara files before downloading new ones +if [ -f $VARATHIRTY ]; then + rm $VARATHIRTY +fi + +if [ -f $VARAFILE ]; then + rm $VARAFILE +fi + +if [ -f $VARAEIGHTY ]; then + rm $VARAEIGHTY +fi + +if [ -f $VARAFORTY ]; then + rm $VARAFORTY +fi + +if [ -f $VARATWENTY ]; then + rm $VARATWENTY +fi + +if [ -f $VARAFM ]; then + rm $VARAFM +fi + +#remove old ARDOP files before downloading new ones if [ -f $THIRTY ]; then rm $THIRTY fi @@ -118,6 +153,13 @@ pat rmslist -s --band 40m --mode ardop --force-download >> $FORTY pat rmslist -s --band 20m --mode ardop --force-download >> $TWENTY pat rmslist -s --band 30m --mode ardop --force-download >> $THIRTY pat rmslist -s --mode packet --force-download >> $PACKET + +pat rmslist -s --mode vara --force-download >> $VARAFILE +pat rmslist -s --band 80m --mode vara --force-download >> $VARAEIGHTY +pat rmslist -s --band 40m --mode vara --force-download >> $VARAFORTY +pat rmslist -s --band 20m --mode vara --force-download >> $VARATWENTY +pat rmslist -s --band 30m --mode vara --force-download >> $VARATHIRTY +pat rmslist -s --band 2m --mode varafm --force-download >> $VARAFM } DL diff --git a/FA-functions b/FA-functions index 6d7fc00..b549b05 100644 --- a/FA-functions +++ b/FA-functions @@ -95,6 +95,7 @@ OUTFILE=/run/user/$UID/tempardoplist.txt CONFIG=$XDG_CONFIG_HOME/pat/config.json TEMP=/run/user/$UID/tempconfig.txt ARDOPLIST=$MYPATH/ardop-list +VARALIST=$MYPATH/vara-list WHO=$(whoami) source $MYPATH/config #patmenu config file #check to make sure user has downloaded @@ -118,14 +119,16 @@ BANDS="20|30|40|80|2M-70CM" SEARCH=$(yad --form --width=400 --text="Find Winlink Gateways" --text-align=center --center --title="Find ARDOP" --text-align=center \ --separator="|" --item-separator="|" \ --image=$LOGO --window-icon=$LOGO --image-on-top \ +--field="Choose Modem":CB "VARA|ARDOP" \ --field="Grid to Search" "EM" \ --field="Band to Search":CB "$BANDS" \ --button="Search":2 \ --button="Cancel":1) QUIT=$? -GRID=$(echo $SEARCH | awk -F "|" '{print $1}') +MODEM=$(echo $SEARCH | awk -F "|" '{print $1}') +GRID=$(echo $SEARCH | awk -F "|" '{print $2}') GRID=$(echo "${GRID^^}") -BAND=$(echo $SEARCH | awk -F "|" '{print $2}') +BAND=$(echo $SEARCH | awk -F "|" '{print $3}') echo "Grid search is $GRID" echo "Band is $BAND" @@ -141,7 +144,7 @@ fi if [ $QUIT = 2 ] && [ "$BAND" = '2M-70CM' ]; then -#########START TEST SECTION###################### +#########START PACKET SECTION###################### FILE=$MYPATH/ardop-list/packet.txt @@ -168,6 +171,7 @@ yad --title="Search Results" --width=1100 --height=500 \ --button="Add Alias":2 > $MYTEMP) BUT=$? + if [ "$BUT" = 2 ];then CALL=$(echo $INFO | awk -F "|" '{print $1}') SC=$(echo $INFO | awk -F "|" '{print $9}') @@ -193,10 +197,6 @@ done < $TEMP2 sudo killall pat sudo systemctl start pat@$WHO - -##############END TEST SECTION################ - - yad --title="ADDED" --width=300 --height=100 \ --image $LOGO --window-icon=$LOGO --image-on-top \ --center --form --text="$CALL-$FREQ added to Pat Winlink\rRefresh Pat Mailbox Window\rto view changes" \ @@ -205,6 +205,10 @@ SEARCHMENU fi SEARCHMENU fi +##############END PACKET SECTION################ + +#determine which modem was chosen +if [ "$MODEM" = 'ARDOP' ]; then #############ARDOP SEARCH#################### @@ -213,16 +217,19 @@ OUTFILE2=/run/user/$UID/tempardop2.txt if [ $BAND = 20 ];then FILE=$ARDOPLIST/20mardoplist.txt cat $FILE | egrep -i $GRID[[:digit:]]{2} | tee "$OUTFILE" > /dev/null 2>&1 -#cat $OUTFILE | tr -s '[:space:]' | sed 's/ /|/g'| sed 's/[A-Za-z]*$/|/g' > $OUTFILE2 +sed -i 's/&/&/g' $OUTFILE > /dev/null 2>&1 elif [ $BAND = 30 ];then FILE=$ARDOPLIST/30mardoplist.txt cat $FILE | egrep -i $GRID[[:digit:]]{2} | tee "$OUTFILE" > /dev/null 2>&1 +sed -i 's/&/&/g' $OUTFILE > /dev/null 2>&1 elif [ $BAND = 40 ];then FILE=$ARDOPLIST/40mardoplist.txt cat $FILE | egrep -i $GRID[[:digit:]]{2} | tee "$OUTFILE" > /dev/null 2>&1 +sed -i 's/&/&/g' $OUTFILE > /dev/null 2>&1 elif [ $BAND = 80 ];then FILE=$ARDOPLIST/80mardoplist.txt cat $FILE | egrep -i $GRID[[:digit:]]{2} | tee "$OUTFILE" > /dev/null 2>&1 +sed -i 's/&/&/g' $OUTFILE > /dev/null 2>&1 echo "80 done" fi @@ -249,12 +256,12 @@ FREQ=$(echo $SC | sed 's/.*=//') while read LINE; do CALL=$(echo $LINE | awk -F "|" '{print $1}') -SC=$(echo $LINE | awk -F "|" '{print $9}') +SC=$(echo $LINE | awk -F "|" '{print $9}' | sed 's/\&/\&/') FREQ=$(echo $SC | sed 's/.*=//') if [ $RIGCONTROL = 'no' ]; then SC=$(echo $SC | sed 's/[?].*$//') fi -jq '.connect_aliases += {'\""$CALL-$BAND"M"-$FREQ"\"' : '\"$SC\"'}' $CONFIG > $TEMP +jq '.connect_aliases += {'\""$CALL-$BAND"M"-""ARDOP"\"' : '\"$SC\"'}' $CONFIG > $TEMP cp $TEMP $CONFIG rm $TEMP done < /run/user/$UID/mytemptestardoplist @@ -277,6 +284,97 @@ yad --title="ADDED" --width=300 --height=100 \ SEARCHMENU fi +elif [ "$MODEM" = 'VARA' ]; then +#############VARA SEARCH#################### + +OUTFILE2=/run/user/$UID/tempardop2.txt + +if [ $BAND = 20 ];then +FILE=$VARALIST/20mvaralist.txt +cat $FILE | egrep -i $GRID[[:digit:]]{2} | tee "$OUTFILE" > /dev/null 2>&1 +sed -i 's/&/&/g' $OUTFILE > /dev/null 2>&1 +elif [ $BAND = 30 ];then +FILE=$VARALIST/30mvaralist.txt +cat $FILE | egrep -i $GRID[[:digit:]]{2} | tee "$OUTFILE" > /dev/null 2>&1 +sed -i 's/&/&/g' $OUTFILE > /dev/null 2>&1 +elif [ $BAND = 40 ];then +FILE=$VARALIST/40mvaralist.txt +cat $FILE | egrep -i $GRID[[:digit:]]{2} | tee "$OUTFILE" > /dev/null 2>&1 +sed -i 's/&/&/g' $OUTFILE > /dev/null 2>&1 +elif [ $BAND = 80 ];then +FILE=$VARALIST/80mvaralist.txt +cat $FILE | egrep -i $GRID[[:digit:]]{2} | tee "$OUTFILE" > /dev/null 2>&1 +sed -i 's/&/&/g' $OUTFILE > /dev/null 2>&1 +echo "80 done" +fi + +#remove outfile2 if it exist +if [ -f $OUTFILE2 ]; then +rm $OUTFILE2 +fi + +#add speed to line if not in list already +while read -r line +do +CHECK=$(echo $line | awk '{print $6}') +if [ "$CHECK" = 500 ] || [ "$CHECK" = 2750 ]; then +echo $line >> $OUTFILE2 +else +echo $line | sed 's/VARA/VARA 500/' >> $OUTFILE2 +fi +done < $OUTFILE + +INFO=$(PARSER='OFS="\n" {print $1, $2, $3, $4, $5, $6, $7, $9, $11}' +MYTEMP=/run/user/$UID/mytemptestardoplist +tail -50 $OUTFILE2 | awk "$PARSER" | \ +yad --title="Search Results" --width=1100 --height=500 \ + --image $LOGO --window-icon=$LOGO --image-on-top --multiple \ + --center --list --text="Search Results" \ + --column Call --column Grid --column Dist \ + --column Azm --column Mode --column Speed \ + --column Dial-Freq \ + --column Center-Freq --column Shortcut \ + --button=gtk-close \ + --button="Add Alias":2 > $MYTEMP) +BUT=$? +if [ "$BUT" = 2 ];then +CALL=$(echo $INFO | awk -F "|" '{print $1}') +SC=$(echo $INFO | awk -F "|" '{print $9}') +FREQ=$(echo $SC | sed 's/.*=//') + if [ $RIGCONTROL = 'no' ]; then + SC=$(echo $SC | sed 's/[?].*$//') + fi + +while read LINE; do +CALL=$(echo $LINE | awk -F "|" '{print $1}') +SC=$(echo $LINE | awk -F "|" '{print $9}' | sed 's/\&/\&/') +FREQ=$(echo $SC | sed 's/.*=//') + if [ $RIGCONTROL = 'no' ]; then + SC=$(echo $SC | sed 's/[?].*$//') + fi +jq '.connect_aliases += {'\""$CALL-$BAND"M"-""VARA"\"' : '\"$SC\"'}' $CONFIG > $TEMP +cp $TEMP $CONFIG +rm $TEMP +done < /run/user/$UID/mytemptestardoplist +sudo killall pat +sudo systemctl start pat@$WHO + + if [ -z "$CALL" ]; then + yad --title="No Selection" --width=300 --height=100 \ + --image $LOGO --window-icon=$LOGO --image-on-top \ + --center --form --text="No station was selected\r Please try again" \ + --button=gtk-ok + $MAIN & + exit + fi + +yad --title="ADDED" --width=300 --height=100 \ + --image $LOGO --window-icon=$LOGO --image-on-top \ + --center --form --text="Alias added to Pat Winlink\rRefresh Pat Mailbox Window\rto view changes" \ + --button=gtk-ok +SEARCHMENU +fi + fi #close modem if/then statement SEARCHMENU } SEARCHMENU @@ -436,12 +534,17 @@ TMPFILE2=$DIR/tempfile2 TMPFILE3=$DIR/tempfile3 MYGRID=$(cat /run/user/$UID/gridinfo.txt | cut -c1-6) -#backup current lists +#backup current ARDOP lists BKDIR=$MYPATH/ardop-list/bkup-`date +%F.%H%M` mkdir -p $BKDIR cp -r $HOME/patmenu2/ardop-list/*.txt $BKDIR/ -MYGRID=$(yad --form --width=450 --text="Recalculate Distance and Bearings to Gateways\rThis takes 2-3 minutes to complete" \ +#backup current VARA lists +BKDIRVARA=$MYPATH/vara-list/bkup-`date +%F.%H%M` +mkdir -p $BKDIRVARA +cp -r $HOME/patmenu2/vara-list/*.txt $BKDIRVARA/ + +MYGRID=$(yad --form --width=450 --text="Recalculate Distance and Bearings to Gateways\rThis takes 5-6 minutes to complete" \ --text-align=center --center --title="Recalculate" --text-align=center --separator="|" --item-separator="|" \ --image=$LOGO --window-icon=$LOGO --image-on-top \ --field="Current Grid Square" "$MYGRID" \ @@ -463,30 +566,47 @@ echo "GRID=$MYGRID" > $HOME/patmenu2/ardop-list/grid.txt echo "LASTDL=Recalculated `date`" >> $HOME/patmenu2/ardop-list/grid.txt MAIN(){ -echo "Recalculating 20M List" +echo "Recalculating ARDOP 20M List" RECALC 20mardoplist.txt | yad --center --progress --pulsate --auto-close --no-buttons --text-align=center --title="Recalculate" \ ---text="Recalculating 20M List\rDO NOT CLOSE THIS WINDOW\rDoing so will abort the process\rand leave you with a corrupt list." +--text="Recalculating ARDOP 20M List\rDO NOT CLOSE THIS WINDOW\rDoing so will abort the process\rand leave you with a corrupt list." -echo "Recalculating 30M List" +echo "Recalculating ARDOP 30M List" RECALC 30mardoplist.txt | yad --center --progress --pulsate --auto-close --no-buttons --text-align=center --title="Recalculate" \ ---text="Recalculating 30M List\rDO NOT CLOSE THIS WINDOW\rDoing so will abort the process\rand leave you with a corrupt list." +--text="Recalculating ARDOP 30M List\rDO NOT CLOSE THIS WINDOW\rDoing so will abort the process\rand leave you with a corrupt list." -echo "Recalculating 40M List" +echo "Recalculating ARDOP 40M List" RECALC 40mardoplist.txt | yad --center --progress --pulsate --auto-close --no-buttons --text-align=center --title="Recalculate" \ ---text="Recalculating 40M List\rDO NOT CLOSE THIS WINDOW\rDoing so will abort the process\rand leave you with a corrupt list." +--text="Recalculating ARDOP 40M List\rDO NOT CLOSE THIS WINDOW\rDoing so will abort the process\rand leave you with a corrupt list." -echo "Recalculating 80M List" +echo "Recalculating ARDOP 80M List" RECALC 80mardoplist.txt | yad --center --progress --pulsate --auto-close --no-buttons --text-align=center --title="Recalculate" \ ---text="Recalculating 80M List\rDO NOT CLOSE THIS WINDOW\rDoing so will abort the process\rand leave you with a corrupt list." +--text="Recalculating ARDOP 80M List\rDO NOT CLOSE THIS WINDOW\rDoing so will abort the process\rand leave you with a corrupt list." echo "Recalculating Packet list" RECALC packet.txt | yad --center --progress --pulsate --auto-close --no-buttons --text-align=center --title="Recalculate" \ --text="Recalculating Packet List\rDO NOT CLOSE THIS WINDOW\rDoing so will abort the process\rand leave you with a corrupt list." +echo "Recalculating Vara 20M List" +RECALCVARA 20mvaralist.txt | yad --center --progress --pulsate --auto-close --no-buttons --text-align=center --title="Recalculate" \ +--text="Recalculating VARA 20M List\rDO NOT CLOSE THIS WINDOW\rDoing so will abort the process\rand leave you with a corrupt list." + +echo "Recalculating Vara 30M List" +RECALCVARA 30mvaralist.txt | yad --center --progress --pulsate --auto-close --no-buttons --text-align=center --title="Recalculate" \ +--text="Recalculating VARA 30M List\rDO NOT CLOSE THIS WINDOW\rDoing so will abort the process\rand leave you with a corrupt list." + +echo "Recalculating Vara 40M List" +RECALCVARA 40mvaralist.txt | yad --center --progress --pulsate --auto-close --no-buttons --text-align=center --title="Recalculate" \ +--text="Recalculating VARA 40M List\rDO NOT CLOSE THIS WINDOW\rDoing so will abort the process\rand leave you with a corrupt list." + +echo "Recalculating Vara 80M List" +RECALCVARA 80mvaralist.txt | yad --center --progress --pulsate --auto-close --no-buttons --text-align=center --title="Recalculate" \ +--text="Recalculating VARA 80M List\rDO NOT CLOSE THIS WINDOW\rDoing so will abort the process\rand leave you with a corrupt list." + yad --center --timeout=2 --timeout-indicator=top --no-buttons --text="New Calculations Complete" } RECALC(){ +#This section recalculates the ARDOP lists and 2M Packet list FILE=$HOME/patmenu2/ardop-list/$1 #check for and remove existing temp file if [ -f $TMPFILE3 ]; then @@ -528,6 +648,50 @@ sort -k3 -o $TMPFILE3 $TMPFILE3 cp $TMPFILE3 $HOME/patmenu2/ardop-list/$1 } +###########VARA Recalculate####################### +RECALCVARA(){ +#This section recalculates the VARA lists. +FILE=$HOME/patmenu2/vara-list/$1 +#check for and remove existing temp file +if [ -f $TMPFILE3 ]; then +rm $TMPFILE3 +fi + +#create temp list to work with and remove headers/blank lines +cp $FILE $TMPFILE +sed -i 's/.*information...//;s/.*succeeded.//;s/.*url//' $TMPFILE +sed -i '/^$/d' $TMPFILE + + + +#read file, calculate new distance, and update +while read LINE; +do +GRID=`echo $LINE | awk '{print $2}' | sed 's/\[//;s/\]//'` +DISTANCE=`echo $LINE | awk '{print $3 }'` +BEARING=`echo $LINE | awk '{print $4 }'` +CALC=`/usr/bin/wwl $MYGRID $GRID` +NEWDISTANCE=`echo $CALC | awk '{print $2}'` +NEWBEARING=`echo $CALC | awk '{print $5}'` +echo $LINE | sed "s/$DISTANCE/$NEWDISTANCE/;s/$BEARING/$NEWBEARING/" >> $TMPFILE2 +done < $TMPFILE +rm $TMPFILE + +#pad distance with zeros for sorting +while read LINE + do + DISTANCE=$(echo $LINE | awk '{ print $3 }') + NEWDISTANCE=$(echo $LINE | awk '{ print $3 }' | sed -e :a -e 's/^.\{1,4\}$/0&/;ta') + echo $LINE | sed "s/$DISTANCE/$NEWDISTANCE/" >> $TMPFILE3 +done < $TMPFILE2 +rm $TMPFILE2 + +#sort list by distance +sort -k3 -o $TMPFILE3 $TMPFILE3 + +cp $TMPFILE3 $HOME/patmenu2/vara-list/$1 +} + #call main function MAIN #return to pat menu diff --git a/autopat-vara b/autopat-vara new file mode 100755 index 0000000..9648785 --- /dev/null +++ b/autopat-vara @@ -0,0 +1,245 @@ +#!/bin/bash + +#script to perform auto connects to gateways +#using pat winlink and the vara modem +#20220831 KM4ACK + +#Most of this code was copied from the autopat script which does +#the same thing using the ARDOP modem. + +MYPATH=$HOME/patmenu2 +LOGO=$MYPATH/pmlogo.png +MAIN=$MYPATH/patmenu + +source $MYPATH/config + +#verify we have rig control +if [ $RIGCONTROL == 'no' ] +then + +yad --title="NO RIG CONTROL" --width=400 --height=100 \ + --image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \ + --center --form --text="\r\r\r\rRig Control is needed for auto pat.\rPlease configure rig control and try again." \ + --button=gtk-ok + +exit +fi + +#Check if FLRIG is running if user has it set in config file +if [ "$RIGCONTROL" = 'yes' ]; then +FLRIG=$(echo $RIG | grep "\-m 4") + if [ -z "$FLRIG" ]; then + echo + else + FLRIG=$(pidof flrig) + if [ -z "$FLRIG" ]; then + yad --title="FAILED" --width=400 --height=100 \ + --image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \ + --center --form --text="Please start FLRIG and try again" \ + --button=gtk-ok + exit + fi + fi +fi + +#clear any temp files from previous runs that might exist +rm -rf $HOME/tempardop > /dev/null + +VARALIST=$MYPATH/vara-list/ + +touch $LOG + +DATE=$(date) + +STARTRIG () { +#start rigctld & restart pat +PIDCTL=$(pidof rigctld) +WHO=$(whoami) + if [ -z "$PIDCTL" ] + then + CONTROL=$(echo $RIG | sed 's/rigctl/rigctld/') + $CONTROL & + sudo systemctl restart pat@$WHO + fi +} + +STARTRIG + +if [ -z "$PIDCTL" ] +then +STARTRIG +fi + +SETRIG () { +#Set Mode for rigcontrol +$RIG M $MODEHF +} +SETRIG + +#Directions Function +directions () { +echo "The script needs two arguments to run." +echo "It needs the distance that you want to try to connect" +echo "and it needs the band you wish to use" +echo "Bands available are 20, 30, 40, & 80" +echo "The first argument is the distance" +echo "and the second is the band. So to try all 40M" +echo "stations in a 300km radius, you would enter" +echo "autopat 300 40" +exit 0 +} + +#check if distance is empty and give direction +if [ -z "$1" ] +then +directions +fi + +#check if band is empty and give direction +if [ -z "$2" ] +then +directions +fi + +#Check for min distance +if [ -z "$3" ] +then +MIN=0 +else +MIN=$3 +fi + +#take $2 as band to use +if [ $2 = "20" ] +then +FILE=$VARALIST"20mvaralist.txt" +elif [ $2 = "30" ] +then +FILE=$VARALIST"30mvaralist.txt" +elif [ $2 = "40" ] +then +FILE=$VARALIST"40mvaralist.txt" +elif [ $2 = "80" ] +then +FILE=$VARALIST"80mvaralist.txt" +fi + +#Verify we have a list to work with +test -f $FILE +FILERESULT=$(echo $?) +if [ $FILERESULT = "1" ] +then +echo "FILE DOESN'T EXIST." +yad --title="NO LIST" --width=400 --height=100 \ + --image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \ + --center --form --text="\r\r\rNo list has been downloaded. Auto Pat has no data to work with. Please download the gateway list \ + and try again" \ + --button="Download List":2 \ + --button="Cancel":1 +BUT=$? + if [ $BUT = 1 ]; then + exit + elif [ $BUT = 2 ]; then + $MYPATH/getardoplist + $MAIN & + exit + fi +fi + +if [ $AMRRON = "no" ] +then +#start varaHF modem +echo "Starting VARA-HF modem" +/usr/local/bin/wine $HOME/.wine/drive_c/VARA/VARA.exe > /dev/null 2>&1 & +echo "standby while the modem starts....." +sleep 10 #give vara time to start +fi + +#Pat Connection Function +connect () { +pat connect $CALL +#Check if connection was successful +RESULTS=$(echo $?) +if [ $RESULTS = "0" ] +then +echo "A connection was made" +echo $DATE" "$CALL" Success with autopat" >> $LOG +CALL=$(echo "$CALL" | sed 's/&/ /') + +yad --title="SUCCESS" --width=300 --height=100 \ + --image $LOGO --window-icon=$LOGO --image-on-top \ + --center --form --text="Successfully connected!\r$CALL\r\rSee mylog in documents\rdirectory for more details." \ + --button=gtk-ok + +if [ $AMRRON = "no" ] +then +sudo killall direwolf piardopc kissattach piARDOP_GUI rigctld > /dev/null 2>&1 +VARA=$(ps aux | grep wine | grep VARA | head -1 | awk '{print $2}') +kill -9 $VARA > /dev/null 2>&1 +VARA=$(ps aux | grep wine | grep VARA | head -1 | awk '{print $2}') +kill -9 $VARA > /dev/null 2>&1 +fi +exit 0 +fi +} + +#create temp dir & manipulate file +mkdir -p $HOME/tempardop/ +#cat file, remove first few lines, remove blanks > NEWFILE NAME +cat $FILE | tail -n +5 | grep '[^[:blank:]]' > $HOME/tempardop/tempardop.txt + +#add speed to line if not in list already +#otherwise the URL is wrong +while read -r line +do +CHECK=$(echo $line | awk '{print $6}') +if [ "$CHECK" = 500 ] || [ "$CHECK" = 2750 ]; then +echo $line >> $HOME/tempardop/temp.txt +else +echo $line | sed 's/VARA/VARA 500/' >> $HOME/tempardop/temp.txt +fi +done < $HOME/tempardop/tempardop.txt +cp $HOME/tempardop/temp.txt $HOME/tempardop/tempardop.txt + +#pad with zeros +while read LINE + do DISTANCE=$(echo $LINE | awk '{ print $3 }' | sed -e :a -e 's/^.\{1,4\}$/0&/;ta') + CALL=$(echo $LINE | awk '{ print $11 }') + echo $DISTANCE" "$CALL >> $HOME/tempardop/tempardop1.txt +done < $HOME/tempardop/tempardop.txt + +cat $HOME/tempardop/tempardop1.txt | sort >> $HOME/tempardop/sorted.txt + +echo "Will Attempt to Connect to This Station" +#loop through file and find needed station info +while read LINE + do DISTANCE=$(echo $LINE | awk '{ print $1 }') + CALL=$(echo $LINE | awk '{ print $2 }') + if [ $DISTANCE -lt "$1" ] && [ $DISTANCE -gt "$MIN" ] + then + echo "Distance="$DISTANCE " Call="$CALL + #call the connect funtion + connect + fi +done < $HOME/tempardop/sorted.txt + + +#remove temp directory & files +rm -rf $HOME/tempardop + +if [ $AMRRON = "no" ] +then +sudo killall direwolf piardopc kissattach piARDOP_GUI rigctld > /dev/null 2>&1 +sudo rfcomm release /dev/rfcomm0 > /dev/null 2>&1 +VARA=$(ps aux | grep wine | grep VARA | head -1 | awk '{print $2}') +kill -9 $VARA > /dev/null 2>&1 +VARA=$(ps aux | grep wine | grep VARA | head -1 | awk '{print $2}') +kill -9 $VARA > /dev/null 2>&1 + +fi + +yad --title="NO Connection" --width=400 --height=100 \ + --image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \ + --center --form --text="\r\r\r\rNo Winlink connection was made using the criteria you entered." \ + --button=gtk-ok + diff --git a/changelog b/changelog index dc17605..447dc20 100644 --- a/changelog +++ b/changelog @@ -1,6 +1,19 @@ -release=2.9.0 +release=2.10.0 Changelog +2.10.0 add VARA to getardoplist script + add VARA to getardoplist-cron script + add Pat Autoconnect VARA script + add VARA modem to auto connect + add VARA gateway search + add modem check to start vara hf script + add modem check to start vara fm script + add current user to login/logout screen - https://github.com/km4ack/patmenu2/issues/62 Thanks WB8SFY + fix login cancel not returning to previous screen - https://github.com/km4ack/patmenu2/issues/62 Thanks WB8SFY + add current grid to manual grid update screen - https://github.com/km4ack/patmenu2/issues/62 Thanks WB8SFY + fix false ruby warning with GPS grid update - https://github.com/km4ack/patmenu2/issues/62 Thanks WB8SFY + update ruby install to 2.5 + add current grid to main screen - https://github.com/km4ack/patmenu2/issues/61 2.9.0 add 100 Mobiles to Position Request screen in catalog - https://github.com/km4ack/patmenu2/issues/51 fix stop modems - https://github.com/km4ack/patmenu2/issues/51 add wait for internet to getardoplist-cron - https://github.com/km4ack/patmenu2/issues/50 diff --git a/getardoplist b/getardoplist index f24ecd2..8700446 100755 --- a/getardoplist +++ b/getardoplist @@ -18,6 +18,7 @@ TODAY=$(date) #path where files are located #must match path in findardop script MYPATH=$HOME/patmenu2/ardop-list/ +MYVARA=$HOME/patmenu2/vara-list/ #my log file LOG=$HOME/Documents/mylog.txt @@ -33,15 +34,24 @@ yad --center \ fi #make directory if it doesn't exist -mkdir -p $MYPATH +mkdir -p $MYPATH $MYVARA -#set variables for each list +#set variables for each ardop list FILE=$MYPATH'ardoplist.txt' EIGHTY=$MYPATH'80mardoplist.txt' FORTY=$MYPATH'40mardoplist.txt' TWENTY=$MYPATH'20mardoplist.txt' THIRTY=$MYPATH'30mardoplist.txt' PACKET=$MYPATH'packet.txt' + +#set variables for each vara list +VARAFILE=$MYVARA'varalist.txt' +VARAEIGHTY=$MYVARA'80mvaralist.txt' +VARAFORTY=$MYVARA'40mvaralist.txt' +VARATWENTY=$MYVARA'20mvaralist.txt' +VARATHIRTY=$MYVARA'30mvaralist.txt' +VARAFM=$MYVARA'varafm.txt' + GRID=$(grep locator $XDG_CONFIG_HOME/pat/config.json | sed 's/"locator"://;s/"//g;s/,//;s/ //g') echo "GRID=$GRID" > $HOME/patmenu2/.grid @@ -62,7 +72,33 @@ else yad --center --timeout=3 --timeout-indicator=top --no-buttons --text="You are not connected to the internet" exit fi -#remove old files before downloading new ones +#remove old vara files before downloading new ones +if [ -f $VARATHIRTY ]; then + rm $VARATHIRTY +fi + +if [ -f $VARAFILE ]; then + rm $VARAFILE +fi + +if [ -f $VARAEIGHTY ]; then + rm $VARAEIGHTY +fi + +if [ -f $VARAFORTY ]; then + rm $VARAFORTY +fi + +if [ -f $VARATWENTY ]; then + rm $VARATWENTY +fi + +if [ -f $VARAFM ]; then + rm $VARAFM +fi + +#remove old ardop list before downloading new ones + if [ -f $THIRTY ]; then rm $THIRTY fi @@ -103,10 +139,99 @@ pat rmslist -s --band 40m --mode ardop --force-download >> $FORTY pat rmslist -s --band 20m --mode ardop --force-download >> $TWENTY pat rmslist -s --band 30m --mode ardop --force-download >> $THIRTY pat rmslist -s --mode packet --force-download >> $PACKET + +pat rmslist -s --mode vara --force-download >> $VARAFILE +pat rmslist -s --band 80m --mode vara --force-download >> $VARAEIGHTY +pat rmslist -s --band 40m --mode vara --force-download >> $VARAFORTY +pat rmslist -s --band 20m --mode vara --force-download >> $VARATWENTY +pat rmslist -s --band 30m --mode vara --force-download >> $VARATHIRTY +pat rmslist -s --band 2m --mode varafm --force-download >> $VARAFM + yad --center --timeout=2 --timeout-indicator=top --no-buttons --text="Downloads Done" & } DL | yad --center --progress --pulsate --auto-close --no-buttons --text-align=center \ --text="Downloading....This takes ~30 seconds\rDO NOT CLOSE THIS WINDOW\rDoing so will abort the download." + +#as of August 2022 the downloaded VARA lists do not include the URL needed for pat. +#This section will generate the needed URL and update the downloaded files. + +#####GENERATE URL FOR 20M VARA File########### +VARATEMP=/run/user/$UID/varatemp +if [ -f $VARATEMP ]; then +rm $VARATEMP +fi +sed -i '/^$/d' $VARATWENTY +sed -i '1,3d' $VARATWENTY + +while read -r line; do +CALL=$(echo $line | awk '{print$1}') +FREQ=$(echo $line | sed 's/.*14./14./' | awk '{print$1}' | sed 's/\.//') +URL="vara:///$CALL?freq=$FREQ" +echo $line | sed "s||${URL}|" >> $VARATEMP +done <$VARATWENTY + +mv $VARATEMP $VARATWENTY + +############################################## + +#####GENERATE URL FOR 30M VARA File########### +VARATEMP=/run/user/$UID/varatemp +if [ -f $VARATEMP ]; then +rm $VARATEMP +fi +sed -i '/^$/d' $VARATHIRTY +sed -i '1,3d' $VARATHIRTY + +while read -r line; do +CALL=$(echo $line | awk '{print$1}') +FREQ=$(echo $line | sed 's/.*10./10./' | awk '{print$1}' | sed 's/\.//') +URL="vara:///$CALL?freq=$FREQ" +echo $line | sed "s||${URL}|" >> $VARATEMP +done <$VARATHIRTY + +mv $VARATEMP $VARATHIRTY + +############################################## + +#####GENERATE URL FOR 40M VARA File########### +VARATEMP=/run/user/$UID/varatemp +if [ -f $VARATEMP ]; then +rm $VARATEMP +fi +sed -i '/^$/d' $VARAFORTY +sed -i '1,3d' $VARAFORTY + +while read -r line; do +CALL=$(echo $line | awk '{print$1}') +FREQ=$(echo $line | sed 's/.*7./7./' | awk '{print$1}' | sed 's/\.//') +URL="vara:///$CALL?freq=$FREQ" +echo $line | sed "s||${URL}|" >> $VARATEMP +done <$VARAFORTY + +mv $VARATEMP $VARAFORTY + +############################################## + +#####GENERATE URL FOR 80M VARA File########### +VARATEMP=/run/user/$UID/varatemp +if [ -f $VARATEMP ]; then +rm $VARATEMP +fi +sed -i '/^$/d' $VARAEIGHTY +sed -i '1,3d' $VARAEIGHTY + +while read -r line; do +CALL=$(echo $line | awk '{print$1}') +FREQ=$(echo $line | sed 's/.*3./3./' | awk '{print$1}' | sed 's/\.//') +URL="vara:///$CALL?freq=$FREQ" +echo $line | sed "s||${URL}|" >> $VARATEMP +done <$VARAEIGHTY + +mv $VARATEMP $VARAEIGHTY + +############################################## + + if [ -f "$FILE" ] then echo $TODAY" RMS Gateway list download Success" >> $LOG diff --git a/manage-pat-functions b/manage-pat-functions index 69d556c..126fefe 100644 --- a/manage-pat-functions +++ b/manage-pat-functions @@ -65,6 +65,7 @@ exit LOGIN(){ CONFIG=$XDG_CONFIG_HOME/pat/config.json WHO=$(whoami) +CURRENT_USER=$(grep mycall $CONFIG | head -1 | sed 's/"mycall": "//;s/ //g;s/",//') USER=$(yad --form --width=420 --text-align=center --center --title="Pat Log In/Out" --text-align=center \ @@ -73,16 +74,16 @@ USER=$(yad --form --width=420 --text-align=center --center --title="Pat Log In/O --field="Call Sign" "" \ --field="Winlink Password" "" \ --field="Six Character Grid Square" "EM65TV" \ +--field="Current User Logged In ---- $CURRENT_USER":LBL \ --button="Log In":2 \ --button="Log Out":3 \ --button="Cancel":1) BUT=$? if [ $BUT = 252 ]; then -echo "true exit" exit elif [ $BUT = 1 ]; then -echo "cancel" +$MAIN elif [ $BUT = 2 ]; then echo "Log IN" CALLSIGN=$(echo $USER | awk -F "|" '{print $1}') @@ -120,9 +121,9 @@ fi GPSGRID(){ CONFIG=$XDG_CONFIG_HOME/pat/config.json +RUBY_INSTALLED=$(which ruby) -if ! hash ruby2.3 2>/dev/null; then -echo "Ruby Not found on system" +if [ -z "$RUBY_INSTALLED" ]; then yad --form --width=300 --text-align=center --center --title="Ruby not Found" --text-align=center \ --image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ --text="Ruby is needed to read GPS data but not found installed on your system. Would you like to install it now?" \ @@ -135,7 +136,7 @@ BUT=$? elif [ $BUT = 2 ]; then INSTALLRUBY(){ sudo apt-get update - sudo apt-get install -y ruby2.3 + sudo apt-get install -y ruby2.5 sudo gem install gpsd_client sudo gem install maidenhead } @@ -327,11 +328,13 @@ MANUALGPS() { WHO=$(whoami) CONFIG=$XDG_CONFIG_HOME/pat/config.json +CURRENT_GRID=$(grep locator $CONFIG | sed 's/"locator": "//;s/ //g;s/",//') GRID=$(yad --form --width=400 --text-align=center --center --title="Set Grid" --text-align=center \ --image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ --text="Update Pat Grid by KM4ACK" \ --field="Six Character Grid": "$NEWGRID" \ +--field="Current Grid -------- $CURRENT_GRID":LBL \ --button="Update Grid":2 \ --button="Cancel":1) BUT=$? diff --git a/pat-functions b/pat-functions index 136da71..5f30558 100644 --- a/pat-functions +++ b/pat-functions @@ -6,7 +6,6 @@ MAIN=$MYPATH/./patmenu PATCONFIG=$XDG_CONFIG_HOME/pat/config.json AUTOPAT(){ - source $MYPATH/config if [ $RIGCONTROL == 'no' ] then @@ -26,6 +25,7 @@ MAX="500|550|600|650|700|750|800|850|900|950|1000|1500|2000|2500|3000" INFO=$(yad --form --width=420 --text-align=center --center --title="Pat Auto" --text-align=center \ --image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ --text="Pat Auto Connect by KM4ACK" \ +--field="Modem":CB "VARA|ARDOP" \ --field="Band":CB "20|30|40|80" \ --field="Minimum Distance":CBE "$MIN" \ --field="Maximum Distance":CBE "$MAX" \ @@ -37,9 +37,15 @@ $MAIN exit fi -BAND=$(echo $INFO | awk -F "|" '{print $1}') -MIN=$(echo $INFO | awk -F "|" '{print $2}') -MAX=$(echo $INFO | awk -F "|" '{print $3}') +MODEM=$(echo $INFO | awk -F "|" '{print $1}') +BAND=$(echo $INFO | awk -F "|" '{print $2}') +MIN=$(echo $INFO | awk -F "|" '{print $3}') +MAX=$(echo $INFO | awk -F "|" '{print $4}') + +#echo "Modem = $MODEM" +#echo "Band = $BAND" +#echo "MIN = $MIN" +#echo "MAX = $MAX" if [ -z "$MIN" ]; then MIN=0 @@ -57,11 +63,14 @@ yad --form --width=420 --text-align=center --center --title="Pat Auto" --text-al --button=gtk-ok AUTOPAT fi -echo "Band = $BAND" -echo "MIN = $MIN" -echo "MAX = $MAX" +#set correct comamnd for modem +if [ "$MODEM" = 'ARDOP' ]; then lxterminal -e $MYPATH/autopat $MAX $BAND $MIN +elif [ "$MODEM" = 'VARA' ]; then +lxterminal -e $MYPATH/autopat-vara $MAX $BAND $MIN +fi + $MAIN } diff --git a/patmenu b/patmenu index 0f51b3d..c917841 100755 --- a/patmenu +++ b/patmenu @@ -44,6 +44,7 @@ fi #get name of current config file source $MYPATH/.currentconf CONFIG=$(echo $CONF | sed 's/.config//') +CURRENT_GRID=$(grep locator $XDG_CONFIG_HOME/pat/config.json | sed 's/"locator": "//;s/ //g;s/",//') if [ -z $CONFIG ]; then CONFIG=default fi @@ -61,10 +62,11 @@ yad --form --width=420 --text-align=center --center --title="Pat Menu" --text-al --field="Settings/Config":fbtn 'bash -c "kill -USR1 $YAD_PID; $MYPATH/manage-menu"' \ --field="Quick Stats":fbtn 'bash -c "kill -USR1 $YAD_PID; source $MYPATH/pat-functions; STATS"' \ --field="My Call - $MYCALLSIGN":LBL \ ---field="Config=$CONFIG":LBL \ +--field="Config - $CONFIG":LBL \ +--field="Grid - $CURRENT_GRID":LBL \ --button="QUIT":1 BUT=$? -if [ $BUT = 1 ] && [ "$AMRRON" = 'no' ]; then -sudo killall piardopc kissattach direwolf piARDOP_GUI rigctld > /dev/null 2>&1 +if [ $BUT = 1 ]; then +exit fi diff --git a/start-vara-fm b/start-vara-fm index 6493d92..72e7606 100755 --- a/start-vara-fm +++ b/start-vara-fm @@ -7,6 +7,14 @@ MYPATH=$HOME/patmenu2 LOGO=$MYPATH/pmlogo.png source $MYPATH/config +if [ ! -f $HOME/.wine/drive_c/VARA\ FM/VARAFM.exe ]; then + yad --title="FAILED" --width=400 --height=100 \ + --image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \ + --center --form --text="VARA FM Modem not installed" \ + --button=gtk-ok +exit +fi + #Check if FLRIG is running if user has it set in config file if [ "$RIGCONTROL" = 'yes' ]; then echo "rig control is on" diff --git a/start-vara-hf b/start-vara-hf index 5a971dd..cff0566 100755 --- a/start-vara-hf +++ b/start-vara-hf @@ -7,6 +7,15 @@ MYPATH=$HOME/patmenu2 LOGO=$MYPATH/pmlogo.png source $MYPATH/config +#check if VARA HF modem is installed +if [ ! -f $HOME/.wine/drive_c/VARA/VARA.exe ]; then + yad --title="FAILED" --width=400 --height=100 \ + --image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \ + --center --form --text="VARA Modem not installed" \ + --button=gtk-ok +exit +fi + #Check if FLRIG is running if user has it set in config file if [ "$RIGCONTROL" = 'yes' ]; then echo "rig control is on"