mirror of
https://github.com/km4ack/patmenu2.git
synced 2025-05-15 22:30:11 -07:00
initial commit
This commit is contained in:
parent
ce33391300
commit
bd35496d99
16
891.km4ack.config
Normal file
16
891.km4ack.config
Normal file
@ -0,0 +1,16 @@
|
||||
#Config file for Pat Menu
|
||||
#20200429 KM4ACK
|
||||
MYCALLSIGN=KM4ACK
|
||||
MAP=usa
|
||||
RIGCONTROL=yes
|
||||
ARDOP="/home/pi/ardop/./piardopc 8515 plughw:1,0 plughw:1,0"
|
||||
ARDOPGUI="/home/pi/ardop/./piARDOP_GUI"
|
||||
DIREWOLF="direwolf -p"
|
||||
KISS="sudo /usr/sbin/kissattach /tmp/kisstnc"
|
||||
AXP=wl2k
|
||||
RIG="/usr/local/bin/rigctl -m 4"
|
||||
MODEHF=PKTUSB
|
||||
MODE2M=FM
|
||||
PORT=5050
|
||||
LOG=/home/pi/Documents/mylog.txt
|
||||
AMRRON=no
|
273
FA-functions
Normal file
273
FA-functions
Normal file
@ -0,0 +1,273 @@
|
||||
#functions file for find ardop
|
||||
#20200425 km4ack
|
||||
|
||||
MYPATH=$HOME/patmenu2
|
||||
MAIN=$MYPATH/./find2
|
||||
CONFIG=$HOME/.wl2k/config.json
|
||||
TEMP=$HOME/patmenu2/tempconfig.txt
|
||||
TODAY=$(date +%Y%m%d-%R)
|
||||
WHO=$(whoami)
|
||||
LASTDL=$(cat $MYPATH/ardop-list/ardoplist.txt | head -1)
|
||||
LOGO=$MYPATH/pmlogo.png
|
||||
|
||||
source $MYPATH/config
|
||||
|
||||
|
||||
|
||||
#--------------------------------
|
||||
# MANUAL Download List
|
||||
#--------------------------------
|
||||
DOWNLIST(){
|
||||
$MYPATH/getardoplist
|
||||
$MAIN &
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
#--------------------------------
|
||||
# AUTO Download List
|
||||
#--------------------------------
|
||||
AUTODOWN(){
|
||||
FILE=/run/user/1000/cronbkup.txt
|
||||
crontab -l > $FILE
|
||||
HOURS=00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23
|
||||
MINS=00,15,30,45
|
||||
|
||||
TEST=$(yad --center --wrap --width=350 --title="Auto Download" --text-align=center \
|
||||
--text="Please choose the time you would like to download the gateway list everyday" \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top \
|
||||
--button="Update:2" \
|
||||
--button="Cancel:1" \
|
||||
--form --separator="," --item-separator="," \
|
||||
--field="Choose the hour":CB $HOURS \
|
||||
--field="Choose the minutes":CB $MINS \
|
||||
)
|
||||
|
||||
rc=$?
|
||||
if [[ $rc -eq 2 ]]; then
|
||||
echo "Updating Cron"
|
||||
HOUR=$(echo $TEST | awk -F ',' '{print $1}')
|
||||
MIN=$(echo $TEST | awk -F ',' '{print $2}')
|
||||
sed -i '/getardoplist/d' $FILE
|
||||
echo $MIN" "$HOUR" * * * $MYPATH/.getardoplist-cron" >> $FILE
|
||||
crontab $FILE
|
||||
echo
|
||||
echo "Your crontab has been updated. The gateway list"
|
||||
echo "will be downloaded daily at "$HOUR":"$MIN" hours"
|
||||
yad --center --timeout=3 --timeout-indicator=top --no-buttons --text="Auto Download set for $HOUR:$MIN daily" \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top
|
||||
$MAIN &
|
||||
rm $FILE
|
||||
exit
|
||||
elif [[ $rc -eq 1 ]]; then
|
||||
echo "BYE"
|
||||
$MAIN &
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
#--------------------------------
|
||||
# GRID SEARCH
|
||||
#--------------------------------
|
||||
GRIDSEARCH(){
|
||||
OUTFILE=/run/user/1000/tempardoplist.txt
|
||||
CONFIG=$HOME/.wl2k/config.json
|
||||
TEMP=/run/user/1000/tempconfig.txt
|
||||
ARDOPLIST=$MYPATH/ardop-list
|
||||
WHO=$(whoami)
|
||||
source $MYPATH/config #patmenu config file
|
||||
#check to make sure user has downloaded
|
||||
if [ ! -d "$MYPATH/ardop-list/" ]; then
|
||||
yad --title="No List" --width=400 --height=100 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \
|
||||
--center --form --text="\r\rGateway list has NOT been downloaded.\rPlease download now\rRecommend setting auto download time" \
|
||||
--button="Download":2
|
||||
BUT=$?
|
||||
if [ $BUT = 2 ]; then
|
||||
$MYPATH/getardoplist
|
||||
$MAIN &
|
||||
exit
|
||||
elif [ $BUT = 252 ]; then
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
SEARCHMENU(){
|
||||
#MENU
|
||||
BANDS="20|30|40|80|2M-70CM"
|
||||
SEARCH=$(yad --form --width=400 --text="<b>Find ARDOP</b> by KM4ACK" --text-align=center --center --title="Find ARDOP" --text-align=center \
|
||||
--separator="|" --item-separator="|" \
|
||||
--image=$LOGO --window-icon=$LOGO --image-on-top \
|
||||
--field="Grid to Search" "EM" \
|
||||
--field="Band to Search":CB "$BANDS" \
|
||||
--button="Search Packet":3 \
|
||||
--button="Search ARDOP":2 \
|
||||
--button="Cancel":1)
|
||||
QUIT=$?
|
||||
GRID=$(echo $SEARCH | awk -F "|" '{print $1}')
|
||||
GRID=$(echo "${GRID^^}")
|
||||
BAND=$(echo $SEARCH | awk -F "|" '{print $2}')
|
||||
|
||||
if [ $QUIT = 1 ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
elif [ $QUIT = 252 ]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
##############PACKET SEARCH######################
|
||||
if [ $QUIT = 3 ]; then
|
||||
FILE=$MYPATH/ardop-list/packet.txt
|
||||
TEMP=/run/user/1000/temppacket.txt
|
||||
TEMP1=/run/user/1000/templist.txt
|
||||
TEMP2=/run/user/1000/tempalias.txt
|
||||
cat $FILE | tail -n +5 | grep '[^[:blank:]]' > $TEMP
|
||||
MAX=200
|
||||
rm $TEMP1
|
||||
echo "Search Packet"
|
||||
while read LINE
|
||||
do DISTANCE=$(echo $LINE | awk '{ print $3 }')
|
||||
CALL=$(echo $LINE | awk '{ print $1 }')
|
||||
#echo $DISTANCE
|
||||
if [ $DISTANCE -lt "$MAX" ]
|
||||
then
|
||||
echo $LINE | sed 's/packet:/ax25:/' >> $TEMP1
|
||||
fi
|
||||
done < $TEMP | yad --center --progress --pulsate --auto-close --no-buttons --text-align=center \
|
||||
--text="Please wait while the list is searched.\rThis takes about 30 seconds.\r<b>DON'T CLOSE THIS WINDOW</b>"
|
||||
INFO=$(PARSER='OFS="\n" {print $1, $2, $3, $4, $5, $6, $7, $9, $11}'
|
||||
|
||||
tail -50 $TEMP1 | awk "$PARSER" | \
|
||||
yad --title="Search Results" --width=1100 --height=500 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top \
|
||||
--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)
|
||||
BUT=$?
|
||||
if [ $BUT = 0 ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
elif [ "$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
|
||||
#check something was selected
|
||||
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
|
||||
jq '.connect_aliases += {'\""$CALL-$FREQ"\"' : '\"$SC\"'}' $CONFIG > $TEMP
|
||||
cp $TEMP $CONFIG
|
||||
rm $TEMP
|
||||
sudo killall pat
|
||||
sudo systemctl start pat@$WHO
|
||||
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" \
|
||||
--button=gtk-ok
|
||||
SEARCHMENU
|
||||
fi
|
||||
exit
|
||||
fi
|
||||
|
||||
#############ARDOP SEARCH####################
|
||||
|
||||
OUTFILE2=/run/user/1000/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
|
||||
elif [ $BAND = 30 ];then
|
||||
FILE=$ARDOPLIST/30mardoplist.txt
|
||||
cat $FILE | egrep -i $GRID[[:digit:]]{2} | tee "$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
|
||||
elif [ $BAND = 80 ];then
|
||||
FILE=$ARDOPLIST/80mardoplist.txt
|
||||
cat $FILE | egrep -i $GRID[[:digit:]]{2} | tee "$OUTFILE" > /dev/null 2>&1
|
||||
echo "80 done"
|
||||
fi
|
||||
|
||||
INFO=$(PARSER='OFS="\n" {print $1, $2, $3, $4, $5, $6, $7, $9, $11}'
|
||||
|
||||
tail -50 $OUTFILE | awk "$PARSER" | \
|
||||
yad --title="Search Results" --width=1100 --height=500 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top \
|
||||
--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)
|
||||
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
|
||||
|
||||
#check something was selected
|
||||
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
|
||||
jq '.connect_aliases += {'\""$CALL-$BAND"M"-$FREQ"\"' : '\"$SC\"'}' $CONFIG > $TEMP
|
||||
cp $TEMP $CONFIG
|
||||
rm $TEMP
|
||||
sudo killall pat
|
||||
sudo systemctl start pat@$WHO
|
||||
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
|
||||
|
||||
SEARCHMENU
|
||||
}
|
||||
SEARCHMENU
|
||||
}
|
||||
#--------------------------------
|
||||
# Open Map
|
||||
#--------------------------------
|
||||
MAP(){
|
||||
|
||||
if [ "$MAP" = "usa" ]; then
|
||||
MAP=$MYPATH/grid-map.pdf
|
||||
elif [ "$MAP" = "world" ]; then
|
||||
MAP=$MYPATH/worldgridmap.pdf
|
||||
fi
|
||||
xdg-open $MAP
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
42
auto-download
Executable file
42
auto-download
Executable file
@ -0,0 +1,42 @@
|
||||
#!/bin/bash
|
||||
|
||||
#update cron to download ardop list
|
||||
#20191126 km4ack
|
||||
|
||||
MYPATH=$HOME/patmenu2
|
||||
FILE=/run/user/1000/cronbkup.txt
|
||||
|
||||
crontab -l > $FILE
|
||||
|
||||
HOURS=00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23
|
||||
MINS=00,15,30,45
|
||||
|
||||
TEST=$(yad --center --wrap --width=250 --title="ARDOP Auto Download Setup" \
|
||||
--text="Please choose the time you would like to download the gateway list everyday" \
|
||||
--button="UPDATE:2" \
|
||||
--button="Exit:1" \
|
||||
--form --separator="," --item-separator="," \
|
||||
--field="Choose the hour":CB $HOURS \
|
||||
--field="Choose the minutes":CB $MINS \
|
||||
)
|
||||
|
||||
rc=$?
|
||||
if [[ $rc -eq 2 ]]; then
|
||||
echo "Updating Cron"
|
||||
HOUR=$(echo $TEST | awk -F ',' '{print $1}')
|
||||
MIN=$(echo $TEST | awk -F ',' '{print $2}')
|
||||
sed -i '/getardoplist/d' $FILE
|
||||
echo $MIN" "$HOUR" * * * $MYPATH/getardoplist" >> $FILE
|
||||
crontab $FILE
|
||||
echo
|
||||
echo "Your crontab has been updated. The gateway list"
|
||||
echo "will be downloaded daily at "$HOUR":"$MIN" hours"
|
||||
sleep 5
|
||||
rm $FILE
|
||||
elif [[ $rc -eq 1 ]]; then
|
||||
echo "BYE"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
|
262
autopat
Executable file
262
autopat
Executable file
@ -0,0 +1,262 @@
|
||||
#!/bin/bash
|
||||
|
||||
#script to perform auto connects to gateways
|
||||
#using pat winlink
|
||||
#20191015 KM4ACK
|
||||
|
||||
MYPATH=$HOME/patmenu2
|
||||
LOGO=$MYPATH/pmlogo.png
|
||||
MAIN=$MYPATH/patmenu
|
||||
|
||||
source $MYPATH/config
|
||||
|
||||
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
|
||||
echo "rig control is on"
|
||||
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
|
||||
|
||||
|
||||
|
||||
if [ $AMRRON = "no" ]
|
||||
then
|
||||
|
||||
DIRE=$(pidof direwolf)
|
||||
if [ -z "$DIRE" ]
|
||||
then
|
||||
echo
|
||||
else
|
||||
sudo killall direwolf kissattach
|
||||
fi
|
||||
|
||||
PIARDOPC=$(pidof piardopc)
|
||||
if [ -z "$PIARDOPC" ]
|
||||
then
|
||||
echo
|
||||
else
|
||||
sudo killall piardopc ardop-GUI
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
#clear any temp files from previous runs that might exist
|
||||
rm -rf $HOME/tempardop > /dev/null
|
||||
|
||||
ARDOPLIST=$MYPATH/ardop-list/
|
||||
|
||||
touch $LOG
|
||||
|
||||
DATE=$(date)
|
||||
|
||||
STARTRIG () {
|
||||
#start rigctld if not already
|
||||
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 USB Mode
|
||||
RIGUSB=$RIG" M $MODEHF 0"
|
||||
|
||||
#check rig is in USB
|
||||
MODE=$($RIG m | grep $MODEHF)
|
||||
|
||||
sleep 1
|
||||
|
||||
MODECHECK() {
|
||||
#check rig is in correct mode
|
||||
MODE=$($RIG m | grep $MODEHF)
|
||||
}
|
||||
|
||||
sleep 1
|
||||
|
||||
if [ -z $MODE ]
|
||||
then
|
||||
$RIGUSB
|
||||
MODECHECK
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
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=$ARDOPLIST"20mardoplist.txt"
|
||||
elif [ $2 = "30" ]
|
||||
then
|
||||
FILE=$ARDOPLIST"30mardoplist.txt"
|
||||
elif [ $2 = "40" ]
|
||||
then
|
||||
FILE=$ARDOPLIST"40mardoplist.txt"
|
||||
elif [ $2 = "80" ]
|
||||
then
|
||||
FILE=$ARDOPLIST"80mardoplist.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 ardop-gui & piardopc
|
||||
$ARDOPGUI &
|
||||
$ARDOP &
|
||||
sleep 10
|
||||
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
|
||||
|
||||
yad --title="SUCCESS" --width=300 --height=100 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top \
|
||||
--center --form --text="Successfully connected with $CALL" \
|
||||
--button=gtk-ok
|
||||
|
||||
if [ $AMRRON = "no" ]
|
||||
then
|
||||
sudo killall piardopc piARDOP_GUI
|
||||
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
|
||||
|
||||
#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
|
||||
#Stop ARDOP modem and gui
|
||||
sudo killall piardopc piARDOP_GUI
|
||||
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
|
||||
|
389
cat-functions
Normal file
389
cat-functions
Normal file
@ -0,0 +1,389 @@
|
||||
#function file for patmenu 2 catalog
|
||||
#20200430 km4ack
|
||||
|
||||
|
||||
MYPATH=$HOME/patmenu2
|
||||
LOGO=$MYPATH/pmlogo.png
|
||||
MAIN=$MYPATH/./catalog
|
||||
|
||||
#get callsign from pat config file
|
||||
CALLSIGN=$(cat $HOME/.wl2k/config.json | grep -m 1 mycall | sed 's/\"mycall\": \"//' | sed 's/\",//' | sed -e 's/^\s*//' | tr '[:lower:]' '[:upper:]')
|
||||
|
||||
|
||||
#COMPOSE EMAIL Function
|
||||
COMPOSE () {
|
||||
|
||||
#Count body characters
|
||||
BODYCOUNT=${#BODY}
|
||||
NEWCOUNT=$(expr $BODYCOUNT + 1)
|
||||
|
||||
#set date
|
||||
TODAY=$(date '+%Y/%m/%d %H:%M')
|
||||
TODAY1=$(date)
|
||||
|
||||
#generate 12 random number
|
||||
NEW_UUID=$(cat /dev/urandom | tr -dc 'A-Z0-9' | fold -w 12 | head -n 1)
|
||||
|
||||
#add .b2f to end of random number for new file name
|
||||
NEW_FILE=$HOME/.wl2k/mailbox/$CALLSIGN/out/$NEW_UUID".b2f"
|
||||
|
||||
#create new file
|
||||
touch $NEW_FILE
|
||||
|
||||
#add file contents
|
||||
echo "Mid: "$NEW_UUID >> $NEW_FILE
|
||||
echo "Body: "$NEWCOUNT >> $NEW_FILE
|
||||
echo "Content-Transfer-Encoding: 8bit" >> $NEW_FILE
|
||||
echo "Content-Type: text/plain; charset=ISO-8859-1" >> $NEW_FILE
|
||||
echo "Date: "$TODAY >> $NEW_FILE
|
||||
echo "From: "$CALLSIGN >> $NEW_FILE
|
||||
echo "Mbo: "$CALLSIGN >> $NEW_FILE
|
||||
echo "Subject: "$SUBJECT >> $NEW_FILE
|
||||
echo "To: "$TO >> $NEW_FILE
|
||||
echo "Type: Private" >> $NEW_FILE
|
||||
echo "" >> $NEW_FILE
|
||||
echo $BODY >> $NEW_FILE
|
||||
#give user some feedback
|
||||
echo "Your request has been posted to the outbox of Pat Winlink"
|
||||
echo "Please go to Pat and initiate a connection to send the request"
|
||||
yad --no-buttons --timeout=5 --center --timeout-indicator=top --title="POSTED" --text-align=center --width="300" height="300" \
|
||||
--text="Message Posted\rTo Outbox\r\rPlease go to Winlink and\rmake a connection\rto complete the\rrequest."
|
||||
$MAIN
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
|
||||
GATEWAY(){
|
||||
GATE=$(yad --form --width=420 --text-align=center --center --title="Pat Catalog" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Pat Catalog</b> by KM4ACK" \
|
||||
--field="Gateway List":CB "ARDOP|PACKET")
|
||||
BUT=$?
|
||||
|
||||
if [ $BUT = 252 ]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
GATE=$(echo $GATE | awk -F "|" '{print $1}')
|
||||
|
||||
if [ -z $GATE ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$GATE" = ARDOP ]; then
|
||||
echo ARDOP
|
||||
TO="INQUIRY"
|
||||
SUBJECT="REQUEST"
|
||||
BODY="PUB_ARDOP"
|
||||
COMPOSE
|
||||
elif [ "$GATE" = PACKET ]; then
|
||||
echo PACKET
|
||||
TO="INQUIRY"
|
||||
SUBJECT="REQUEST"
|
||||
BODY="PUB_PACKET"
|
||||
COMPOSE
|
||||
fi
|
||||
}
|
||||
|
||||
WEATHER(){
|
||||
WEATHER=$(yad --form --width=420 --text-align=center --center --title="Pat Catalog" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Pat Catalog</b> by KM4ACK" \
|
||||
--field="Weather Report":CB "GPS Weather|City Weather|GRIB Files")
|
||||
BUT=$?
|
||||
if [ $BUT = 252 ]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
WEATHER=$(echo $WEATHER | awk -F "|" '{print $1}')
|
||||
|
||||
if [ -z "$WEATHER" ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$WEATHER" = 'GPS Weather' ]; then
|
||||
echo "Need GPS weather"
|
||||
GPSDATA=$(gpspipe -r -n 10 | grep G\.GGA) #Thanks K4KDR!
|
||||
LAT=$(echo $GPSDATA | awk -F"," '{ print $3 }'| sed 's/\.//' | sed 's/./&./2')
|
||||
LON=$(echo $GPSDATA | awk -F"," '{ print $5 }'| sed 's/\.//' | sed 's/./&./3')
|
||||
TO="SMTP:query@saildocs.com"
|
||||
SUBJECT="<No Subject>"
|
||||
BODY="https://forecast.weather.gov/MapClick.php?lat="$LAT"&lon=-"$LON"&unit=0&lg=english&FcstType=text&TextType=1"
|
||||
COMPOSE
|
||||
elif [ "$WEATHER" = 'City Weather' ]; then
|
||||
FILE=$MYPATH/weather.txt
|
||||
|
||||
|
||||
PARSER='OFS="\n" {print $1, $2, $3}'
|
||||
|
||||
CITY=$(tail -76 $FILE | awk "$PARSER" | \
|
||||
yad --title="Search Results" --width=500 --height=500 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top \
|
||||
--center --checklist --list \
|
||||
--column Pick --column ID --column Area \
|
||||
--button="Choose":2)
|
||||
|
||||
CITY=$(echo $CITY | awk -F "|" '{print $2}')
|
||||
|
||||
if [ -z "$CITY" ]
|
||||
then
|
||||
$MAIN &
|
||||
exit
|
||||
fi
|
||||
|
||||
TO="INQUIRY"
|
||||
SUBJECT="REQUEST"
|
||||
BODY=$CITY
|
||||
COMPOSE
|
||||
elif [ "$WEATHER" = 'GRIB Files' ]; then
|
||||
echo "Need GRIB Files"
|
||||
|
||||
FILE=/run/user/1000
|
||||
QUESTION () {
|
||||
|
||||
DEGREE=$(yad --center --wrap --width=350 --title="Auto Download" --text-align=center \
|
||||
--text="How many degrees would you like" \
|
||||
--form --separator="|" --item-separator="|" \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top \
|
||||
--field="Degrees":CB "2|6|10" \
|
||||
--button="Cancel:1" \
|
||||
--button="Continue:2")
|
||||
BUT=$?
|
||||
if [ $BUT = 1 ] || [ -z "$BUT" ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
elif [ $BUT = 252 ]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
ANS=$(echo $DEGREE | awk -F "|" '{print $1}')
|
||||
echo $ANS
|
||||
|
||||
if [ $ANS = "10" ]
|
||||
then
|
||||
AREA=5
|
||||
echo "aree=5"
|
||||
elif [ $ANS = "6" ]
|
||||
then
|
||||
AREA=3
|
||||
elif [ $ANS = "2" ]
|
||||
then
|
||||
AREA=1
|
||||
fi
|
||||
|
||||
GPS=$(gpspipe -r -n 10 | grep G\.GGA)
|
||||
|
||||
LAT=$(echo $GPS | awk -F "," '{printf "%.0f \n", $3 }' | cut -c1-2)
|
||||
LATD=$(echo $GPS | awk -F "," '{print $4}')
|
||||
LON=$(echo $GPS | awk -F "," '{printf "%.0f \n", $5 }' | cut -c1-2)
|
||||
LOND=$(echo $GPS | awk -F "," '{print $6}')
|
||||
|
||||
#do some math
|
||||
let NEWLATADD=$LAT+$AREA
|
||||
let NEWLONADD=$LON+$AREA
|
||||
let NEWLATSUB=$LAT-$AREA
|
||||
let NEWLONSUB=$LON-$AREA
|
||||
|
||||
GRIBFILE=$FILE/gribtemp
|
||||
GRIBDATA () {
|
||||
yad --height=600 --width=400 --center --list --checklist --column=Request --column=Product --separator="," \
|
||||
--text "Select the data to request." --title="GRIB DATA REQUEST" \
|
||||
--button="Exit:1" --button="Request Selected:2" < $MYPATH/griblist > $GRIBFILE
|
||||
|
||||
BUTTON=$?
|
||||
|
||||
if [ $BUTTON = "252" ]
|
||||
then
|
||||
exit
|
||||
elif [ $BUTTON = "1" ]
|
||||
then
|
||||
$MAIN &
|
||||
exit
|
||||
fi
|
||||
|
||||
#echo "button = "$BUTTON
|
||||
|
||||
};export -f GRIBDATA
|
||||
|
||||
GRIBDATA
|
||||
|
||||
sed -i 's/TRUE,//' $GRIBFILE
|
||||
|
||||
var=$(cat $GRIBFILE)
|
||||
var1=$(echo $var | sed 's/ //g' | sed 's/,*$//')
|
||||
rm $GRIBFILE
|
||||
|
||||
#example of correct format
|
||||
# send gfs:40N,60N,140W,120W|2,2|24,48,72|PRESS,WIND
|
||||
|
||||
TO=query@saildocs.com
|
||||
SUBJECT=REQUEST
|
||||
BODY=$(echo "send gfs:"$NEWLATSUB$LATD","$NEWLATADD$LATD","$NEWLONADD$LOND","$NEWLONSUB$LOND"|2,2|24,48,72|"$var1)
|
||||
COMPOSE
|
||||
}
|
||||
QUESTION
|
||||
|
||||
exit
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
POSITION(){
|
||||
POST=$(yad --form --width=420 --text-align=center --center --title="Position" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Position Reports</b> by KM4ACK" \
|
||||
--field="Choose":CB "Post Position|Single Station Request|All Nearby Stations" \
|
||||
--field="Enter Call Below <b>ONLY</b> for Single Station Requests":LBL \
|
||||
--field="Call Sign-SSID" \
|
||||
--field="Comment for Post Position" \
|
||||
--button="Main Menu":1 \
|
||||
--button="Continue":2)
|
||||
|
||||
QUIT=$?
|
||||
|
||||
if [ $QUIT = 1 ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
elif [ $QUIT = 252 ]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
REPORT=$(echo $POST | awk -F "|" '{print $1}')
|
||||
|
||||
if [ "$REPORT" = "Post Position" ]; then
|
||||
echo "posting position"
|
||||
COMMENT=$(echo $POST | awk -F "|" '{print $4}')
|
||||
pat position -c "$COMMENT" | yad --center --pulsate --progress --auto-close --text="Getting GPS Data" --no-buttons &
|
||||
yad --center --timeout=3 --timeout-indicator=top --no-buttons \
|
||||
--text="Position posted to\rPat Winlink Outbox"
|
||||
$MAIN &
|
||||
exit
|
||||
elif [ "$REPORT" = "Single Station Request" ]; then
|
||||
CALL=$(echo $POST | awk -F "|" '{print $3}')
|
||||
TO="QTH"
|
||||
SUBJECT="POSITION REQUEST"
|
||||
BODY=$CALL
|
||||
COMPOSE
|
||||
elif [ "$REPORT" = "All Nearby Stations" ]; then
|
||||
TO="INQUIRY"
|
||||
SUBJECT="REQUEST"
|
||||
BODY="WL2K_NEARBY"
|
||||
COMPOSE
|
||||
fi
|
||||
|
||||
|
||||
}
|
||||
|
||||
PROPAGATION(){
|
||||
PROP=$(yad --form --width=420 --text-align=center --center --title="Propagation" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Propagation Reports</b> by KM4ACK" \
|
||||
--field="Choose Report":CB "3 Day Propagation Report|Daily WWV Report" \
|
||||
--button="Main Menu":1 \
|
||||
--button="Continue":2)
|
||||
QUIT=$?
|
||||
REPORT=$(echo $PROP | awk -F "|" '{print $1}')
|
||||
|
||||
if [ $QUIT = 1 ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
elif [ $QUIT = 252 ]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$REPORT" = "3 Day Propagation Report" ]; then
|
||||
TO="INQUIRY"
|
||||
SUBJECT="REQUEST"
|
||||
BODY="PROP_3DAY"
|
||||
COMPOSE
|
||||
elif [ "$REPORT" = "Daily WWV Report" ]; then
|
||||
TO="INQUIRY"
|
||||
SUBJECT="REQUEST"
|
||||
BODY="PROP_WWV"
|
||||
COMPOSE
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
NEWS(){
|
||||
NEWS=$(yad --form --width=420 --text-align=center --center --title="News Reports" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>News Reports</b> by KM4ACK\r\rNews reports provided by Reuters" \
|
||||
--field="Choose News Report":CB "Daily|Market|Money|US News" \
|
||||
--button="Main Menu":1 \
|
||||
--button="Continue":2)
|
||||
QUIT=$?
|
||||
NEWS=$(echo $NEWS | awk -F "|" '{print $1}')
|
||||
|
||||
if [ $QUIT = 1 ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
elif [ $QUIT = 252 ]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$NEWS" = "Daily" ]; then
|
||||
TO="SMTP:query@saildocs.com"
|
||||
SUBJECT="subject"
|
||||
BODY="send Reuters-Daily-News"
|
||||
COMPOSE
|
||||
elif [ "$NEWS" = "Market" ]; then
|
||||
TO="SMTP:query@saildocs.com"
|
||||
SUBJECT="subject"
|
||||
BODY="send Reuters-Market"
|
||||
COMPOSE
|
||||
elif [ "$NEWS" = "Money" ]; then
|
||||
TO="SMTP:query@saildocs.com"
|
||||
SUBJECT="subject"
|
||||
BODY="send Reuters-Money"
|
||||
COMPOSE
|
||||
elif [ "$NEWS" = "US News" ]; then
|
||||
TO="SMTP:query@saildocs.com"
|
||||
SUBJECT="subject"
|
||||
BODY="send Reuters-US-News"
|
||||
COMPOSE
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
35
catalog
Executable file
35
catalog
Executable file
@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Pat Catalog
|
||||
#20200427 KM4ACK
|
||||
#side note: written during covid-19 outbreak of 2020
|
||||
|
||||
#######DEV NOTES#############
|
||||
#############################
|
||||
|
||||
|
||||
#############################
|
||||
|
||||
MYPATH=$HOME/patmenu2
|
||||
LOGO=$MYPATH/pmlogo.png
|
||||
MAIN=$MYPATH/./patmenu
|
||||
|
||||
|
||||
yad --form --width=420 --text-align=center --center --title="Pat Catalog" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Pat Catalog</b> by KM4ACK" \
|
||||
--field="Gateway List":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/cat-functions; GATEWAY"' \
|
||||
--field="Weather Reports":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/cat-functions; WEATHER"' \
|
||||
--field="Position Reports":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/cat-functions; POSITION"' \
|
||||
--field="Propagation Reports":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/cat-functions; PROPAGATION"' \
|
||||
--field="News Reports":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/cat-functions; NEWS"' \
|
||||
--button="Main Menu":1
|
||||
|
||||
QUIT=$?
|
||||
|
||||
if [ $QUIT = 1 ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
elif [ $QUIT = 252 ]; then
|
||||
exit
|
||||
fi
|
188
changelog
Normal file
188
changelog
Normal file
@ -0,0 +1,188 @@
|
||||
|
||||
|
||||
release=0.74
|
||||
|
||||
|
||||
Changelog
|
||||
add FLRIG check to auto pat
|
||||
0.74 add option to install ruby if needed
|
||||
add gps grid update to manage pat winlink section
|
||||
bump version #
|
||||
0.73 attempt to fix success notice for auto pat
|
||||
update path in main menu for new changelog file name
|
||||
rename release to changelog
|
||||
add alert if auto pat has no data to work with
|
||||
disallow starting modems multiple times
|
||||
check if FLRIG is running when starting modems
|
||||
bump version #
|
||||
0.72 kill all modems on exit from main menu
|
||||
add notice to auto connect if no connections were successful
|
||||
bump version number
|
||||
0.71 COMPLETE RE WRITE TO INCLUDE YAD INTERFACE
|
||||
bump version #
|
||||
0.70 add version number to main menu
|
||||
create backup of start-pat2m
|
||||
fix issue 24 https://github.com/km4ack/patmenu/issues/24
|
||||
bum version #
|
||||
0.69 fix issue 33 https://github.com/km4ack/patmenu/issues/33
|
||||
bump version #
|
||||
0.68 remove bug warning from README.md
|
||||
reorder release file so latest revs at top
|
||||
fix release display in update script
|
||||
update config.default to match config
|
||||
fix typo in auto pat (Thanks Drudge!)
|
||||
bump version #
|
||||
0.67 write email backup/restore scripts
|
||||
add email backup/restore to pat manage
|
||||
fix issue 25 https://github.com/km4ack/patmenu/issues/25
|
||||
move GRIB files to weather section https://github.com/km4ack/patmenu/issues/26
|
||||
add email-bkup & email-restore +x to setup file
|
||||
bump version #
|
||||
0.66 stop modem starts from puking errors if var not found
|
||||
add extra check before trimode is run
|
||||
add pulseaudio/pavucontrol install check to trimode
|
||||
bump version #
|
||||
0.65 add grib request to catalog
|
||||
bump version #
|
||||
0.64 add amrron/trimode check to both modem start scripts
|
||||
bump version #
|
||||
0.63 fix catalog typo that caused crash
|
||||
bump version #
|
||||
0.62 add post position to catalog
|
||||
prevent stopping modems in autopat for amrron ops
|
||||
add trimode script for amrron operators
|
||||
revise trimode in config
|
||||
bump version #
|
||||
0.61 update FLRIG rigctl in config (existing users will not see this)
|
||||
add trimode variable to config (existing users will not see this)
|
||||
bump version #
|
||||
0.60 revert start-pat2m due to critical flaw
|
||||
bump version number
|
||||
0.59 improve how direwolf starts on buster
|
||||
add slight delay after starting ardop mode
|
||||
bump version #
|
||||
0.58 add callsign to config file (existing users will not see this)
|
||||
add config check when menu starts. exit if config not modded
|
||||
rig control set to no by default in config file
|
||||
bump version #
|
||||
0.57 fix bug in add packet script
|
||||
bump version #
|
||||
0.56 add min < max check in auto pat
|
||||
add answer check at beginning of auto pat
|
||||
rewrite patauto function in patmenu-new
|
||||
check running modems & stop if needed when running autopat
|
||||
add grid square check to getardoplist and warn if not set
|
||||
fix symlink in setup script
|
||||
add exit to restore config script
|
||||
convert callsign to upper case in catalog script
|
||||
bump version #
|
||||
0.55 add exit option to changeconf script
|
||||
add symlink to setup for patmenu in /usr/local/bin
|
||||
open pat inbox in browser when starting packet or ardop modems
|
||||
change map viewer in findardop to variable
|
||||
fix map viewer error from showing in pat menu
|
||||
update main menu with new manage pat menu feature
|
||||
check autopat to make sure 20,30,40,80 is entered
|
||||
provide exit from autopat
|
||||
bump version #
|
||||
0.54 update gpsdata var in catalog. Thanks K4KDR!
|
||||
create changeconf script to deal with multiple config files
|
||||
add menu-mange script for pat menu management
|
||||
update setup script to +x changeconf & menu-manage
|
||||
bump version #
|
||||
0.53 add buster check to start-pat2m
|
||||
bump version #
|
||||
0.52 Fix missing file in alias-add-packet
|
||||
revert to old style symlink until issue is resolved with new style
|
||||
move kissattach to variable in config file
|
||||
update restore-config file
|
||||
bump version #
|
||||
0.51 Fix variable in autopat
|
||||
add packet list download to getardoplist
|
||||
add script alias-add-packet
|
||||
add script restore-config
|
||||
update pat-manage menu
|
||||
update setup script
|
||||
bump version #
|
||||
0.50 add way to exit alias-del
|
||||
make desktop shortcut executable
|
||||
add rigcontrol check to alias-add for right shortcut
|
||||
complete re write of findardop that includes add alias shortcuts
|
||||
bump version #
|
||||
0.49 fix bug and add alias-del
|
||||
update pat-manage
|
||||
add band/freq to new alias when added from pat manage
|
||||
bump version #
|
||||
0.48 remove alias-del until major bug can be resolved
|
||||
bump version #
|
||||
0.47 add alias-add script
|
||||
add alias-del script
|
||||
add check/install jq to setup script (needed for new alias scripts)
|
||||
add new pat manage menu script
|
||||
update main menu to include pat manage script
|
||||
bump version #
|
||||
0.46 add last DL to findardop
|
||||
add log file entry to getardoplist
|
||||
update readme file
|
||||
bump version #
|
||||
0.45 sort getardoplist by distance
|
||||
new style desktop link to setup script
|
||||
bump version #
|
||||
0.44 add set-auto-update to findardop script
|
||||
add new script auto-download called from findardop
|
||||
add YAD install to setup script
|
||||
0.43 start modems in backgound
|
||||
verify other modem not running before starting a new modem
|
||||
stop ardop_gui when stopping modems
|
||||
fix issue #17-choose correct text editor based on version
|
||||
0.42 give user info on change log before update
|
||||
add rig control check to auto-pat
|
||||
0.41 add start ARDOP-GUI to start ardop
|
||||
add start ARDOP-GUI to autopat
|
||||
remove temp files at start of autopat
|
||||
0.40 change rigctld start in autopat
|
||||
add backup for config
|
||||
0.39 add rigctld check & start to autopat
|
||||
0.38 close if/then statement in start-pat2m
|
||||
0.37 add rigctld check & start if needed to start-pat2m
|
||||
0.36 add rigctld check & start if needed to start-pat-ardop
|
||||
0.35 move log file variable to config file
|
||||
0.34 update uninstall
|
||||
0.33 add mode to config file
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
16
config
Normal file
16
config
Normal file
@ -0,0 +1,16 @@
|
||||
#Config file for Pat Menu
|
||||
#20200429 KM4ACK
|
||||
MYCALLSIGN=KM4ACK
|
||||
MAP=usa
|
||||
RIGCONTROL=yes
|
||||
ARDOP="/home/pi/ardop/./piardopc 8515 plughw:1,0 plughw:1,0"
|
||||
ARDOPGUI="/home/pi/ardop/./piARDOP_GUI"
|
||||
DIREWOLF="direwolf -p"
|
||||
KISS="sudo /usr/sbin/kissattach /tmp/kisstnc"
|
||||
AXP=wl2k
|
||||
RIG="/usr/local/bin/rigctl -m 4"
|
||||
MODEHF=PKTUSB
|
||||
MODE2M=FM
|
||||
PORT=5050
|
||||
LOG=/home/pi/Documents/mylog.txt
|
||||
AMRRON=no
|
80
default.config
Normal file
80
default.config
Normal file
@ -0,0 +1,80 @@
|
||||
#20191230 KM4ACK
|
||||
|
||||
#This setup is designed to work with a VOX soundcard (ie Signalink)
|
||||
#If using a VOX soundcard or radio with a VOX soundcard built in
|
||||
#simply edit the call sign below to yours and change
|
||||
#RIGCONTROL=no to RIGCONTROL=yes below.
|
||||
#Now test the setup. Be sure you have FLRIG open
|
||||
#and configured for your radio.
|
||||
#AMRRON operators see bottom of this file for trimode.
|
||||
|
||||
|
||||
#change next line to your call sign
|
||||
MYCALLSIGN=N0CALL
|
||||
|
||||
#enter your piardopc command on the line below
|
||||
#Be sure to not delete the quotation marks.
|
||||
ARDOP="$HOME/ardop/./piardopc 8515 plughw:1,0 plughw:1,0"
|
||||
|
||||
#Path to ardop-gui if installed
|
||||
ARDOPGUI=$HOME/ardop/./piARDOP_GUI
|
||||
|
||||
#command to start direwolf
|
||||
DIREWOLF="direwolf -p"
|
||||
|
||||
#Kiss attach command
|
||||
KISS="sudo /usr/sbin/kissattach /tmp/kisstnc"
|
||||
|
||||
#axport name for kissattach
|
||||
AXP=wl2k
|
||||
|
||||
#Set map to use with findardop
|
||||
MAP=usa
|
||||
#MAP=world
|
||||
|
||||
#Use rig control? yes or no
|
||||
#NOTE: autopat will not work without rig control
|
||||
RIGCONTROL=no
|
||||
|
||||
#enter your rig control command below. DO NOT enter mode
|
||||
#or frequency commands as these are handled by the script
|
||||
#Be sure to not delete the quotation marks. DO NOT use
|
||||
#"rigctld" here. Use "rigctl"
|
||||
#example for Yaesu 857D
|
||||
#RIG="/usr/local/bin/rigctl -m 122 -r /dev/ttyUSB0 -s 4800"
|
||||
|
||||
#Pass rig control commands through FLRIG (default)
|
||||
RIG="/usr/local/bin/rigctl -m 4"
|
||||
|
||||
#Mode used for HF digital comms on your radio
|
||||
MODEHF=USB
|
||||
|
||||
#Mode used for packet digital comms on your radio
|
||||
MODE2M=FM
|
||||
|
||||
#port number used by pat html service
|
||||
#pat default is 8080. I prefer 5000
|
||||
PORT=8080
|
||||
|
||||
#Path to log file
|
||||
LOG=$HOME/Documents/mylog.txt
|
||||
|
||||
#Below this line is only useful to AMRRON operators. Others shouldn't edit below this line.
|
||||
#NOTE:The amrron portion of this script is still experimental.
|
||||
|
||||
#set next line to yes for tri-mode setup
|
||||
AMRRON=no
|
||||
|
||||
#amrron operaters should save/exit this config file after setting above to yes and then run
|
||||
# bash ~/patmenu/trimode
|
||||
#to enable trimode ops
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
37
find2
Executable file
37
find2
Executable file
@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
|
||||
#FIND-ARDOP
|
||||
#20200425 KM4ACK
|
||||
#side note: written during covid-19 outbreak of 2020
|
||||
|
||||
#######DEV NOTES#############
|
||||
#############################
|
||||
|
||||
|
||||
#############################
|
||||
|
||||
MYPATH=$HOME/patmenu2
|
||||
PATMENU=$MYPATH/patmenu
|
||||
LOGO=$MYPATH/pmlogo.png
|
||||
CURRENT=$(crontab -l | grep getardoplist | awk '{print $2":"$1}')
|
||||
|
||||
source $MYPATH/FA-functions
|
||||
|
||||
yad --form --width=420 --text="<b>Find Gateways</b> by KM4ACK" --text-align=center --center --title="Find Gateways" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top \
|
||||
--text="<b>Find Gateways</b> by KM4ACK" \
|
||||
--field="Search for Gateway":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/FA-functions; GRIDSEARCH"' \
|
||||
--field="View Grid Map":fbtn 'bash -c "source /home/pi/patmenu2/FA-functions; MAP"' \
|
||||
--field="Download Gateway List":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/FA-functions; DOWNLIST"' \
|
||||
--field="Auto List Download <b>$CURRENT</b>":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/FA-functions; AUTODOWN"' \
|
||||
--field="$LASTDL":LBL \
|
||||
--button="Main Menu":1
|
||||
|
||||
QUIT=$?
|
||||
|
||||
if [ $QUIT = 1 ]; then
|
||||
$PATMENU &
|
||||
exit
|
||||
elif [ $QUIT = 252 ]; then
|
||||
exit
|
||||
fi
|
125
getardoplist
Executable file
125
getardoplist
Executable file
@ -0,0 +1,125 @@
|
||||
#!/bin/bash
|
||||
|
||||
#This script will download the ardop list to the path set below
|
||||
#It is intended to be run by cron daily
|
||||
#to keep the list current. km4ack 20181214
|
||||
#Hint: create a cron job that reads
|
||||
#30 23 * * * /usr/local/bin/getardoplist
|
||||
#This script is provided AS IS
|
||||
#Feel free to mod for your use
|
||||
|
||||
#Two versions of this script exist. One for manual downloads and
|
||||
#one for cron downloads. The one for cron has no YAD interface.
|
||||
#Cron wouldn't run correctly with YAD in the code. The other file
|
||||
#is .getardoplist-cron
|
||||
|
||||
TODAY=$(date)
|
||||
|
||||
#path where files are located
|
||||
#must match path in findardop script
|
||||
MYPATH=$HOME/patmenu2/ardop-list/
|
||||
|
||||
#my log file
|
||||
LOG=$HOME/Documents/mylog.txt
|
||||
|
||||
GRIDCK=$(jq .locator $HOME/.wl2k/config.json)
|
||||
if [ ${#GRIDCK} -lt 3 ]
|
||||
then
|
||||
echo "Grid square not set in Pat Configure" | tee -a $LOG
|
||||
echo "Distances/Bearings will not be accurate"
|
||||
yad --center \
|
||||
--text="Grid square not set in Pat Configure File.\r Run \'pat configure\' to fix"
|
||||
exit
|
||||
fi
|
||||
|
||||
#make directory if it doesn't exist
|
||||
mkdir -p $MYPATH
|
||||
|
||||
#set variables for each 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'
|
||||
|
||||
#check internet connection
|
||||
echo "Please wait while we check your internet connection"
|
||||
echo "This may take up to a minute"
|
||||
#yad --center --timeout=3 --timeout-indicator=top --no-buttons \
|
||||
#--text="Please wait while we check your connection \rThis can take up to 30 seconds" &
|
||||
wget -q --tries=5 --timeout=10 --spider http://google.com | yad --center --progress --pulsate --timeout-indicator=top --auto-close --no-buttons --text="Checking internet connection"
|
||||
if [[ $? -eq 0 ]]; then
|
||||
echo
|
||||
#yad --center --timeout=2 --timeout-indicator=top --no-buttons --text="Connection Detected" &
|
||||
echo
|
||||
echo "Please wait while files are download"
|
||||
echo "This may take several minutes"
|
||||
echo "Depending on your internet speed"
|
||||
else
|
||||
yad --center --timeout=2 --timeout-indicator=top --no-buttons --text="You are not connected to the internet" &
|
||||
exit
|
||||
fi
|
||||
#remove old files before downloading new ones
|
||||
if [ -f $THIRTY ]; then
|
||||
rm $THIRTY
|
||||
fi
|
||||
|
||||
if [ -f $FILE ]; then
|
||||
rm $FILE
|
||||
fi
|
||||
|
||||
if [ -f $EIGHTY ]; then
|
||||
rm $EIGHTY
|
||||
fi
|
||||
|
||||
if [ -f $FORTY ]; then
|
||||
rm $FORTY
|
||||
fi
|
||||
|
||||
if [ -f $TWENTY ]; then
|
||||
rm $TWENTY
|
||||
fi
|
||||
|
||||
if [ -f $PACKET ]; then
|
||||
rm $PACKET
|
||||
fi
|
||||
|
||||
#put date on top line of each file
|
||||
echo "List Last Downloaded $(date)" >> $FILE
|
||||
echo "List Last Downloaded $(date)" >> $FORTY
|
||||
echo "List Last Downloaded $(date)" >> $EIGHTY
|
||||
echo "List Last Downloaded $(date)" >> $TWENTY
|
||||
echo "List Last Downloaded $(date)" >> $THIRTY
|
||||
echo "List Last Downloaded $(date)" >> $PACKET
|
||||
|
||||
#yad --center --progress --pulsate --timeout-indicator=top --auto-close --no-buttons --text="Start Download"
|
||||
|
||||
#download list to individual files.
|
||||
DL(){
|
||||
pat rmslist -s --mode ardop --force-download >> $FILE
|
||||
pat rmslist -s --band 80m --mode ardop --force-download >> $EIGHTY
|
||||
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
|
||||
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\r<b>DO NOT CLOSE THIS WINDOW</b>\rDoing so will abort the download."
|
||||
if [ -f "$FILE" ]
|
||||
then
|
||||
echo $TODAY" RMS Gateway list download Success" >> $LOG
|
||||
echo;echo "RMS gateway list download success"
|
||||
else
|
||||
echo $TODAY" RMS Gateway list download FAIL" >> $LOG
|
||||
echo;echo "RMS gateway list failed to download"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
25
getgrid
Executable file
25
getgrid
Executable file
@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
require 'gpsd_client'
|
||||
require 'maidenhead'
|
||||
require 'socket'
|
||||
require 'json'
|
||||
|
||||
ft8call_port = 2237
|
||||
|
||||
gpsd = GpsdClient::Gpsd.new()
|
||||
gpsd.start()
|
||||
apicmd = {}
|
||||
|
||||
#print come info to the scree
|
||||
#puts "Your location is being update"
|
||||
|
||||
# get maidenhead if gps is ready
|
||||
if gpsd.started?
|
||||
pos = gpsd.get_position
|
||||
maid = Maidenhead.to_maidenhead(pos[:lat], pos[:lon], precision = 5)
|
||||
# puts "lat = #{pos[:lat]}, lon = #{pos[:lon]}, grid = #{maid}"
|
||||
puts "#{maid}"
|
||||
apicmd = {:type => "STATION.SET_GRID", :value => maid}
|
||||
end
|
||||
|
22
griblist
Normal file
22
griblist
Normal file
@ -0,0 +1,22 @@
|
||||
false
|
||||
WIND
|
||||
false
|
||||
PRESS
|
||||
false
|
||||
WAVES
|
||||
false
|
||||
APCP
|
||||
false
|
||||
PRMSL
|
||||
false
|
||||
HGT500
|
||||
false
|
||||
SFCTMP
|
||||
false
|
||||
TMP500
|
||||
false
|
||||
LFTX
|
||||
false
|
||||
CAPE
|
||||
|
||||
|
4785
grid-map.pdf
Normal file
4785
grid-map.pdf
Normal file
File diff suppressed because one or more lines are too long
23
manage-menu
Executable file
23
manage-menu
Executable file
@ -0,0 +1,23 @@
|
||||
#!/bin/bash
|
||||
|
||||
MYPATH=$HOME/patmenu2
|
||||
LOGO=$MYPATH/pmlogo.png
|
||||
source $MYPATH/manage-menu-functions
|
||||
MAIN=$MYPATH/patmenu
|
||||
|
||||
|
||||
yad --form --width=420 --text-align=center --center --title="Settings" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Pat Menu Settings/Config</b> by KM4ACK" \
|
||||
--field="Current Config Settings":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/manage-menu-functions; CURRENTCONFIG"' \
|
||||
--field="Create New Config File":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/manage-menu-functions; NEWCONFIG"' \
|
||||
--field="Load Config File":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/manage-menu-functions; LOADCONFIG"' \
|
||||
--button="Main Menu":1
|
||||
BUT=$?
|
||||
|
||||
if [ $BUT = 1 ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
fi
|
||||
|
||||
echo $?
|
249
manage-menu-functions
Normal file
249
manage-menu-functions
Normal file
@ -0,0 +1,249 @@
|
||||
|
||||
|
||||
MYPATH=$HOME/patmenu2
|
||||
MAIN=$MYPATH/./manage-menu
|
||||
LOGO=$MYPATH/pmlogo.png
|
||||
|
||||
NEWCONFIG(){
|
||||
source $MYPATH/config
|
||||
CONFIGTMP=$MYPATH/config.temp
|
||||
|
||||
SETTINGS=$(yad --form --width=600 --text-align=center --center --title="Pat Menu Settings" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Pat Menu Settings</b> by KM4ACK" \
|
||||
--field="Call Sign" "$MYCALLSIGN" \
|
||||
--field="MAP":CB "usa|world" \
|
||||
--field="Rig Control":CB "no|yes" \
|
||||
--field="ARDOP Command" "$ARDOP" \
|
||||
--field="ARDOP GUI Command" "$ARDOPGUI" \
|
||||
--field="Direwolf Command" "$DIREWOLF" \
|
||||
--field="KISS Command" "$KISS" \
|
||||
--field="AX25 Port" "$AXP" \
|
||||
--field="Rig Control Command" "$RIG" \
|
||||
--field="HF Mode for Radio" "$MODEHF" \
|
||||
--field="2M Mode for Radio" "$MODE2M" \
|
||||
--field="Pat Port" "$PORT" \
|
||||
--field="Log File Location" "$LOG" \
|
||||
--field="AmRRON":CB "no|yes" \
|
||||
--button="Create":2 \
|
||||
--button="Cancel":1)
|
||||
BUT=$?
|
||||
if [ $BUT = 1 ]; then
|
||||
$MAIN
|
||||
elif [ $BUT = 252 ]; then
|
||||
exit
|
||||
elif [ $BUT = 2 ]; then
|
||||
MYCALLSIGN=$(echo $SETTINGS | awk -F "|" '{print $1}')
|
||||
MAP=$(echo $SETTINGS | awk -F "|" '{print $2}')
|
||||
RIGCONTROL=$(echo $SETTINGS | awk -F "|" '{print $3}')
|
||||
ARDOP=$(echo $SETTINGS | awk -F "|" '{print $4}')
|
||||
ARDOPGUI=$(echo $SETTINGS | awk -F "|" '{print $5}')
|
||||
DIREWOLF=$(echo $SETTINGS | awk -F "|" '{print $6}')
|
||||
KISS=$(echo $SETTINGS | awk -F "|" '{print $7}')
|
||||
AXP=$(echo $SETTINGS | awk -F "|" '{print $8}')
|
||||
RIG=$(echo $SETTINGS | awk -F "|" '{print $9}')
|
||||
MODEHF=$(echo $SETTINGS | awk -F "|" '{print $10}')
|
||||
MODE2M=$(echo $SETTINGS | awk -F "|" '{print $11}')
|
||||
PORT=$(echo $SETTINGS | awk -F "|" '{print $12}')
|
||||
LOG=$(echo $SETTINGS | awk -F "|" '{print $13}')
|
||||
AMRRON=$(echo $SETTINGS | awk -F "|" '{print $14}')
|
||||
|
||||
NAME=$(yad --form --width=600 --text-align=center --center --title="Name?" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Pat Menu Settings</b> by KM4ACK" \
|
||||
--field="New Config Name")
|
||||
BUT=$?
|
||||
if [ $BUT = 1 ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
else
|
||||
NEWCONFIG=$(echo $NAME | awk -F "|" '{print $1}')
|
||||
fi
|
||||
|
||||
#NEWCONFIG=$(echo $SETTINGS | awk -F "|" '{print $15}')
|
||||
#NEWCONFIG=$(echo $NEWCONFIG | tr -d "[:blank:]")
|
||||
NEWCONFIG=$(echo $NEWCONFIG | sed 's/ /./g')
|
||||
NEWCONFIG=$NEWCONFIG.config
|
||||
|
||||
echo "#Config file for Pat Menu" > $CONFIGTMP
|
||||
echo "#20200429 KM4ACK" >> $CONFIGTMP
|
||||
echo "MYCALLSIGN=$MYCALLSIGN" >> $CONFIGTMP
|
||||
echo "MAP=$MAP" >> $CONFIGTMP
|
||||
echo "RIGCONTROL=$RIGCONTROL" >> $CONFIGTMP
|
||||
echo "ARDOP=\"$ARDOP\"" >> $CONFIGTMP
|
||||
echo "ARDOPGUI=\"$ARDOPGUI\"" >> $CONFIGTMP
|
||||
echo "DIREWOLF=\"$DIREWOLF\"" >> $CONFIGTMP
|
||||
echo "KISS=\"$KISS\"" >> $CONFIGTMP
|
||||
echo "AXP=$AXP" >> $CONFIGTMP
|
||||
echo "RIG=\"$RIG\"" >> $CONFIGTMP
|
||||
echo "MODEHF=$MODEHF" >> $CONFIGTMP
|
||||
echo "MODE2M=$MODE2M" >> $CONFIGTMP
|
||||
echo "PORT=$PORT" >> $CONFIGTMP
|
||||
echo "LOG=$LOG" >> $CONFIGTMP
|
||||
echo "AMRRON=$AMRRON" >> $CONFIGTMP
|
||||
CHECKFILE=$(ls $MYPATH | grep $NEWCONFIG)
|
||||
if [ -z "$CHECKFILE" ];then
|
||||
cp $CONFIGTMP $MYPATH/$NEWCONFIG
|
||||
rm $CONFIGTMP
|
||||
else
|
||||
echo "FILE ALREADY EXISTS" ######################
|
||||
yad --form --width=600 --text-align=center --center --title="Pat Menu Settings" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="\r\rFile already exist!\rOverwrite existing config file?" \
|
||||
--button="Yes":2 \
|
||||
--button="No":1
|
||||
BUT=$?
|
||||
if [ $BUT = 1 ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
elif [ $BUT = 2 ]; then
|
||||
cp $CONFIGTMP $MYPATH/$NEWCONFIG
|
||||
rm $CONFIGTMP
|
||||
fi
|
||||
|
||||
fi
|
||||
yad --title="Config Created" --width=400 --height=200 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top \
|
||||
--center --text="$NEWCONFIG created\r\r<b>Don't forget to load the new config file</b>" \
|
||||
--button=gtk-ok
|
||||
$MAIN &
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
LOADCONFIG(){
|
||||
OUTFILE=/run/user/1000/configlist.tmp
|
||||
|
||||
ls $MYPATH/ | grep .config > $OUTFILE
|
||||
|
||||
INFO=$(PARSER='OFS="\n" {print $1}'
|
||||
|
||||
tail -10 $OUTFILE | awk "$PARSER" | \
|
||||
yad --title="Load Config" --width=400 --height=500 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top \
|
||||
--center --list --text="Choose Config File to load" \
|
||||
--column Config-files \
|
||||
--button="Cancel":1 \
|
||||
--button="Load Config File":2)
|
||||
BUT=$?
|
||||
NEWCONFIG=$(echo $INFO | awk -F "|" '{print $1}')
|
||||
echo $NEWCONFIG
|
||||
echo $BUT
|
||||
|
||||
if [ $BUT = 252 ]; then
|
||||
exit
|
||||
elif [ $BUT = 1 ]; then
|
||||
$MAIN
|
||||
exit
|
||||
elif [ $BUT = 2 ]; then
|
||||
if [ -z $NEWCONFIG ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
else
|
||||
cp $MYPATH/$NEWCONFIG $MYPATH/config
|
||||
rm $OUTFILE
|
||||
yad --title="Config Loaded" --width=400 --height=200 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top \
|
||||
--center --text="$NEWCONFIG loaded" \
|
||||
--button=gtk-ok
|
||||
$MAIN &
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
CURRENTCONFIG(){
|
||||
source $MYPATH/config
|
||||
CONFIGTMP=$MYPATH/config.temp
|
||||
CONFIG=$MYPATH/config
|
||||
|
||||
if [ "$MAP" = 'usa' ]; then
|
||||
MAP="usa|world"
|
||||
else
|
||||
MAP="world|usa"
|
||||
fi
|
||||
|
||||
if [ "$RIGCONTROL" = 'yes' ]; then
|
||||
RIGCONTROL="yes|no"
|
||||
else
|
||||
RIGCONTROL="no|yes"
|
||||
fi
|
||||
|
||||
if [ "$AMRRON" = 'yes' ]; then
|
||||
AMRRON="yes|no"
|
||||
else
|
||||
AMRRON="no|yes"
|
||||
fi
|
||||
|
||||
SETTINGS=$(yad --form --width=600 --text-align=center --center --title="Pat Menu Settings" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Pat Menu Settings</b> by KM4ACK" \
|
||||
--field="Call Sign" "$MYCALLSIGN" \
|
||||
--field="MAP":CB "$MAP" \
|
||||
--field="Rig Control":CB "$RIGCONTROL" \
|
||||
--field="ARDOP Command" "$ARDOP" \
|
||||
--field="ARDOP GUI Command" "$ARDOPGUI" \
|
||||
--field="Direwolf Command" "$DIREWOLF" \
|
||||
--field="KISS Command" "$KISS" \
|
||||
--field="AX25 Port" "$AXP" \
|
||||
--field="Rig Control Command" "$RIG" \
|
||||
--field="HF Mode for Radio" "$MODEHF" \
|
||||
--field="2M Mode for Radio" "$MODE2M" \
|
||||
--field="Pat Port" "$PORT" \
|
||||
--field="Log File Location" "$LOG" \
|
||||
--field="AmRRON":CB "$AMRRON" \
|
||||
--button="Update":2 \
|
||||
--button="Cancel":1)
|
||||
BUT=$?
|
||||
if [ $BUT = 1 ]; then
|
||||
$MAIN
|
||||
elif [ $BUT = 252 ]; then
|
||||
exit
|
||||
elif [ $BUT = 2 ]; then
|
||||
MYCALLSIGN=$(echo $SETTINGS | awk -F "|" '{print $1}')
|
||||
MAP=$(echo $SETTINGS | awk -F "|" '{print $2}')
|
||||
RIGCONTROL=$(echo $SETTINGS | awk -F "|" '{print $3}')
|
||||
ARDOP=$(echo $SETTINGS | awk -F "|" '{print $4}')
|
||||
ARDOPGUI=$(echo $SETTINGS | awk -F "|" '{print $5}')
|
||||
DIREWOLF=$(echo $SETTINGS | awk -F "|" '{print $6}')
|
||||
KISS=$(echo $SETTINGS | awk -F "|" '{print $7}')
|
||||
AXP=$(echo $SETTINGS | awk -F "|" '{print $8}')
|
||||
RIG=$(echo $SETTINGS | awk -F "|" '{print $9}')
|
||||
MODEHF=$(echo $SETTINGS | awk -F "|" '{print $10}')
|
||||
MODE2M=$(echo $SETTINGS | awk -F "|" '{print $11}')
|
||||
PORT=$(echo $SETTINGS | awk -F "|" '{print $12}')
|
||||
LOG=$(echo $SETTINGS | awk -F "|" '{print $13}')
|
||||
AMRRON=$(echo $SETTINGS | awk -F "|" '{print $14}')
|
||||
|
||||
echo "#Config file for Pat Menu" > $CONFIGTMP
|
||||
echo "#20200429 KM4ACK" >> $CONFIGTMP
|
||||
echo "MYCALLSIGN=$MYCALLSIGN" >> $CONFIGTMP
|
||||
echo "MAP=$MAP" >> $CONFIGTMP
|
||||
echo "RIGCONTROL=$RIGCONTROL" >> $CONFIGTMP
|
||||
echo "ARDOP=\"$ARDOP\"" >> $CONFIGTMP
|
||||
echo "ARDOPGUI=\"$ARDOPGUI\"" >> $CONFIGTMP
|
||||
echo "DIREWOLF=\"$DIREWOLF\"" >> $CONFIGTMP
|
||||
echo "KISS=\"$KISS\"" >> $CONFIGTMP
|
||||
echo "AXP=$AXP" >> $CONFIGTMP
|
||||
echo "RIG=\"$RIG\"" >> $CONFIGTMP
|
||||
echo "MODEHF=$MODEHF" >> $CONFIGTMP
|
||||
echo "MODE2M=$MODE2M" >> $CONFIGTMP
|
||||
echo "PORT=$PORT" >> $CONFIGTMP
|
||||
echo "LOG=$LOG" >> $CONFIGTMP
|
||||
echo "AMRRON=$AMRRON" >> $CONFIGTMP
|
||||
cp $CONFIGTMP $CONFIG
|
||||
rm $CONFIGTMP
|
||||
$MAIN &
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
28
manage-pat
Executable file
28
manage-pat
Executable file
@ -0,0 +1,28 @@
|
||||
#!/bin/bash
|
||||
|
||||
MYPATH=$HOME/patmenu2
|
||||
LOGO=$MYPATH/pmlogo.png
|
||||
source $MYPATH/manage-pat-functions
|
||||
MAIN=$MYPATH/patmenu
|
||||
|
||||
|
||||
yad --form --width=420 --text-align=center --center --title="Manage Pat" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Manage Pat</b> by KM4ACK" \
|
||||
--field="Pat Login-Logout":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/manage-pat-functions; LOGIN"' \
|
||||
--field="GPS Grid Update":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/manage-pat-functions; GPSGRID"' \
|
||||
--field="Set ARDOP Speed":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/manage-pat-functions; SPEED"' \
|
||||
--field="Delete Alias":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/manage-pat-functions; DELETEALIAS"' \
|
||||
--field="Backup Emails":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/manage-pat-functions; EMAILBKUP"' \
|
||||
--field="Restore Emails":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/manage-pat-functions; EMAILRESTORE"' \
|
||||
--field="Backup Pat Config":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/manage-pat-functions; BKUPCONFIG"' \
|
||||
--field="Restore Pat Config":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/manage-pat-functions; RESTORECONFIG"' \
|
||||
--button="Main Menu":1
|
||||
BUT=$?
|
||||
|
||||
if [ $BUT = 1 ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
fi
|
||||
|
||||
echo $?
|
357
manage-pat-functions
Normal file
357
manage-pat-functions
Normal file
@ -0,0 +1,357 @@
|
||||
|
||||
MYPATH=$HOME/patmenu2
|
||||
MAIN=$MYPATH/./manage-pat
|
||||
LOGO=$MYPATH/pmlogo.png
|
||||
|
||||
DELETEALIAS(){
|
||||
|
||||
PATCONFIG=$HOME/.wl2k/config.json
|
||||
OUTFILE=/run/user/1000/currentlist.txt
|
||||
TEMP=/run/user/1000/patconfig.txt
|
||||
WHO=$(whoami)
|
||||
|
||||
jq .connect_aliases $PATCONFIG | sed '/^}/d' | sed '/^{/d' | sed 's/^ *//g' > $OUTFILE
|
||||
|
||||
cat $OUTFILE
|
||||
|
||||
sed -i 's/"//g' $OUTFILE
|
||||
sed -i 's/,//g' $OUTFILE
|
||||
sed -i 's/://' $OUTFILE
|
||||
echo;echo
|
||||
cat $OUTFILE | awk 'OFS="\n" {print $1, $2}'
|
||||
|
||||
|
||||
|
||||
REMOVE=$(PARSER='OFS="\n" {print $1, $2}'
|
||||
|
||||
tail -10 $OUTFILE | awk "$PARSER" | \
|
||||
yad --title="Current Alias List" --width=1100 --height=500 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top \
|
||||
--center --list --text="<b>Select Alias to Delete</b>" \
|
||||
--column Call --column INFO \
|
||||
--button="Delete Alias":2 \
|
||||
--button="Cancel":1)
|
||||
BUT=$?
|
||||
if [ $BUT = 1 ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
elif [ $BUT = 252 ]; then
|
||||
exit
|
||||
fi
|
||||
RCALL=$(echo $REMOVE | awk -F "|" '{print $1}')
|
||||
RCALL1=$(echo "\"$RCALL\"")
|
||||
#check something was selected
|
||||
if [ -z "$RCALL" ]; 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
|
||||
jq 'del(.connect_aliases.'$RCALL1')' $PATCONFIG > $TEMP
|
||||
cp $TEMP $PATCONFIG
|
||||
rm $TEMP $OUTFILE
|
||||
sudo killall pat
|
||||
sudo systemctl start pat@$WHO
|
||||
yad --title="Alias Deleted" --width=400 --height=200 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top \
|
||||
--center --text="$RCALL1 Alias DELETED" \
|
||||
--button=gtk-ok
|
||||
$MAIN &
|
||||
exit
|
||||
}
|
||||
|
||||
LOGIN(){
|
||||
CONFIG=$HOME/.wl2k/config.json
|
||||
WHO=$(whoami)
|
||||
|
||||
|
||||
USER=$(yad --form --width=420 --text-align=center --center --title="Pat Log In/Out" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Pat Log In/Out</b> by KM4ACK" \
|
||||
--field="Call Sign" "" \
|
||||
--field="Winlink Password" "" \
|
||||
--field="Six Character Grid Square" "EM65TV" \
|
||||
--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"
|
||||
elif [ $BUT = 2 ]; then
|
||||
echo "Log IN"
|
||||
CALLSIGN=$(echo $USER | awk -F "|" '{print $1}')
|
||||
CALLSIGN=$(echo "${CALLSIGN^^}")
|
||||
PASS=$(echo $USER | awk -F "|" '{print $2}')
|
||||
GRID=$(echo $USER | awk -F "|" '{print $3}')
|
||||
GRID=$(echo "${GRID^^}")
|
||||
echo "$CALLSIGN $PASS $GRID"
|
||||
#set callsign
|
||||
sed -i "s/\"mycall\": \".*\",/\"mycall\": \"$CALLSIGN\",/" $CONFIG
|
||||
#set password
|
||||
sed -i "s/\"secure_login_password\": \".*\",/\"secure_login_password\": \"$PASS\",/" $CONFIG
|
||||
#set locator
|
||||
sed -i "s/\"locator\": \".*\",/\"locator\": \"$GRID\",/" $CONFIG
|
||||
sudo killall pat
|
||||
sudo systemctl start pat@$WHO
|
||||
elif [ $BUT = 3 ]; then
|
||||
echo "Log OUT"
|
||||
CALLSIGN=N0CALL
|
||||
PASS=""
|
||||
GRID=""
|
||||
#set callsign
|
||||
sed -i "s/\"mycall\": \".*\",/\"mycall\": \"$CALLSIGN\",/" $CONFIG
|
||||
#set password
|
||||
sed -i "s/\"secure_login_password\": \".*\",/\"secure_login_password\": \"$PASS\",/" $CONFIG
|
||||
#set locator
|
||||
sed -i "s/\"locator\": \".*\",/\"locator\": \"$GRID\",/" $CONFIG
|
||||
sudo killall pat
|
||||
sudo systemctl start pat@$WHO
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
GPSGRID(){
|
||||
CONFIG=$HOME/.wl2k/config.json
|
||||
|
||||
if ! hash ruby2.3 2>/dev/null; then
|
||||
echo "Ruby Not found on system"
|
||||
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?" \
|
||||
--button="Install Ruby":2 \
|
||||
--button="Cancel":1
|
||||
BUT=$?
|
||||
if [ $BUT = 1 ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
elif [ $BUT = 2 ]; then
|
||||
INSTALLRUBY(){
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y ruby2.3
|
||||
sudo gem install gpsd_client
|
||||
sudo gem install maidenhead
|
||||
}
|
||||
INSTALLRUBY | yad --center --progress --pulsate --auto-close --no-buttons --text-align=center \
|
||||
--text="Installing Ruby. This will take several minutes\r<b>DO NOT CLOSE THIS WINDOW</b>\rDoing so will abort the install."
|
||||
fi
|
||||
fi
|
||||
|
||||
yad --center --timeout=5 --timeout-indicator=top \
|
||||
--auto-close --no-buttons --text="Getting grid from GPS" &
|
||||
|
||||
NEWGRID=$($MYPATH/getgrid | cut -b 1-6)
|
||||
|
||||
if [ "$NEWGRID" = 'JJ00aa' ]; then
|
||||
NEWGRID="GPS READ ERROR or NO LOCK"
|
||||
yad --form --width=400 --text-align=center --center --title="GPS ERROR" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Update Pat Grid</b> by KM4ACK\r\rGPS ERROR" \
|
||||
--field="Grid read from GPS":RO "$NEWGRID" \
|
||||
--button=gtk-quit
|
||||
$MAIN &
|
||||
exit
|
||||
fi
|
||||
|
||||
yad --form --width=200 --text-align=center --center --title="Update Grid" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Update Pat Grid</b> by KM4ACK" \
|
||||
--field="Grid read from GPS":RO "$NEWGRID" \
|
||||
--button="Update Pat":2 \
|
||||
--button="Cancel":1
|
||||
BUT=$?
|
||||
if [ $BUT = 1 ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
elif [ $BUT = 2 ]; then
|
||||
sed -i "s/\"locator\": \".*\",/\"locator\": \"$NEWGRID\",/" $CONFIG
|
||||
yad --center --timeout=2 --timeout-indicator=top \
|
||||
--auto-close --no-buttons --text="Grid Square Updated"
|
||||
$MAIN &
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
EMAILBKUP(){
|
||||
CONFIG=$HOME/.wl2k/config.json
|
||||
WHO=$(whoami)
|
||||
CALL=$(cat $HOME/.wl2k/config.json | grep -m 1 mycall | sed 's/\"mycall\": \"//' | sed 's/\",//' | sed -e 's/^\s*//' | tr '[:lower:]' '[:upper:]')
|
||||
BKUPTIME=$(date +%Y%d%m-%H%M)
|
||||
|
||||
BACKUP=$(yad --form --width=420 --text-align=center --center --title="Email Backup" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Email Backup</b> by KM4ACK" \
|
||||
--field="Backup Directory":DIR \
|
||||
--button="Backup Emails":2 \
|
||||
--button="Cancel":1)
|
||||
BUT=$?
|
||||
|
||||
if [ $BUT = 252 ]; then
|
||||
exit
|
||||
elif [ $BUT = 1 ]; then
|
||||
$MAIN
|
||||
exit
|
||||
fi
|
||||
|
||||
DIR=$(echo $BACKUP | awk -F "|" '{print $1}')
|
||||
|
||||
cp -r $HOME/.wl2k/mailbox/$CALL $DIR/email.bkup.$BKUPTIME
|
||||
|
||||
if [ -d $DIR/email.bkup.$BKUPTIME ]; then
|
||||
yad --center --text="Backup Complete" \
|
||||
--button=gtk-ok
|
||||
$MAIN &
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
EMAILRESTORE(){
|
||||
MYPATH=$HOME/dev/patmenu2
|
||||
CONFIG=$HOME/.wl2k/config.json
|
||||
WHO=$(whoami)
|
||||
CALL=$(cat $HOME/.wl2k/config.json | grep -m 1 mycall | sed 's/\"mycall\": \"//' | sed 's/\",//' | sed -e 's/^\s*//' | tr '[:lower:]' '[:upper:]')
|
||||
|
||||
RESTORE=$(yad --form --width=420 --text-align=center --center --title="Email Restore" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Email Restore</b> by KM4ACK" \
|
||||
--field="Restore Directory":DIR \
|
||||
--button="Restore Emails":2 \
|
||||
--button="Cancel":1)
|
||||
BUT=$?
|
||||
|
||||
if [ $BUT = 252 ]; then
|
||||
exit
|
||||
elif [ $BUT = 1 ]; then
|
||||
$MAIN
|
||||
exit
|
||||
fi
|
||||
|
||||
DIR=$(echo $RESTORE | awk -F "|" '{print $1}')
|
||||
DIRCHECK=$(ls $DIR)
|
||||
COUNT=${#DIRCHECK}
|
||||
if [ "$COUNT" = 19 ]; then
|
||||
cp $DIR/archive/* $HOME/.wl2k/mailbox/$CALL/archive/
|
||||
cp $DIR/in/* $HOME/.wl2k/mailbox/$CALL/in/
|
||||
cp $DIR/out/* $HOME/.wl2k/mailbox/$CALL/out/
|
||||
cp $DIR/sent/* $HOME/.wl2k/mailbox/$CALL/sent/
|
||||
yad --form --width=420 --text-align=center --center --title="Email Restore" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Email Restore</b> by KM4ACK\r\r<b>RESTORE COMPLETE</b>" \
|
||||
--button=gtk-ok
|
||||
else
|
||||
yad --form --width=420 --text-align=center --center --title="Email Restore" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Email Restore</b> by KM4ACK\r\r<b>Not a valid restore directory</b>" \
|
||||
--button=gtk-ok
|
||||
fi
|
||||
exit
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
RESTORECONFIG(){
|
||||
CONFIG=$HOME/.wl2k/config.json
|
||||
OUTFILE=/run/user/1000/config.list
|
||||
WHO=$(whoami)
|
||||
|
||||
ls $HOME/.wl2k/ | grep .bkup > $OUTFILE
|
||||
|
||||
INFO=$(PARSER='OFS="\n" {print $1}'
|
||||
|
||||
tail -10 $OUTFILE | awk "$PARSER" | \
|
||||
yad --title="Restore Config" --width=1100 --height=500 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top \
|
||||
--center --list --text="Choose File to Restore" \
|
||||
--column File-to-Restore \
|
||||
--button="Cancel":1 \
|
||||
--button="Restore File":2)
|
||||
BUT=$?
|
||||
|
||||
if [ $BUT = 252 ]; then
|
||||
exit
|
||||
elif [ $BUT = 1 ]; then
|
||||
$MAIN
|
||||
exit
|
||||
fi
|
||||
FILE=$(echo $INFO | awk -F "|" '{print $1}')
|
||||
cp $HOME/.wl2k/$FILE $CONFIG
|
||||
sudo killall pat
|
||||
sudo systemctl start pat@$WHO
|
||||
yad --form --width=420 --text-align=center --center --title="Config Restore" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Config Restore</b> by KM4ACK\r\r<b>RESTROE COMPLETE</b>" \
|
||||
--button=gtk-ok
|
||||
$MAIN
|
||||
|
||||
}
|
||||
|
||||
BKUPCONFIG(){
|
||||
CONFIG=$HOME/.wl2k/config.json
|
||||
WHO=$(whoami)
|
||||
DATE=$(date +%d%b%Y-%H%M)
|
||||
|
||||
yad --form --width=420 --text-align=center --center --title="Backup Config" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Backup Pat Config</b> by KM4ACK" \
|
||||
--button="Backup Config":2 \
|
||||
--button="Main Menu":1
|
||||
BUT=$?
|
||||
if [ $BUT = 1 ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
elif [ $BUT = 252 ]; then
|
||||
exit
|
||||
elif [ $BUT = 2 ]; then
|
||||
echo "Backing up file"
|
||||
BKUPCONFIG=config.$DATE.bkup
|
||||
cp $CONFIG $HOME/.wl2k/$BKUPCONFIG
|
||||
yad --form --width=420 --text-align=center --center --title="Config Backup" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Config File Backup</b> by KM4ACK\r\r<b>Backup COMPLETE</b>" \
|
||||
--button=gtk-ok
|
||||
fi
|
||||
$MAIN
|
||||
}
|
||||
|
||||
SPEED(){
|
||||
CONFIG=$HOME/.wl2k/config.json
|
||||
CURRENT=$(cat $CONFIG | grep -i max | sed 's/"Max":\ //' | tr -d "[:blank:]")
|
||||
WHO=$(whoami)
|
||||
NEW=$(yad --form --width=320 --text-align=center --center --title="Speed" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Current ARDOP Speed is $CURRENT</b>" \
|
||||
--field="Set ARDOP Speed to":CB "200|500|1000|2000" \
|
||||
--button="Cancel":1 \
|
||||
--button="Set Speed":2)
|
||||
BUT=$?
|
||||
if [ $BUT = 1 ]; then
|
||||
$MAIN &
|
||||
exit
|
||||
elif [ $BUT = 252 ]; then
|
||||
exit
|
||||
fi
|
||||
NEW=$(echo $NEW | awk -F "|" '{print $1}')
|
||||
|
||||
sed -i "s/\"Max\":.*/ \"Max\": $NEW/" $CONFIG
|
||||
sudo killall pat
|
||||
sudo systemctl start pat@$WHO
|
||||
yad --form --width=320 --text-align=center --center --title="Speed" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>ARDOP Speed set to $NEW</b>" \
|
||||
--button=gtk-ok
|
||||
$MAIN &
|
||||
exit
|
||||
}
|
||||
|
||||
|
146
pat-functions
Normal file
146
pat-functions
Normal file
@ -0,0 +1,146 @@
|
||||
|
||||
|
||||
MYPATH=$HOME/patmenu2
|
||||
LOGO=$MYPATH/pmlogo.png
|
||||
MAIN=$MYPATH/./patmenu
|
||||
|
||||
AUTOPAT(){
|
||||
|
||||
source $MYPATH/config
|
||||
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. \
|
||||
\rRig control can be configured using\r<b>Manage Pat Menu</b>"
|
||||
--button=gtk-ok
|
||||
$MAIN &
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
MIN="50|100|150|200|250|300|350|400|450|500|550|600|650|700|750|800|850|900|950|1000"
|
||||
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="<b>Pat Auto Connect</b> by KM4ACK" \
|
||||
--field="Band":CB "20|30|40|80" \
|
||||
--field="Minimum Distance":CBE "$MIN" \
|
||||
--field="Maximum Distance":CBE "$MAX" \
|
||||
--button="Start Connection":2 \
|
||||
--button="Cancel":1)
|
||||
BUT=$?
|
||||
if [ "$BUT" = 1 ]; then
|
||||
$MAIN
|
||||
exit
|
||||
fi
|
||||
|
||||
BAND=$(echo $INFO | awk -F "|" '{print $1}')
|
||||
MIN=$(echo $INFO | awk -F "|" '{print $2}')
|
||||
MAX=$(echo $INFO | awk -F "|" '{print $3}')
|
||||
|
||||
if [ -z "$MIN" ]; then
|
||||
MIN=0
|
||||
fi
|
||||
|
||||
if [ -z "$MAX" ]; then
|
||||
MAX=0
|
||||
fi
|
||||
|
||||
|
||||
if [ "$MIN" -gt "$MAX" ]; then
|
||||
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="<b>Pat Auto Connect</b> by KM4ACK \r\rMinimum distance can't be greater\rthan maximum distance.\rTry again" \
|
||||
--button=gtk-ok
|
||||
AUTOPAT
|
||||
fi
|
||||
echo "Band = $BAND"
|
||||
echo "MIN = $MIN"
|
||||
echo "MAX = $MAX"
|
||||
|
||||
lxterminal -e $MYPATH/autopat $MAX $BAND $MIN
|
||||
$MAIN
|
||||
}
|
||||
|
||||
|
||||
SETTINGS(){
|
||||
source $MYPATH/config
|
||||
CONFIGTMP=$MYPATH/config.temp
|
||||
CONFIG=$MYPATH/config
|
||||
|
||||
SETTINGS=$(yad --form --width=600 --text-align=center --center --title="Pat Menu Settings" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Pat Menu Settings</b> by KM4ACK" \
|
||||
--field="Call Sign" "$MYCALLSIGN" \
|
||||
--field="MAP":CB "usa|world" \
|
||||
--field="Rig Control":CB "no|yes" \
|
||||
--field="ARDOP Command" "$ARDOP" \
|
||||
--field="ARDOP GUI Command" "$ARDOPGUI" \
|
||||
--field="Direwolf Command" "$DIREWOLF" \
|
||||
--field="KISS Command" "$KISS" \
|
||||
--field="AX25 Port" "$AXP" \
|
||||
--field="Rig Control Command" "$RIG" \
|
||||
--field="HF Mode for Radio" "$MODEHF" \
|
||||
--field="2M Mode for Radio" "$MODE2M" \
|
||||
--field="Pat Port" "$PORT" \
|
||||
--field="Log File Location" "$LOG" \
|
||||
--field="AmRRON":CB "no|yes" \
|
||||
--button="Update":2 \
|
||||
--button="Cancel":1)
|
||||
BUT=$?
|
||||
if [ $BUT = 1 ]; then
|
||||
$MAIN
|
||||
elif [ $BUT = 252 ]; then
|
||||
exit
|
||||
elif [ $BUT = 2 ]; then
|
||||
MYCALLSIGN=$(echo $SETTINGS | awk -F "|" '{print $1}')
|
||||
MAP=$(echo $SETTINGS | awk -F "|" '{print $2}')
|
||||
RIGCONTROL=$(echo $SETTINGS | awk -F "|" '{print $3}')
|
||||
ARDOP=$(echo $SETTINGS | awk -F "|" '{print $4}')
|
||||
ARDOPGUI=$(echo $SETTINGS | awk -F "|" '{print $5}')
|
||||
DIREWOLF=$(echo $SETTINGS | awk -F "|" '{print $6}')
|
||||
KISS=$(echo $SETTINGS | awk -F "|" '{print $7}')
|
||||
AXP=$(echo $SETTINGS | awk -F "|" '{print $8}')
|
||||
RIG=$(echo $SETTINGS | awk -F "|" '{print $9}')
|
||||
MODEHF=$(echo $SETTINGS | awk -F "|" '{print $10}')
|
||||
MODE2M=$(echo $SETTINGS | awk -F "|" '{print $11}')
|
||||
PORT=$(echo $SETTINGS | awk -F "|" '{print $12}')
|
||||
LOG=$(echo $SETTINGS | awk -F "|" '{print $13}')
|
||||
AMRRON=$(echo $SETTINGS | awk -F "|" '{print $14}')
|
||||
|
||||
echo "#Config file for Pat Menu" > $CONFIGTMP
|
||||
echo "#20200429 KM4ACK" >> $CONFIGTMP
|
||||
echo "MYCALLSIGN=$MYCALLSIGN" >> $CONFIGTMP
|
||||
echo "MAP=$MAP" >> $CONFIGTMP
|
||||
echo "RIGCONTROL=$RIGCONTROL" >> $CONFIGTMP
|
||||
echo "ARDOP=\"$ARDOP\"" >> $CONFIGTMP
|
||||
echo "ARDOPGUI=\"$ARDOPGUI\"" >> $CONFIGTMP
|
||||
echo "DIREWOLF=\"$DIREWOLF\"" >> $CONFIGTMP
|
||||
echo "KISS=\"$KISS\"" >> $CONFIGTMP
|
||||
echo "AXP=$AXP" >> $CONFIGTMP
|
||||
echo "RIG=\"$RIG\"" >> $CONFIGTMP
|
||||
echo "MODEHF=$MODEHF" >> $CONFIGTMP
|
||||
echo "MODE2M=$MODE2M" >> $CONFIGTMP
|
||||
echo "PORT=$PORT" >> $CONFIGTMP
|
||||
echo "LOG=$LOG" >> $CONFIGTMP
|
||||
echo "AMRRON=$AMRRON" >> $CONFIGTMP
|
||||
cp $CONFIGTMP $CONFIG
|
||||
rm $CONFIGTMP
|
||||
$MAIN &
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
43
patmenu
Executable file
43
patmenu
Executable file
@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Pat Catalog
|
||||
#20200427 KM4ACK
|
||||
#side note: written during covid-19 outbreak of 2020
|
||||
|
||||
#######DEV NOTES#############
|
||||
#############################
|
||||
|
||||
|
||||
#############################
|
||||
|
||||
MYPATH=$HOME/patmenu2
|
||||
LOGO=$MYPATH/pmlogo.png
|
||||
MAIN=$MYPATH/./patmenu
|
||||
VERSION=$(cat $MYPATH/changelog | grep release | head -1 | sed 's/release=//')
|
||||
|
||||
source $MYPATH/config
|
||||
|
||||
if [ "$MYCALLSIGN" = "N0CALL" ]; then
|
||||
yad --title="N0CALL" --width=400 --height=100 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \
|
||||
--center --form --text="\r\r\r\rCall sign not set! \rGo to <b>Settings</b>, then <b>Current Config Settings</b>\rand update your call sign" \
|
||||
--button=gtk-ok
|
||||
fi
|
||||
|
||||
yad --form --width=420 --text-align=center --center --title="Pat Menu" --text-align=center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
|
||||
--text="<b>Pat Menu</b> by KM4ACK\rv$VERSION" \
|
||||
--field="Start ARDOP Modem":fbtn 'bash -c "/home/pi/patmenu2/start-pat-ardop"' \
|
||||
--field="Start Packet Modem":fbtn 'bash -c "/home/pi/patmenu2/start-pat2m"' \
|
||||
--field="Stop Modems":fbtn 'bash -c "/home/pi/patmenu2/stop-modems"' \
|
||||
--field="Find Winlink Gateways":fbtn 'bash -c "kill -USR1 $YAD_PID; /home/pi/patmenu2/find2"' \
|
||||
--field="Pat Auto Connect":fbtn 'bash -c "kill -USR1 $YAD_PID; source /home/pi/patmenu2/pat-functions; AUTOPAT"' \
|
||||
--field="Pat Catalog":fbtn 'bash -c "kill -USR1 $YAD_PID; /home/pi/patmenu2/catalog"' \
|
||||
--field="Manage Pat Winlink":fbtn 'bash -c "kill -USR1 $YAD_PID; /home/pi/patmenu2/manage-pat"' \
|
||||
--field="Settings/Config":fbtn 'bash -c "kill -USR1 $YAD_PID; /home/pi/patmenu2/manage-menu"' \
|
||||
--field="My Call - $MYCALLSIGN":LBL \
|
||||
--button=gtk-quit
|
||||
BUT=$?
|
||||
if [ $BUT = 0 ] && [ "$AMRRON" = 'no' ]; then
|
||||
sudo killall piardopc direwolf kissattach rigctld piARDOP_GUI > /dev/null 2>&1
|
||||
fi
|
9
patmenu2.desktop
Normal file
9
patmenu2.desktop
Normal file
@ -0,0 +1,9 @@
|
||||
[Desktop Entry]
|
||||
Name=Pat Menu
|
||||
GenericName=Amateur Radio Digital Modem
|
||||
Comment=Amateur Radio Sound Card Communications
|
||||
Exec=/home/pi/patmenu2/patmenu
|
||||
Icon=/home/pi/patmenu2/pmlogo.png
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Network;HamRadio;
|
BIN
pmlogo.png
Normal file
BIN
pmlogo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.8 KiB |
51
setup
Normal file
51
setup
Normal file
@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
|
||||
#install script patmenu2
|
||||
#20200511 km4ack
|
||||
|
||||
|
||||
MYPATH=$HOME/patmenu2
|
||||
BKDIR=$HOME/Desktop/pat-bkups
|
||||
NEWCONFIG=$HOME/Desktop/test.txt
|
||||
|
||||
if [ -f $HOME/patmenu/config ]; then
|
||||
#get patmenu config file and copy to patmenu2
|
||||
source $HOME/patmenu/config
|
||||
cat << EOF > $NEWCONFIG
|
||||
MYCALLSIGN=$MYCALLSIGN
|
||||
MAP=$MAP
|
||||
RIGCONTROL=$RIGCONTROL
|
||||
ARDOP=$ARDOP
|
||||
ARDOPGUI=$ARDOPGUI
|
||||
DIREWOLF=DIREWOLF
|
||||
KISS=$KISS
|
||||
AXP=$AXP
|
||||
RIG=$RIG
|
||||
MODEHF=$MODEHF
|
||||
MODE2M=$MODE2M
|
||||
PORT=$PORT
|
||||
LOG=$LOG
|
||||
AMRRON=$AMRRON
|
||||
EOF
|
||||
|
||||
#create backup folder and copy any user config files
|
||||
mkdir -p $BKDIR
|
||||
cp $HOME/patmenu/*config* $BKDIR
|
||||
#remove restore script that gets copied with above command
|
||||
rm $BKDIR/restore-config
|
||||
|
||||
#remove old patmenu
|
||||
rm -rf $HOME/patmenu
|
||||
|
||||
fi
|
||||
|
||||
|
||||
#copy new desktop link
|
||||
sudo cp $MYPATH/patmenu2.desktop /usr/share/applications/patmenu.desktop
|
||||
|
||||
#download RMS List
|
||||
$MYPATH/getardoplist
|
||||
|
||||
#remove this script
|
||||
rm $MYPATH/setup
|
||||
|
137
start-pat-ardop
Executable file
137
start-pat-ardop
Executable file
@ -0,0 +1,137 @@
|
||||
#!/bin/bash
|
||||
|
||||
#start ardop modem
|
||||
|
||||
#20191118 km4ack
|
||||
|
||||
source $HOME/patmenu2/config
|
||||
MYPATH=$HOME/patmenu2
|
||||
LOGO=$MYPATH/pmlogo.png
|
||||
|
||||
#Check if FLRIG is running if user has it set in config file
|
||||
if [ "$RIGCONTROL" = 'yes' ]; then
|
||||
echo "rig control is on"
|
||||
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
|
||||
|
||||
#Check if modem is already running
|
||||
MODEMCHECK=$(pidof piardopc)
|
||||
if [ -z "$MODEMCHECK" ]; then
|
||||
echo
|
||||
else
|
||||
yad --title="FAILED" --width=400 --height=100 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \
|
||||
--center --form --text="ARDOP Modem is already running" \
|
||||
--button=gtk-ok
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
if [ $AMRRON = "no" ] > /dev/null 2>&1
|
||||
then
|
||||
#check if direwolf is running
|
||||
PIDDW=$(pidof direwolf)
|
||||
if [ -z "$PIDDW" ]
|
||||
then
|
||||
echo
|
||||
else
|
||||
yad --title="FAILED" --width=400 --height=100 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \
|
||||
--center --form --text="It looks like the 2M/440 modem is running.\rStop all modems and try again" \
|
||||
--button=gtk-ok
|
||||
exit
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
yad --width=350 --height=75 --title="Start Modem" --timeout=2 --timeout-indicator=top --no-buttons --center \
|
||||
--text="Modem Starting....standby" &
|
||||
|
||||
|
||||
SETRIG () {
|
||||
|
||||
#Set USB Mode
|
||||
RIGUSB=$RIG" M $MODEHF 0"
|
||||
|
||||
#check rig is in USB
|
||||
MODE=$($RIG m | grep $MODEHF)
|
||||
|
||||
sleep 1
|
||||
|
||||
MODECHECK() {
|
||||
#check rig is in correct mode
|
||||
MODE=$($RIG m | grep $MODEHF)
|
||||
}
|
||||
|
||||
sleep 1
|
||||
|
||||
if [ -z $MODE ]
|
||||
then
|
||||
$RIGUSB
|
||||
MODECHECK
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
#see if rig control is used
|
||||
if [ $RIGCONTROL == 'yes' ]
|
||||
then
|
||||
PIDCTL=$(pidof rigctld)
|
||||
WHO=$(whoami)
|
||||
if [ -z "$PIDCTL" ]
|
||||
then
|
||||
CONTROL=$(cat $MYPATH/config | grep '^RIG="' | sed 's/RIG="//' | sed 's/"//' | sed 's/rigctl/rigctld/')
|
||||
$CONTROL &
|
||||
sudo systemctl restart pat@$WHO
|
||||
fi
|
||||
SETRIG
|
||||
fi
|
||||
|
||||
#Start ARDOP_GUI
|
||||
$ARDOPGUI </dev/null &>/dev/null &
|
||||
|
||||
#start modem
|
||||
lxterminal --geometry=55x10 -e $ARDOP </dev/null &>/dev/null &
|
||||
sleep 2
|
||||
|
||||
|
||||
#verify that piardopc is running
|
||||
PIDPIC=$(pidof piardopc)
|
||||
if [ -z "$PIDPIC" ]
|
||||
then
|
||||
yad --title="FAILED" --width=400 --height=100 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \
|
||||
--center --form --text="The ARDOP Modem FAILED to Start" \
|
||||
--button=gtk-ok
|
||||
else
|
||||
yad --title="ARDOP MODEM" --width=400 --height=100 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --text-align=center --on-top \
|
||||
--center --form --text="\r\r\r\rThe ARDOP Modem has Started" \
|
||||
--button=gtk-ok &
|
||||
fi
|
||||
|
||||
#open pat inbox in browser
|
||||
export DISPLAY=:0 && chromium-browser --app=http://127.0.0.1:$PORT > /dev/null 2>&1 &
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
166
start-pat2m
Executable file
166
start-pat2m
Executable file
@ -0,0 +1,166 @@
|
||||
#!/bin/bash
|
||||
|
||||
#script to start Pat for 2m packet work
|
||||
#20191116 km4ack
|
||||
|
||||
clear
|
||||
|
||||
|
||||
TEMP=$HOME/patmenu2/temp
|
||||
MYPATH=$HOME/patmenu2
|
||||
LOGO=$MYPATH/pmlogo.png
|
||||
source $MYPATH/config
|
||||
|
||||
#Check if FLRIG is running if user has it set in config file
|
||||
if [ "$RIGCONTROL" = 'yes' ]; then
|
||||
echo "rig control is on"
|
||||
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
|
||||
|
||||
#Check if modem is already running
|
||||
MODEMCHECK=$(pidof direwolf)
|
||||
if [ -z "$MODEMCHECK" ]; then
|
||||
echo
|
||||
else
|
||||
yad --title="FAILED" --width=400 --height=100 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \
|
||||
--center --form --text="Packet Modem is already running" \
|
||||
--button=gtk-ok
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ $AMRRON = "no" ] > /dev/null 2>&1
|
||||
then
|
||||
|
||||
#check if piardopc is running
|
||||
PIDDW=$(pidof piardopc)
|
||||
if [ -z "$PIDDW" ]
|
||||
then
|
||||
echo
|
||||
else
|
||||
yad --title="FAILED" --width=400 --height=100 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \
|
||||
--center --form --text="It looks like the ARDOP modem is running.\rStop all modems and try again" \
|
||||
--button=gtk-ok
|
||||
exit 0
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
yad --width=350 --height=75 --title="Start Modem" --timeout=3 --timeout-indicator=top --no-buttons --center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --text-align=center --text="Modem Starting....standby" &
|
||||
|
||||
if [ $AMRRON = "no" ] > /dev/null 2>&1
|
||||
then
|
||||
sudo killall direwolf kissattach > /dev/null 2>&1
|
||||
fi
|
||||
sleep 1
|
||||
|
||||
#Set Mode
|
||||
RIGFM=$RIG" M $MODE2M 0"
|
||||
|
||||
#set the long date
|
||||
TODAY=$(date)
|
||||
|
||||
#set path to my log
|
||||
MYLOG=$HOME/Documents/mylog.txt
|
||||
|
||||
SETRIG () {
|
||||
|
||||
#set radio frequency & mode
|
||||
$RIGFM
|
||||
|
||||
sleep 1
|
||||
|
||||
#check rig is in correct mode
|
||||
MODE=$($RIG m | grep $MODE2M)
|
||||
|
||||
sleep 1
|
||||
|
||||
MODECHECK() {
|
||||
#check rig is in correct mode
|
||||
MODE=$($RIG m | grep $MODE2M)
|
||||
}
|
||||
|
||||
sleep 1
|
||||
|
||||
if [ -z $MODE ]
|
||||
then
|
||||
$RIGFM
|
||||
MODECHECK
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#see if rig control is used
|
||||
if [ $RIGCONTROL == 'yes' ]
|
||||
then
|
||||
PIDCTL=$(pidof rigctld)
|
||||
WHO=$(whoami)
|
||||
if [ -z "$PIDCTL" ]
|
||||
then
|
||||
CONTROL=$(cat $MYPATH/config | grep '^RIG="' | sed 's/RIG="//' | sed 's/"//' | sed 's/rigctl/rigctld/')
|
||||
$CONTROL &
|
||||
sudo systemctl restart pat@$WHO
|
||||
fi
|
||||
SETRIG
|
||||
fi
|
||||
|
||||
#added to resolve issue 24. km4ack 20200307
|
||||
/usr/local/bin/$DIREWOLF </dev/null &>/dev/null &
|
||||
echo "Almost Done"
|
||||
sleep 5 | yad --width=350 --height=75 --auto-close --title="Direwolf" --progress --pulsate --no-buttons --center \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --text-align=center --text="Starting Direwolf....standby"
|
||||
#find what pt direwolf created (/dev/pts/X)
|
||||
LINK=$(ls -l /tmp/kisstnc | awk '{print $NF}')
|
||||
#end edit. km4ack 20200307
|
||||
|
||||
sudo /usr/sbin/kissattach $LINK $AXP
|
||||
sudo kissparms -c 1 -p wl2k
|
||||
echo;echo;echo
|
||||
|
||||
#verify direwolf has started
|
||||
PIDDW=$(pidof direwolf)
|
||||
if [ -z "$PIDDW" ]
|
||||
then
|
||||
yad --title="FAILED" --width=400 --height=100 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \
|
||||
--center --form --text="The PACKET Modem FAILED to Start" \
|
||||
--button=gtk-ok
|
||||
|
||||
else
|
||||
|
||||
yad --title="PACKET MODEM" --width=400 --height=100 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --text-align=center --on-top \
|
||||
--center --form --text="\r\r\r\rThe PACKET Modem has Started" \
|
||||
--button=gtk-ok &
|
||||
fi
|
||||
|
||||
#open pat inbox in browser
|
||||
export DISPLAY=:0 && chromium-browser --app=http://127.0.0.1:$PORT > /dev/null 2>&1 &
|
||||
|
||||
#exit 0
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
19
stop-modems
Executable file
19
stop-modems
Executable file
@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
#20191117 km4ack
|
||||
|
||||
MYPATH=$HOME/patmenu2
|
||||
LOGO=$MYPATH/pmlogo.png
|
||||
|
||||
#stop all modems that might be running
|
||||
|
||||
sudo killall direwolf piardopc kissattach piARDOP_GUI > /dev/null 2>&1
|
||||
|
||||
yad --title="Modem Stopped" --width=400 --height=100 \
|
||||
--image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \
|
||||
--center --form --text="\r\r\rModem has been stopped" \
|
||||
--button=gtk-ok
|
||||
|
||||
sleep 2
|
||||
|
||||
exit 0
|
76
weather.txt
Normal file
76
weather.txt
Normal file
@ -0,0 +1,76 @@
|
||||
FALSE FPAK61.PAFC SOUTHCENTRAL-AK
|
||||
FALSE FPAK62.PAFC SW AK-&-ALEUTIAN ISLANDS
|
||||
FALSE FPCA62.TJSJ PR
|
||||
FALSE FPHW60.PHFO HI
|
||||
FALSE FPUS54.KHUN ZONE-FORECAST-TN-VALLEY
|
||||
FALSE FPUS61.KAKQ VA
|
||||
FALSE FPUS61.KBOX CT-MA-RI
|
||||
FALSE FPUS61.KBTV VT
|
||||
FALSE FPUS61.KBUF NY
|
||||
FALSE FPUS61.KCAR ME
|
||||
FALSE FPUS61.KCLE OH
|
||||
FALSE FPUS61.KCTP PA
|
||||
FALSE FPUS61.KGYX ME-NH
|
||||
FALSE FPUS61.KLWX MD PANHANDLE-WV
|
||||
FALSE FPUS61.KOKX NE-NJ-SE-NY-S-CT
|
||||
FALSE FPUS61.KPHI DE-NJ
|
||||
FALSE FPUS61.KRLX WV-KY-SE-OH-SE-VA
|
||||
FALSE FPUS62.KCAE SC
|
||||
FALSE FPUS62.KFFC GA
|
||||
FALSE FPUS62.KJAX NE-FL-SE-GA
|
||||
FALSE FPUS62.KKEY FL-KEYS
|
||||
FALSE FPUS62.KMFL FL
|
||||
FALSE FPUS62.KRAH NC
|
||||
FALSE FPUS62.KTAE TALLAHASSEE-FL-AREA
|
||||
FALSE FPUS63.KBIS ND
|
||||
FALSE FPUS63.KDMX IA
|
||||
FALSE FPUS63.KFSD SD
|
||||
FALSE FPUS63.KGRR MI
|
||||
FALSE FPUS63.KICT KS
|
||||
FALSE FPUS63.KILX IL
|
||||
FALSE FPUS63.KIND IN
|
||||
FALSE FPUS63.KLMK KY
|
||||
FALSE FPUS63.KLSX MO
|
||||
FALSE FPUS63.KMKX WI
|
||||
FALSE FPUS63.KMPX MN
|
||||
FALSE FPUS64.KBMX AL
|
||||
FALSE FPUS64.KBRO DEEP-SOUTH-TEXAS
|
||||
FALSE FPUS64.KCRP SOUTH-TEXAS
|
||||
FALSE FPUS64.KEPZ SW-SCENTRAL-NM-FAR-WEST-TEXAS
|
||||
FALSE FPUS64.KEWX SW-SCENTRAL-NM-FAR-WEST-TEXAS
|
||||
FALSE FPUS64.KFWD TX-FORT-WORTH-NWS
|
||||
FALSE FPUS64.KHGX SE-TX
|
||||
FALSE FPUS64.KHUN TAB-ST-TN-VALLEY-AND-N-AL
|
||||
FALSE FPUS64.KJAN MS
|
||||
FALSE FPUS64.KLIX LA
|
||||
FALSE FPUS64.KLZK AR
|
||||
FALSE FPUS64.KMAF TX-MIDLAND-NWS
|
||||
FALSE FPUS64.KOHX MIDDLE-TN
|
||||
FALSE FPUS64.KSJT TX-SAN-ANGELO-NWS
|
||||
FALSE FPUS64.KTSA E-OK-&-NW-AR
|
||||
FALSE FPUS65.KABQ N-&-CENTRAL-NM
|
||||
FALSE FPUS65.KBOI SW-ID-&-SE-OR
|
||||
FALSE FPUS65.KBOU CO
|
||||
FALSE FPUS65.KBYZ S-CENTRAL-&-SOUTHEASTERN-MT
|
||||
FALSE FPUS65.KCYS WY
|
||||
FALSE FPUS65.KFGZ AZ
|
||||
FALSE FPUS65.KGGW NE-MT
|
||||
FALSE FPUS65.KLKN NORTHEN-AND-CENTRAL-NV
|
||||
FALSE FPUS65.KPIH SE-ID
|
||||
FALSE FPUS65.KPSR SW-AZ-&-SE-CA
|
||||
FALSE FPUS65.KREV NV
|
||||
FALSE FPUS65.KSLC UT
|
||||
FALSE FPUS65.KVEF GREAT-BASIN-&-MOJAVE
|
||||
FALSE FPUS65.SFT N-AZ
|
||||
FALSE FPUS66.KEKA N-CA
|
||||
FALSE FPUS66.KLOX SOUTHERN-CA
|
||||
FALSE FPUS66.KMFR S-OR-&-N-CA
|
||||
FALSE FPUS66.KMTR SAN-FRANCISCO-BAY-AREA
|
||||
FALSE FPUS66.KOTX E-WA-&-N-ID
|
||||
FALSE FPUS66.KPDT NE-OR-&-SE-WA
|
||||
FALSE FPUS66.KPQR OREGON-TEXT-FORCAST
|
||||
FALSE FPUS66.KSEW NW-WA
|
||||
FALSE FPUS66.KSGX EXTREME-SW-CA
|
||||
FALSE FPUS66.KSTO N-&-CENTRAL CA
|
||||
FALSE FPUS66.KSTOA CA
|
||||
FALSE FPUS65.KVEF LAS-VEGAS-REGION-NV
|
BIN
worldgridmap.pdf
Normal file
BIN
worldgridmap.pdf
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user