diff --git a/dw_pat_gui.sh b/dw_pat_gui.sh index d207a8f..d5fbb15 100755 --- a/dw_pat_gui.sh +++ b/dw_pat_gui.sh @@ -15,7 +15,7 @@ #% #================================================================ #- IMPLEMENTATION -#- version ${SCRIPT_NAME} 1.4.0 +#- version ${SCRIPT_NAME} 1.5.1 #- author Steve Magnuson, AG7GN #- license CC-BY-SA Creative Commons License #- script_id 0 @@ -86,6 +86,31 @@ function Die () { SafeExit } +function loadpatDefaults () { + for I in $(seq 7 10) + do # I is the field number. D[$I] is the default value + echo "${I}:${D[$I]}" + done +} + +function setTNCpatDefaults () { + declare -gA D + D[1]="N0CALL" # Call sign + D[2]="1200" # Modem + D[3]="null" # Audio capture interface (ADEVICE) + D[4]="null" # Audio playback interface (ADEVICE) + D[5]="96000" # Audio playback rate (ARATE) + D[6]="GPIO 23" # GPIO PTT (BCM pin) + D[7]="200" # TX Delay + D[8]="50" # TX Tail + D[9]="64" # Persist + D[10]="20" # Slot Time + D[11]="60" # Audio Stats + D[12]="8001" # AGW Port + D[13]="8010" # KISS Port + D[14]="FALSE" # Enable pat HTTP server +} + function loadSettings () { MODEMs="1200!9600" @@ -99,21 +124,22 @@ function loadSettings () { source "$CONFIG_FILE" else # Set some default values in a new config file echo -e "Config file $CONFIG_FILE not found.\nCreating a new one with default values." >&3 + setTNCpatDefaults echo "declare -gA F" > "$CONFIG_FILE" - echo "F[_CALL_]='N0CALL'" >> "$CONFIG_FILE" - echo "F[_MODEM_]='1200'" >> "$CONFIG_FILE" - echo "F[_ADEVICE_CAPTURE_]='null'" >> "$CONFIG_FILE" - echo "F[_ADEVICE_PLAY_]='null'" >> "$CONFIG_FILE" - echo "F[_ARATE_]='96000'" >> "$CONFIG_FILE" - echo "F[_PTT_]='GPIO 23'" >> "$CONFIG_FILE" - echo "F[_TXDELAY_]='200'" >> "$CONFIG_FILE" - echo "F[_TXTAIL_]='50'" >> "$CONFIG_FILE" - echo "F[_PERSIST_]='64'" >> "$CONFIG_FILE" - echo "F[_SLOTTIME_]='20'" >> "$CONFIG_FILE" - echo "F[_AUDIOSTATS_]='60'" >> "$CONFIG_FILE" - echo "F[_AGWPORT_]='8001'" >> "$CONFIG_FILE" - echo "F[_KISSPORT_]='8010'" >> "$CONFIG_FILE" - echo "F[_PAT_HTTP_]='FALSE'" >> "$CONFIG_FILE" + echo "F[_CALL_]='${D[1]}'" >> "$CONFIG_FILE" + echo "F[_MODEM_]='${D[2]}'" >> "$CONFIG_FILE" + echo "F[_ADEVICE_CAPTURE_]='${D[3]}'" >> "$CONFIG_FILE" + echo "F[_ADEVICE_PLAY_]='${D[4]}'" >> "$CONFIG_FILE" + echo "F[_ARATE_]='${D[5]}'" >> "$CONFIG_FILE" + echo "F[_PTT_]='${D[6]}'" >> "$CONFIG_FILE" + echo "F[_TXDELAY_]='${D[7]}'" >> "$CONFIG_FILE" + echo "F[_TXTAIL_]='${D[8]}'" >> "$CONFIG_FILE" + echo "F[_PERSIST_]='${D[9]}'" >> "$CONFIG_FILE" + echo "F[_SLOTTIME_]='${D[10]}'" >> "$CONFIG_FILE" + echo "F[_AUDIOSTATS_]='${D[11]}'" >> "$CONFIG_FILE" + echo "F[_AGWPORT_]='${D[12]}'" >> "$CONFIG_FILE" + echo "F[_KISSPORT_]='${D[13]}'" >> "$CONFIG_FILE" + echo "F[_PAT_HTTP_]='${D[14]}'" >> "$CONFIG_FILE" source "$CONFIG_FILE" fi @@ -188,9 +214,9 @@ function killDirewolf () { if pgrep ^direwolf | grep -q $1 2>/dev/null then kill $1 >/dev/null 2>&1 - echo -e "\n\nDirewolf stopped. Click \"Restart...\" button below to restart." >$PIPEDATA + echo -e "\n\nDirewolf stopped. Click \"Save Settings...\" button below to restart." >$PIPEDATA else - echo -e "\n\nDirewolf was already stopped. Click \"Restart...\" button below to restart." >$PIPEDATA + echo -e "\n\nDirewolf was already stopped. Click \"Save Settings...\" button below to restart." >$PIPEDATA fi } @@ -335,6 +361,8 @@ then echo -n "" | pat configure >/dev/null 2>&1 fi +export -f setTNCpatDefaults loadpatDefaults +export load_pat_defaults_cmd='@bash -c "setTNCpatDefaults; loadpatDefaults"' export PIPEDATA=$PIPE #============================ @@ -352,11 +380,6 @@ $SYNTAX && set -n # Run in debug mode, if set $DEBUG && set -x -# Configure /etc/ax25/axports if necessary. This is needed in order to allocate a PTY for pat. -if ! grep -q "^$AX25PORT[[:space:]]" $AX25PORTFILE 2>/dev/null -then - echo "$AX25PORT $MYCALL 0 255 7 Winlink" | sudo tee --append $AX25PORTFILE >/dev/null -fi # Set up a dummy rig for rigctl in pat RIG="$(jq -r .hamlib_rigs $PAT_CONFIG)" @@ -414,8 +437,16 @@ do if [[ $FIRST_RUN == true ]] then - echo -e "Configure Direwolf TNC and pat in the \"Configure TNC\" and \"Configure pat\" tabs,\nthen click \"Restart...\" button below." >&3 + echo -e "Configure Direwolf TNC and pat in the \"Configure TNC\" and \"Configure pat\" tabs,\nthen click \"Save Settings...\" button below." >&3 else # Not a first run. pat and Direwolf configured so start 'em + # Configure /etc/ax25/axports if necessary. This is needed in order to allocate a PTY for pat. + if ! grep -q "^$AX25PORT[[:space:]]*$MYCALL" $AX25PORTFILE 2>/dev/null + then #$AX25PORT $MYCALL entry not found + # Remove existing lines with $AX25PORT and any empty lines if present + sudo sed -i -e "s/^$AX25PORT[[:space:]].*$//g" -e '/^[[:space:]]*$/d' $AX25PORTFILE + # Add the entry for $MYCALL + echo "$AX25PORT $MYCALL 0 255 7 Winlink" | sudo tee --append $AX25PORTFILE >/dev/null + fi # Start Direwolf [[ ${F[_AUDIOSTATS_]} == 0 ]] || DIREWOLF+=" -a ${F[_AUDIOSTATS_]}" $DIREWOLF -c $DW_CONFIG >&3 2>&3 & @@ -464,7 +495,7 @@ do fepi-capture-left and fepi-playback-left and PTT GPIO 12.\n \ RIGHT Radio: Use ADEVICEs \ fepi-capture-right and fepi-playback-right and PTT GPIO 23.\n\n \ -Click the Restart... button below after you make your changes.\n\n" \ +Click the Save Settings... button below after you make your changes.\n\n" \ --item-separator="!" \ --separator="|" \ --align=right \ @@ -488,7 +519,7 @@ Click the Restart... button below after you make your changes.\n\n" \ # Set up tab for pat configuration yad --plug="$ID" --tabnum=3 \ --text="pat Configuration\n\n \ -Click the Restart... button below after you make your changes.\n\n" \ +Click the Save Settings... button below after you make your changes.\n\n" \ --item-separator="!" \ --separator="|" \ --align=right \ @@ -507,12 +538,11 @@ Click the Restart... button below after you make your changes.\n\n" \ --field="TX Tail (ms)":NUM "$TXTAIL!0..200!10!" \ --field="Persist":NUM "$PERSIST!0..255!1!" \ --field="Slot Time (ms)":NUM "$SLOTTIME!0..255!10!" \ + --field="Load Default AX25 Timers":FBTN "$load_pat_defaults_cmd" \ --field="Edit pat Connection Aliases":FBTN "bash -c edit_pat_aliases.sh &" \ --focus-field 1 > $TMPDIR/CONFIGURE_PAT.txt & YAD_PIDs+=( $! ) - STOP_BUTTON_TEXT="TNC" - RESTART_BUTTON_TEXT="Restart Direwolf TNC" - [[ $PAT_START_HTTP == TRUE ]] && AND_PAT=" and pat" || AND_PAT="" + [[ $PAT_START_HTTP == TRUE ]] && AND_PAT=" + pat" || AND_PAT="" # Set up a notebook with the 3 tabs. yad --title="Direwolf TNC and pat $VERSION" --text="Direwolf TNC$AND_PAT Configuration and Operation" \ @@ -524,7 +554,7 @@ Click the Restart... button below after you make your changes.\n\n" \ --tab="Configure pat" \ --width="800" --height="600" \ --button="Stop Direwolf$AND_PAT & Exit":1 \ - --button="Restart Direwolf$AND_PAT":0 + --button="Save Settings & Restart Direwolf$AND_PAT":0 RETURN_CODE=$? case $RETURN_CODE in diff --git a/hampi-utilities.version b/hampi-utilities.version index 4cf12f6..bd4186a 100644 --- a/hampi-utilities.version +++ b/hampi-utilities.version @@ -1 +1 @@ -VERSION="2.2.4" \ No newline at end of file +VERSION="2.2.5" \ No newline at end of file