Files
emcomm-tools-os-community/overlay/opt/emcomm-tools/bin/et-mode
T
2024-11-06 13:06:16 -07:00

82 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
#
# Author : Gaston Gonzalez
# Date : 6 November 2024
# Purpose : Configures the system for a specific mode of operation
MODE_STATUS_FILE="${HOME}/.config/emcomm-tools/et-mode"
# TODO Add better detection between startup services / apps
MODE_ID_NONE="none"
MODE_ID_APRS_DIGIPEATER="aprs-digipeater"
MODE_ID_APRS_CLIENT="aprs-client"
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
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
}
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_WINLINK_ARDOP}" "Winlink ARDOP")
options+=("${MODE_ID_WINLINK_PACKET}" "Winlink Packet")
SELECTED_MODE=$(dialog --clear --menu "Select a mode:" 20 60 10 "${options[@]}" 3>&1 1>&2 2>&3)
exit_status=$?
tput sgr 0 && clear
if [ $exit_status -eq 0 ]; then
stop_all_services
case ${SELECTED_MODE} in
${MODE_ID_NONE})
et-log "No mode selected"
;;
${MODE_ID_APRS_DIGIPEATER})
systemctl --user start et-service-direwolf-digipeater
;;
${MODE_ID_APRS_CLIENT})
systemctl --user start et-service-direwolf-simple
sleep 3
et-yaac start
;;
${MODE_ID_WINLINK_ARDOP})
systemctl --user start et-service-ardop
sleep 3
systemctl --user start et-service-winlink-ardop
sleep 3
min http://localhost:8080
;;
${MODE_ID_WINLINK_PACKET})
systemctl --user start et-service-direwolf-simple
sleep 3
systemctl --user start et-service-winlink-packet
sleep 2
min http://localhost:8080
;;
*)
et-log "Mode ${SELECTED_MODE} not yet supported"
exit 1
;;
esac
echo ${SELECTED_MODE} > ${MODE_STATUS_FILE}
else
et-log "No mode selected"
echo ${MODE_ID_NONE} > ${MODE_STATUS_FILE}
exit 1
fi