mirror of
https://github.com/AG7GN/nexus-utilities.git
synced 2025-05-15 22:20:09 -07:00
Added new ARDOP + pat GUI
This commit is contained in:
parent
cbaad83871
commit
8b201581bb
10
ardop_pat_gui.desktop
Normal file
10
ardop_pat_gui.desktop
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=ARDOP TNC and pat GUI
|
||||||
|
GenericName=ARDOP TNC and pat GUI
|
||||||
|
Comment=Configure and monitor ARDOP TNC and pat
|
||||||
|
Exec=sh -c /usr/local/bin/ardop_pat_gui.sh
|
||||||
|
Icon=/usr/share/pixmaps/CQ.png
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Categories=HamRadio;
|
||||||
|
Comment[en_US]=ARDOP TNC and pat GUI
|
@ -16,7 +16,7 @@
|
|||||||
#%
|
#%
|
||||||
#================================================================
|
#================================================================
|
||||||
#- IMPLEMENTATION
|
#- IMPLEMENTATION
|
||||||
#- version ${SCRIPT_NAME} 1.0.0
|
#- version ${SCRIPT_NAME} 1.0.1
|
||||||
#- author Steve Magnuson, AG7GN
|
#- author Steve Magnuson, AG7GN
|
||||||
#- license CC-BY-SA Creative Commons License
|
#- license CC-BY-SA Creative Commons License
|
||||||
#- script_id 0
|
#- script_id 0
|
||||||
@ -108,7 +108,7 @@ function setARDOPpatDefaults () {
|
|||||||
|
|
||||||
function loadSettings () {
|
function loadSettings () {
|
||||||
|
|
||||||
PTTs="GPIO 12!GPIO 23!RIG 2 localhost:4532"
|
PTTs="GPIO 12!GPIO 23!rig control via pat"
|
||||||
ARDOP_CONFIG="$TMPDIR/ardop.conf"
|
ARDOP_CONFIG="$TMPDIR/ardop.conf"
|
||||||
|
|
||||||
if [ -s "$CONFIG_FILE" ]
|
if [ -s "$CONFIG_FILE" ]
|
||||||
@ -396,9 +396,16 @@ do
|
|||||||
then
|
then
|
||||||
echo -e "Configure ARDOP and pat in the \"Configure ARDOP\" and \"Configure pat\" tabs,\nthen click \"Save Settings...\" button below." >&8
|
echo -e "Configure ARDOP and pat in the \"Configure ARDOP\" and \"Configure pat\" tabs,\nthen click \"Save Settings...\" button below." >&8
|
||||||
else # Not a first run. pat and ARDOP configured so start 'em
|
else # Not a first run. pat and ARDOP configured so start 'em
|
||||||
|
# Check what PTT was selected
|
||||||
|
if [[ ${F[_PTT_]} =~ GPIO ]]
|
||||||
|
then # Let piardopc control PTT gia GPIO
|
||||||
|
ARDOP_PTT="-p $(echo "${F[_PTT_]}" | tr ' ' '=')"
|
||||||
|
else # Let pat control PTT via rigctl
|
||||||
|
ARDOP_PTT=""
|
||||||
|
fi
|
||||||
# Start piardopc
|
# Start piardopc
|
||||||
echo "Launching $ARDOP ${F[_ARDOPPORT_]} ${F[_ADEVICE_CAPTURE_]} ${F[_ADEVICE_PLAY_]} -p "$(echo "${F[_PTT_]}" | tr ' ' '=')"" >&8
|
echo "Launching $ARDOP ${F[_ARDOPPORT_]} ${F[_ADEVICE_CAPTURE_]} ${F[_ADEVICE_PLAY_]} $ARDOP_PTT" >&8
|
||||||
$ARDOP ${F[_ARDOPPORT_]} ${F[_ADEVICE_CAPTURE_]} ${F[_ADEVICE_PLAY_]} -p "$(echo "${F[_PTT_]}" | tr ' ' '=')" >&8 2>&8 &
|
$ARDOP ${F[_ARDOPPORT_]} ${F[_ADEVICE_CAPTURE_]} ${F[_ADEVICE_PLAY_]} $ARDOP_PTT >&8 2>&8 &
|
||||||
ardop_PID=$!
|
ardop_PID=$!
|
||||||
echo -e "\n\nARDOP has started. PID=$ardop_PID" >&8
|
echo -e "\n\nARDOP has started. PID=$ardop_PID" >&8
|
||||||
|
|
||||||
@ -452,7 +459,7 @@ Click the <b>Save Settings...</b> button below after you make your changes.\n\n"
|
|||||||
--field="Web Service Port":NUM "$PAT_HTTP_PORT!8040..8049!1!" \
|
--field="Web Service Port":NUM "$PAT_HTTP_PORT!8040..8049!1!" \
|
||||||
--field="Telnet Service Port":NUM "$PAT_TELNET_PORT!8770..8779!1!" \
|
--field="Telnet Service Port":NUM "$PAT_TELNET_PORT!8770..8779!1!" \
|
||||||
--field="Forced ARQ Bandwidth":CHK "$PAT_ARQ_BW_FORCED" \
|
--field="Forced ARQ Bandwidth":CHK "$PAT_ARQ_BW_FORCED" \
|
||||||
--field="Max ARQ Bandwidth":NUM "$PAT_ARQ_BW_MAX!50..1000!50!" \
|
--field="Max ARQ Bandwidth":NUM "$PAT_ARQ_BW_MAX!50..2000!50!" \
|
||||||
--field="Beacon Interval (minutes)":NUM "$PAT_BEACON_INTERVAL!0..120!1!" \
|
--field="Beacon Interval (minutes)":NUM "$PAT_BEACON_INTERVAL!0..120!1!" \
|
||||||
--field="Enable CW ID":CHK "$PAT_CW_ID" \
|
--field="Enable CW ID":CHK "$PAT_CW_ID" \
|
||||||
--field="Start pat web service when ARDOP starts":CHK "$PAT_START_HTTP" \
|
--field="Start pat web service when ARDOP starts":CHK "$PAT_START_HTTP" \
|
||||||
@ -550,6 +557,10 @@ EOF
|
|||||||
--argjson D ${PAT_CW_ID,,} \
|
--argjson D ${PAT_CW_ID,,} \
|
||||||
'.mycall = $C | .secure_login_password = $P | .http_addr = $H | .telnet.listen_addr = $T | .locator = $L | .ardop.addr = $R | .ardop.arq_bandwidth.Max = $B | .ardop.beacon_interval = $I | .ardop.arq_bandwidth.Forced = $F | .ardop.cwid_enabled = $D' | sponge $PAT_CONFIG
|
'.mycall = $C | .secure_login_password = $P | .http_addr = $H | .telnet.listen_addr = $T | .locator = $L | .ardop.addr = $R | .ardop.arq_bandwidth.Max = $B | .ardop.beacon_interval = $I | .ardop.arq_bandwidth.Forced = $F | .ardop.cwid_enabled = $D' | sponge $PAT_CONFIG
|
||||||
|
|
||||||
|
# Did ARDOP config request rigctl for PTT? If so let pat handle it via rigctl
|
||||||
|
[[ ${F[_PTT_]} =~ GPIO ]] && PAT_PTT=false || PAT_PTT=true
|
||||||
|
cat $PAT_CONFIG | jq --argjson P $PAT_PTT '.ardop.ptt_ctrl = $P' | sponge $PAT_CONFIG
|
||||||
|
|
||||||
# Update the yad configuration file.
|
# Update the yad configuration file.
|
||||||
echo "declare -gA F" > "$CONFIG_FILE"
|
echo "declare -gA F" > "$CONFIG_FILE"
|
||||||
for J in "${!F[@]}"
|
for J in "${!F[@]}"
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
#%
|
#%
|
||||||
#================================================================
|
#================================================================
|
||||||
#- IMPLEMENTATION
|
#- IMPLEMENTATION
|
||||||
#- version ${SCRIPT_NAME} 1.4.1
|
#- version ${SCRIPT_NAME} 1.4.2
|
||||||
#- author Steve Magnuson, AG7GN
|
#- author Steve Magnuson, AG7GN
|
||||||
#- license CC-BY-SA Creative Commons License
|
#- license CC-BY-SA Creative Commons License
|
||||||
#- script_id 0
|
#- script_id 0
|
||||||
@ -100,12 +100,13 @@ export -f runFind
|
|||||||
function processAlias () {
|
function processAlias () {
|
||||||
local CALL="$(echo "$1" | sed 's/^ //' | cut -d' ' -f2)"
|
local CALL="$(echo "$1" | sed 's/^ //' | cut -d' ' -f2)"
|
||||||
local URI="$(echo "$1" | sed 's/^ //' | sed -e 's/packet/ax25/' | cut -d' ' -f1)"
|
local URI="$(echo "$1" | sed 's/^ //' | sed -e 's/packet/ax25/' | cut -d' ' -f1)"
|
||||||
|
local FREQ="$(echo "$1" | sed 's/^ //' | sed -e 's/packet/ax25/' | cut -d' ' -f3)"
|
||||||
if jq -r '.connect_aliases | keys[] as $k | "\(.[$k])"' $PAT_CONFIG | grep -q "$URI"
|
if jq -r '.connect_aliases | keys[] as $k | "\(.[$k])"' $PAT_CONFIG | grep -q "$URI"
|
||||||
then # Alias already present
|
then # Alias already present
|
||||||
yad --info --center --text-align=center --buttons-layout=center \
|
yad --info --center --text-align=center --buttons-layout=center \
|
||||||
--text="$URI was already in aliases" --borders=20 --button="gtk-ok":0
|
--text="$URI was already in aliases" --borders=20 --button="gtk-ok":0
|
||||||
else # Alias not in list. Add it.
|
else # Alias not in list. Add it.
|
||||||
cat $PAT_CONFIG | jq --arg K "$CALL" --arg U "$URI" \
|
cat $PAT_CONFIG | jq --arg K "$CALL@$FREQ" --arg U "$URI" \
|
||||||
'.connect_aliases += {($K): $U}' | sponge $PAT_CONFIG
|
'.connect_aliases += {($K): $U}' | sponge $PAT_CONFIG
|
||||||
if [[ $? == 0 ]]
|
if [[ $? == 0 ]]
|
||||||
then
|
then
|
||||||
@ -126,11 +127,11 @@ function viewDeleteAliases () {
|
|||||||
# Read aliases from $PAT_CONFIG
|
# Read aliases from $PAT_CONFIG
|
||||||
ALIASES="$(jq -r .connect_aliases $PAT_CONFIG | egrep -v "telnet|{|}" | \
|
ALIASES="$(jq -r .connect_aliases $PAT_CONFIG | egrep -v "telnet|{|}" | \
|
||||||
sed 's/^ /FALSE|/' | tr -d ' ",' | sed 's/:/|/1' | tr '|' '\n')"
|
sed 's/^ /FALSE|/' | tr -d ' ",' | sed 's/:/|/1' | tr '|' '\n')"
|
||||||
RESULT="$(yad --title="View/remove pat aliases" --list --mouse --borders=10 \
|
RESULT="$(yad --title="View/remove aliases" --list --mouse --borders=10 \
|
||||||
--height=400 --width=400 --text-align=center \
|
--height=400 --width=500 --text-align=center \
|
||||||
--text "<b>Your current pat connection aliases are listed below.</b>\n \
|
--text "<b>Your current pat connection aliases are listed below.</b>\n \
|
||||||
Check the ones you want to remove.\n" \
|
Check the ones you want to remove.\n" \
|
||||||
--checklist --grid-lines=hor --auto-kill --column="Pick" --column="Call" --column="Connect URI" \
|
--checklist --grid-lines=hor --auto-kill --column="Pick" --column="Call@Freq" --column="Connect URI" \
|
||||||
<<< "$ALIASES" --buttons-layout=center --button="Exit":1 --button="Refresh list":0 --button="Remove selected aliases":0)"
|
<<< "$ALIASES" --buttons-layout=center --button="Exit":1 --button="Refresh list":0 --button="Remove selected aliases":0)"
|
||||||
if [[ $? == 0 ]]
|
if [[ $? == 0 ]]
|
||||||
then # Refresh or removal requested
|
then # Refresh or removal requested
|
||||||
@ -165,16 +166,24 @@ TMPDIR="/tmp/${SCRIPT_NAME}.$RANDOM.$RANDOM.$RANDOM.$$"
|
|||||||
}
|
}
|
||||||
|
|
||||||
#= general variables ==#
|
#= general variables ==#
|
||||||
|
#== general variables ==#
|
||||||
|
SCRIPT_NAME="$(basename ${0})" # scriptname without path
|
||||||
|
SCRIPT_DIR="$( cd $(dirname "$0") && pwd )" # script directory
|
||||||
|
SCRIPT_FULLPATH="${SCRIPT_DIR}/${SCRIPT_NAME}"
|
||||||
|
SCRIPT_ID="$(ScriptInfo | grep script_id | tr -s ' ' | cut -d' ' -f3)"
|
||||||
|
SCRIPT_HEADSIZE=$(grep -sn "^# END_OF_HEADER" ${0} | head -1 | cut -f1 -d:)
|
||||||
|
VERSION="$(ScriptInfo version | grep version | tr -s ' ' | cut -d' ' -f 4)"
|
||||||
|
|
||||||
|
TITLE="Find RMS Stations $VERSION"
|
||||||
PAT_CONFIG="$HOME/.wl2k/config.json"
|
PAT_CONFIG="$HOME/.wl2k/config.json"
|
||||||
export PAT_CONFIG=$PAT_CONFIG
|
export PAT_CONFIG=$PAT_CONFIG
|
||||||
export find_cmd='@bash -c "runFind %1 %2 %3 %4"'
|
export find_cmd='@bash -c "runFind %1 %2 %3 %6"'
|
||||||
export view_remove_cmd='bash -c "viewDeleteAliases"'
|
export view_remove_cmd='bash -c "viewDeleteAliases"'
|
||||||
export fpipe=$(mktemp -u --tmpdir find.XXXXXXXX)
|
export fpipe=$(mktemp -u --tmpdir find.XXXXXXXX)
|
||||||
mkfifo "$fpipe"
|
mkfifo "$fpipe"
|
||||||
DEFAULT_SEARCH_STRING="$(jq -r .locator $PAT_CONFIG)"
|
DEFAULT_SEARCH_STRING="$(jq -r .locator $PAT_CONFIG)"
|
||||||
fkey=$(($RANDOM * $$))
|
fkey=$(($RANDOM * $$))
|
||||||
YAD_PIDs=()
|
YAD_PIDs=()
|
||||||
|
|
||||||
BANDs="^Any!70cm!1.25m!2m!6m!12m!15m!17m!20m!30m!40m!60m!80m!160m"
|
BANDs="^Any!70cm!1.25m!2m!6m!12m!15m!17m!20m!30m!40m!60m!80m!160m"
|
||||||
MODEs="^Any!ARDOP!Packet!Pactor!WINMOR"
|
MODEs="^Any!ARDOP!Packet!Pactor!WINMOR"
|
||||||
|
|
||||||
@ -266,25 +275,25 @@ trap SafeExit INT TERM EXIT
|
|||||||
|
|
||||||
yad --plug="$fkey" --tabnum=1 --text-align=center \
|
yad --plug="$fkey" --tabnum=1 --text-align=center \
|
||||||
--text="<b>Search for RMS stations and optionally add them to your pat \
|
--text="<b>Search for RMS stations and optionally add them to your pat \
|
||||||
connection alias list</b>\n \
|
connection alias list\n<span color='blue'>If you make changes: Restart pat + TNC + refresh pat web browser!</span></b>" \
|
||||||
The station list is generated by running 'pat rmslist' (downloads the list from Winlink).\n \
|
|
||||||
Internet access is required for this to work." \
|
|
||||||
--form \
|
--form \
|
||||||
--field="Search string" "${DEFAULT_SEARCH_STRING:0:4}" \
|
--field="Search string" "${DEFAULT_SEARCH_STRING:0:4}" \
|
||||||
--field="Band":CB "$BANDs" \
|
--field="Band":CB "$BANDs" \
|
||||||
--field="Mode":CB "$MODEs" --field="Sort by distance (Uncheck to sort by callsign)":CHK TRUE \
|
--field="Mode":CB "$MODEs" \
|
||||||
--field="gtk-find":FBTN "$find_cmd" --field="<b>View/edit current pat connection aliases</b>":FBTN "$view_remove_cmd &" >/dev/null &
|
--field="gtk-find":FBTN "$find_cmd" \
|
||||||
|
--field="<b>View/edit current pat connection aliases</b>":FBTN "$view_remove_cmd &" \
|
||||||
|
--field="Sort results by distance (Uncheck to sort by callsign)":CHK TRUE >/dev/null &
|
||||||
YAD_PIDs+=( $! )
|
YAD_PIDs+=( $! )
|
||||||
|
|
||||||
yad --plug="$fkey" --tabnum=2 --list --grid-lines=hor --dclick-action="bash -c \"processAlias '%s'\"" \
|
yad --plug="$fkey" --tabnum=2 --list --grid-lines=hor --dclick-action="bash -c \"processAlias '%s'\"" \
|
||||||
--text "Search results. Double-click a Call to add it to your pat aliases." \
|
--text "Search results are below. Double-click a Call to add it to your pat aliases." \
|
||||||
--column="URI" --column="Call" --column="Frequency (MHz)" --column="Location" --column="Distance" --column="Azimuth" \
|
--column="URI" --column="Call" --column="Frequency (MHz)" --column="Location" --column="Distance" --column="Azimuth" \
|
||||||
--column="Mode" \
|
--column="Mode" \
|
||||||
--search-column=2 --expand-column=7 --hide-column=1 <&4 >/dev/null &
|
--search-column=2 --expand-column=7 --hide-column=1 <&4 >/dev/null &
|
||||||
YAD_PIDs+=( $! )
|
YAD_PIDs+=( $! )
|
||||||
|
|
||||||
yad --paned --key="$fkey" --buttons-layout=center --button="gtk-close":0 --width=700 --height=700 \
|
yad --paned --key="$fkey" --buttons-layout=center --button="gtk-close":0 --width=700 --height=700 \
|
||||||
--title="Find RMS Stations" --window-icon="system-search"
|
--title="$TITLE" --window-icon="system-search"
|
||||||
|
|
||||||
SafeExit
|
SafeExit
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
VERSION="2.3.4"
|
VERSION="2.3.5"
|
Loading…
x
Reference in New Issue
Block a user