mirror of
https://github.com/thetechprepper/emcomm-tools-os-community.git
synced 2026-09-17 15:41:44 -04:00
Bluetooth - Removed failed prototype around a dedicated Bluetooth mode switcher
This commit is contained in:
@@ -1,128 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
# Author : Gaston Gonzalez
|
|
||||||
# Date : 10 March 2024
|
|
||||||
# Purpose : Launches a mode using a connected Bluetooth TNC
|
|
||||||
source /opt/emcomm-tools/bin/et-common
|
|
||||||
|
|
||||||
# Use a simple text file to save the state of the last mode selected
|
|
||||||
MODE_STATUS_FILE="${HOME}/.config/emcomm-tools/et-mode"
|
|
||||||
|
|
||||||
QTTERMTCP_CONF_FILE="${HOME}/.config/QtTermTCP.ini"
|
|
||||||
|
|
||||||
# List of supported modes of operation
|
|
||||||
MODE_ID_NONE="none"
|
|
||||||
MODE_ID_BBS_CLIENT2="bbs-client2"
|
|
||||||
MODE_ID_WINLINK_PACKET="winlink-packet"
|
|
||||||
|
|
||||||
BLUETOOTH_TNC_CHECK=$(ps -ef | grep "[r]fcomm connect")
|
|
||||||
if [[ $? -ne 0 ]]; then
|
|
||||||
et-log "No Bluetooth TNC configured."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Attempt to stop all EmComm Tools services regardless if they are running.
|
|
||||||
stop_all_services() {
|
|
||||||
et-kill-all
|
|
||||||
}
|
|
||||||
|
|
||||||
exit_on_service_failure() {
|
|
||||||
local systemd_unit_name="$1"
|
|
||||||
systemctl is-active --user --quiet "${systemd_unit_name}"
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
et-log "Can't start mode. ${systemd_unit_name} failed to start."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
TIMEOUT=15 # Total time to wait in seconds
|
|
||||||
INTERVAL=2 # Interval between checks in seconds
|
|
||||||
|
|
||||||
start_and_wait_for_service() {
|
|
||||||
local systemd_unit_name="$1"
|
|
||||||
local elapsed=0
|
|
||||||
|
|
||||||
et-log "Starting ${systemd_unit_name}..."
|
|
||||||
systemctl --user start ${systemd_unit_name}
|
|
||||||
|
|
||||||
et-log "Waiting for ${systemd_unit_name} to become active..."
|
|
||||||
|
|
||||||
while ! systemctl is-active --user --quiet "${systemd_unit_name}"; do
|
|
||||||
sleep "$INTERVAL"
|
|
||||||
elapsed=$((elapsed + INTERVAL))
|
|
||||||
if [ "$elapsed" -ge "$TIMEOUT" ]; then
|
|
||||||
et-log "Timeout reached. ${systemd_unit_name} failed to start."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
et-log "Waiting for ${systemd_unit_name} to become active..."
|
|
||||||
done
|
|
||||||
|
|
||||||
# Some applications even when started still need a bit of extra time to be available.
|
|
||||||
# Add a short think time of 2 seconds. The ARDOP modem requies extra time.
|
|
||||||
sleep 2
|
|
||||||
|
|
||||||
# Do one more check to ensure that we are running, otherwise exit.
|
|
||||||
exit_on_service_failure ${systemd_unit_name}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Build list of options
|
|
||||||
options=()
|
|
||||||
options+=("${MODE_ID_NONE}" "No mode selected")
|
|
||||||
options+=("${MODE_ID_BBS_CLIENT2}" "BBS Client (QtTermTCP)")
|
|
||||||
options+=("${MODE_ID_WINLINK_PACKET}" "Winlink over VHF/UHF (AX.25 Packet)")
|
|
||||||
|
|
||||||
# Prompt user for option and save exit status
|
|
||||||
SELECTED_MODE=$(dialog --clear --menu "Select a mode:" 0 0 0 "${options[@]}" 3>&1 1>&2 2>&3)
|
|
||||||
exit_status=$?
|
|
||||||
|
|
||||||
tput sgr 0 && clear
|
|
||||||
|
|
||||||
if [ $exit_status -eq 0 ]; then
|
|
||||||
|
|
||||||
stop_all_services
|
|
||||||
|
|
||||||
echo ${SELECTED_MODE} > ${MODE_STATUS_FILE}
|
|
||||||
|
|
||||||
case ${SELECTED_MODE} in
|
|
||||||
${MODE_ID_NONE})
|
|
||||||
et-log "No mode selected"
|
|
||||||
;;
|
|
||||||
${MODE_ID_BBS_CLIENT2})
|
|
||||||
if [[ -e /dev/rfcomm0 ]]; then
|
|
||||||
et-log "Starting KISS over TCP"
|
|
||||||
|
|
||||||
socat -d TCP-LISTEN:8100,reuseaddr,fork FILE:/dev/rfcomm0,raw &
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $? -ne 0 ]]; then
|
|
||||||
et-log "Can't start QtTermTCP. KISS over TCP failed to start."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
et-log "Starting QtTermTCP."
|
|
||||||
et-qttermtcp start
|
|
||||||
;;
|
|
||||||
${MODE_ID_WINLINK_PACKET})
|
|
||||||
KISS_OUT=$(sudo kissattach ${BT_DEVICE} ${AX25_PORT})
|
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo -e "${RED}Failed to setup KISS for Bluetooth TNC.${NC}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
KISS_OUT=$(sudo kissparms -c 1 -p ${AX25_PORT})
|
|
||||||
|
|
||||||
start_and_wait_for_service et-service-winlink-native-packet
|
|
||||||
min http://localhost:8080
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
et-log "Mode ${SELECTED_MODE} not yet supported"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
else
|
|
||||||
et-log "No mode selected"
|
|
||||||
echo ${MODE_ID_NONE} > ${MODE_STATUS_FILE}
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
Reference in New Issue
Block a user