diff --git a/overlay/etc/skel/.config/systemd/user/et-service-direwolf-digipeater.service b/overlay/etc/skel/.config/systemd/user/et-service-direwolf-aprs-digipeater.service similarity index 63% rename from overlay/etc/skel/.config/systemd/user/et-service-direwolf-digipeater.service rename to overlay/etc/skel/.config/systemd/user/et-service-direwolf-aprs-digipeater.service index 08d2b0b..4df4758 100644 --- a/overlay/etc/skel/.config/systemd/user/et-service-direwolf-digipeater.service +++ b/overlay/etc/skel/.config/systemd/user/et-service-direwolf-aprs-digipeater.service @@ -1,21 +1,22 @@ # Author : Gaston Gonzalez # Date : 6 November 2024 -# Purpose : User systemd unit file for EmComm Tools Dire Wolf digipeater packet +# Updated : 8 November +# Purpose : User systemd unit file for EmComm Tools Dire Wolf APRS digipeater packet # : service. # # Usage: -# Check status : systemctl --user status et-service-direwolf-digipeater -# Start service : systemctl --user start et-service-direwolf-digipeater -# Stop service : systemctl --user stop et-service-direwolf-digipeater +# Check status : systemctl --user status et-service-direwolf-aprs-digipeater +# Start service : systemctl --user start et-service-direwolf-aprs-digipeater +# Stop service : systemctl --user stop et-service-direwolf-aprs-digipeater # Reload this config : systemctl --user daemon-reload [Unit] -Description=EmComm Tools Dire Wolf simple packet service +Description=EmComm Tools Dire Wolf APRS digipeater service # Disable conditional check for audio device. Allow et-ardop to enforce. #ConditionPathExists=/dev/et-audio [Service] -ExecStart=/opt/emcomm-tools/bin/et-direwolf start digipeater +ExecStart=/opt/emcomm-tools/bin/et-direwolf start aprs-digipeater Restart=no [Install] diff --git a/overlay/etc/skel/.config/systemd/user/et-service-direwolf-packet-digipeater.service b/overlay/etc/skel/.config/systemd/user/et-service-direwolf-packet-digipeater.service new file mode 100644 index 0000000..7667684 --- /dev/null +++ b/overlay/etc/skel/.config/systemd/user/et-service-direwolf-packet-digipeater.service @@ -0,0 +1,22 @@ +# Author : Gaston Gonzalez +# Date : 8 November 2024 +# Purpose : User systemd unit file for EmComm Tools Dire Wolf packet digipeater packet +# : service. +# +# Usage: +# Check status : systemctl --user status et-service-direwolf-packet-digipeater +# Start service : systemctl --user start et-service-direwolf-packet-digipeater +# Stop service : systemctl --user stop et-service-direwolf-packet-digipeater +# Reload this config : systemctl --user daemon-reload + +[Unit] +Description=EmComm Tools Dire Wolf packet digipeater service +# Disable conditional check for audio device. Allow et-ardop to enforce. +#ConditionPathExists=/dev/et-audio + +[Service] +ExecStart=/opt/emcomm-tools/bin/et-direwolf start packet-digipeater +Restart=no + +[Install] +WantedBy=multi-user.target diff --git a/overlay/etc/skel/.conkyrc b/overlay/etc/skel/.conkyrc index 2729a48..4eceb73 100644 --- a/overlay/etc/skel/.conkyrc +++ b/overlay/etc/skel/.conkyrc @@ -40,9 +40,9 @@ ${font DejaVu Sans:bold:size=10}${color #8d5133}${alignc}OPERATOR ${font DejaVu Sans Mono:size=11}${color yellow}Callsign: ${execpi 10 et-system-info callsign} Grid : ${execpi 10 et-system-info grid} -${font DejaVu Sans:bold:size=10}${color #8d5133}${alignc}MODE +${font DejaVu Sans:bold:size=10}${color white}${alignc}MODE ${font DejaVu Sans:bold:size=11}${color red}${alignc}${execpi 10 et-system-info et-mode} -${font DejaVu Sans:bold:size=9}${color white}${alignc}${execp /opt/emcomm-tools/bin/et-system-info release} +${font DejaVu Sans:bold:size=9}${color grey}${alignc}${execp /opt/emcomm-tools/bin/et-system-info release} ]]; diff --git a/overlay/opt/emcomm-tools/bin/et-direwolf b/overlay/opt/emcomm-tools/bin/et-direwolf index 1d3b8e8..a0843a9 100755 --- a/overlay/opt/emcomm-tools/bin/et-direwolf +++ b/overlay/opt/emcomm-tools/bin/et-direwolf @@ -2,7 +2,7 @@ # # Author : Gaston Gonzalez # Date : 1 November 2024 -# Updated : 7 November 2024 +# Updated : 8 November 2024 # Purpose : Wrapper script for starting Dire Wolf with PnP support # # Preconditions: @@ -17,12 +17,13 @@ DIREWOLF_CONF_FILE=${ET_HOME}/conf/template.d/packet/direwolf.conf usage() { echo "usage: $(basename $0) " echo " " - echo " start - Start Dire Wolf in selected mode" - echo " update-config - Update configuration for selected mode" + echo " start - Start Dire Wolf in selected mode" + echo " update-config - Update configuration for selected mode" echo "" echo " " - echo " digipeater - Run in RF-only digipeater mode" - echo " simple - Run in simple packet mode" + echo " aprs-digipeater - Run in RF-only APRS digipeater mode" + echo " packet-digipeater - Run in RF-only packet digipeater mode" + echo " simple - Run in simple packet mode" } if [ $# -ne 2 ]; then @@ -32,7 +33,10 @@ fi MODE=$2 case "${MODE}" in - digipeater) + aprs-digipeater) + DIREWOLF_TEMPLATE_CONF_FILE="${ET_HOME}/conf/template.d/packet/direwolf.${MODE}.conf" + ;; + packet-digipeater) DIREWOLF_TEMPLATE_CONF_FILE="${ET_HOME}/conf/template.d/packet/direwolf.${MODE}.conf" ;; simple) diff --git a/overlay/opt/emcomm-tools/bin/et-mode b/overlay/opt/emcomm-tools/bin/et-mode index 523ceb0..0bd7300 100755 --- a/overlay/opt/emcomm-tools/bin/et-mode +++ b/overlay/opt/emcomm-tools/bin/et-mode @@ -2,7 +2,7 @@ # # Author : Gaston Gonzalez # Date : 6 November 2024 -# Updated : 7 November 2024 +# Updated : 8 November 2024 # Purpose : Configures the system for a specific mode of operation # Use a simple text file to save the state of the last mode selected @@ -12,17 +12,19 @@ MODE_STATUS_FILE="${HOME}/.config/emcomm-tools/et-mode" MODE_ID_NONE="none" MODE_ID_APRS_DIGIPEATER="aprs-digipeater" MODE_ID_APRS_CLIENT="aprs-client" +MODE_ID_PACKET_DIGIPEATER="packet-digipeater" MODE_ID_WINLINK_ARDOP="winlink-ardop" MODE_ID_WINLINK_PACKET="winlink-packet" # 1. Attempt to stop all EmComm Tools services regardless if they are running. -# 2. Stop the applications first, then the modems +# 2. Stop the applications first, then the modems. stop_all_services() { systemctl --user stop et-service-winlink-ardop systemctl --user stop et-service-winlink-packet systemctl --user stop et-service-ardop systemctl --user stop et-service-direwolf-simple - systemctl --user stop et-service-direwolf-digipeater + systemctl --user stop et-service-direwolf-aprs-digipeater + systemctl --user stop et-service-direwolf-packet-digipeater } exit_on_service_failure() { @@ -69,11 +71,12 @@ options=() options+=("${MODE_ID_NONE}" "No mode selected") options+=("${MODE_ID_APRS_CLIENT}" "APRS Client (YAAC)") options+=("${MODE_ID_APRS_DIGIPEATER}" "APRS Digipeater") +options+=("${MODE_ID_PACKET_DIGIPEATER}" "Packet Digipeater") options+=("${MODE_ID_WINLINK_ARDOP}" "Winlink ARDOP") options+=("${MODE_ID_WINLINK_PACKET}" "Winlink Packet") # Prompt user for option and save exit status -SELECTED_MODE=$(dialog --clear --menu "Select a mode:" 30 40 10 "${options[@]}" 3>&1 1>&2 2>&3) +SELECTED_MODE=$(dialog --clear --menu "Select a mode:" 15 50 10 "${options[@]}" 3>&1 1>&2 2>&3) exit_status=$? tput sgr 0 && clear @@ -89,13 +92,17 @@ if [ $exit_status -eq 0 ]; then et-log "No mode selected" ;; ${MODE_ID_APRS_DIGIPEATER}) - systemctl --user start et-service-direwolf-digipeater + systemctl --user start et-service-direwolf-aprs-digipeater et-log "APRS digipeater now running." ;; ${MODE_ID_APRS_CLIENT}) start_and_wait_for_service et-service-direwolf-simple et-yaac start ;; + ${MODE_ID_PACKET_DIGIPEATER}) + systemctl --user start et-service-direwolf-packet-digipeater + et-log "Packet digipeater now running." + ;; ${MODE_ID_WINLINK_ARDOP}) start_and_wait_for_service et-service-ardop start_and_wait_for_service et-service-winlink-ardop @@ -112,7 +119,6 @@ if [ $exit_status -eq 0 ]; then ;; esac - else et-log "No mode selected" echo ${MODE_ID_NONE} > ${MODE_STATUS_FILE} diff --git a/overlay/opt/emcomm-tools/bin/et-system-info b/overlay/opt/emcomm-tools/bin/et-system-info index df6d6f1..04f179d 100755 --- a/overlay/opt/emcomm-tools/bin/et-system-info +++ b/overlay/opt/emcomm-tools/bin/et-system-info @@ -2,7 +2,7 @@ # # Author : Gaston Gonzalez # Date : 6 October 2024 -# Updated : 7 November 2024 +# Updated : 8 November 2024 # Purpose : Utility script for dumping system information function usage() { @@ -175,6 +175,7 @@ case $1 in MODE_ID_NONE="none" MODE_ID_APRS_DIGIPEATER="aprs-digipeater" + MODE_ID_PACKET_DIGIPEATER="packet-digipeater" MODE_ID_APRS_CLIENT="aprs-client" MODE_ID_WINLINK_ARDOP="winlink-ardop" MODE_ID_WINLINK_PACKET="winlink-packet" @@ -190,11 +191,14 @@ case $1 in echo "Run 'et-mode' to set" ;; ${MODE_ID_APRS_DIGIPEATER}) - echo "Digipeater" + echo "APRS Digipeater" ;; ${MODE_ID_APRS_CLIENT}) echo "APRS" ;; + ${MODE_ID_PACKET_DIGIPEATER}) + echo "Packet Digipeater" + ;; ${MODE_ID_WINLINK_ARDOP}) echo "Winlink ARDOP" ;; diff --git a/overlay/opt/emcomm-tools/conf/template.d/packet/direwolf.digipeater.conf b/overlay/opt/emcomm-tools/conf/template.d/packet/direwolf.aprs-digipeater.conf similarity index 100% rename from overlay/opt/emcomm-tools/conf/template.d/packet/direwolf.digipeater.conf rename to overlay/opt/emcomm-tools/conf/template.d/packet/direwolf.aprs-digipeater.conf diff --git a/overlay/opt/emcomm-tools/conf/template.d/packet/direwolf.packet-digipeater.conf b/overlay/opt/emcomm-tools/conf/template.d/packet/direwolf.packet-digipeater.conf new file mode 100644 index 0000000..80afa3c --- /dev/null +++ b/overlay/opt/emcomm-tools/conf/template.d/packet/direwolf.packet-digipeater.conf @@ -0,0 +1,26 @@ +# Author : Gaston Gonzalez +# Date : 8 November 2024 +# Purpose : Dire Wolf template for RF-only packet digipeater operation +# A big thanks to Jason KM4ACK for introducing me to CBEACON +# as I was about to add linbpq just to support a digipeater + +# Audio settings +ADEVICE {{ET_AUDIO_DEVICE}} +CHANNEL 0 + +# User settings +MYCALL {{ET_CALLSIGN}}-2 + +# Modem settings +MODEM 1200 + +# Rig control settings. Do not change this. +# EmComm Tools uses Hamlib's rig control daemon for all radio interfaces. +PTT RIG 2 localhost:4532 + +# Enable ports to allow other applications use Dire Wolf as the packet engine +AGWPORT 8000 +KISSPORT 8001 + +CBEACON delay=1 every=30 overlay=S symbol="digi" 28 info="EmComm Tools packet digi" via=WIDE1-1 +CDIGIPEAT 0 0 diff --git a/tests/run-test-suite.sh b/tests/run-test-suite.sh index 67904b7..5601ce9 100755 --- a/tests/run-test-suite.sh +++ b/tests/run-test-suite.sh @@ -1,15 +1,25 @@ #!/bin/bash # Author : Gaston Gonzalez # Date : 3 November 2024 +# Updated : 8 November 2024 # Purpose : Post installation validation script PATH=.:$PATH +YELLOW="\033[1;33m" +GREEN="\033[0;32m" +RED="\033[0;31m" +NC="\033[0m" + +echo -e "${YELLOW}---------------------------------------" +echo "EmComm Tools Post Validation Test Suite" +echo -e "---------------------------------------${NC}" + ls test-*.sh | while read test_case; do eval ${test_case} if [[ $? -eq 0 ]]; then - printf "%20s %s\n" "${test_case}" "[PASSED]" + printf "%20s ${GREEN}%s${NC}\n" "${test_case}" "[PASSED]" else - printf "%20s %s\n" "${test_case}" "[FAILED]" + printf "%20s ${RED}%s${NC}\n" "${test_case}" "[FAILED]" fi done diff --git a/tests/test-direwolf.sh b/tests/test-direwolf.sh new file mode 100755 index 0000000..dc76ae1 --- /dev/null +++ b/tests/test-direwolf.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# Author : Gaston Gonzalez +# Date : 8 November 2024 +# Purpose : Test direwolf installation + +OUT=$(which direwolf) +exit $?