mirror of
https://github.com/thetechprepper/emcomm-tools-os-community.git
synced 2026-09-17 15:41:44 -04:00
114 lines
2.8 KiB
Bash
Executable File
114 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Author : Gaston Gonzalez
|
|
# Date : 9 October 2024
|
|
# Updated : 25 October 2024
|
|
# Purpose : Wrapper startup/shutdown script around systemd/rigctld
|
|
|
|
ET_HOME=/opt/emcomm-tools
|
|
ACTIVE_RADIO="${ET_HOME}/conf/radios.d/active-radio.json"
|
|
CAT_DEVICE=/dev/et-cat
|
|
|
|
do_full_auto() {
|
|
et-log "Found ET_DEVICE='${ET_DEVICE}'"
|
|
|
|
case "$1" in
|
|
IC-705)
|
|
echo "Automatically configuring $1..."
|
|
if [ -L ${ACTIVE_RADIO} ]; then
|
|
rm -v ${ACTIVE_RADIO}
|
|
fi
|
|
|
|
ln -v -s ${ET_HOME}/conf/radios.d/icom-ic705.json ${ACTIVE_RADIO}
|
|
;;
|
|
*)
|
|
et-log "Full auto configuration not available for ET_DEVICE=$1"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
start() {
|
|
|
|
# Special case for VOX devices like the DigiRig Lite and for the DigiRig Mobile
|
|
# when connected to a radio that does not support CAT control.
|
|
if [ -L "${ET_HOME}/conf/radios.d/active-radio.json" ]; then
|
|
RIG_ID=$(cat "${ET_HOME}/conf/radios.d/active-radio.json" | jq -r .rigctrl.id)
|
|
|
|
# All devices that have no CAT control must have their ID set to 1. This
|
|
# a special test mode provided by Hamlib's rigctl NET interface.
|
|
if [ "${RIG_ID}" = "1" ]; then
|
|
et-log "Starting dummy rigctld service for device with no CAT support."
|
|
|
|
ID=$(cat ${ET_HOME}/conf/radios.d/active-radio.json | jq -r .rigctrl.id)
|
|
PTT=$(cat ${ET_HOME}/conf/radios.d/active-radio.json | jq -r .rigctrl.ptt)
|
|
|
|
CMD="rigctld -m ${ID} -P ${PTT} "
|
|
et-log "Starting rigctld n VOX mode with: ${CMD}"
|
|
$CMD
|
|
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
if [ ! -e ${CAT_DEVICE} ]; then
|
|
et-log "No CAT device found. ${CAT_DEVICE} symlink is missing."
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -L ${ACTIVE_RADIO} ]; then
|
|
et-log "No active radio defined. ${ACTIVE_RADIO} symlink is missing."
|
|
exit 1
|
|
fi
|
|
|
|
# Check if rigctld is already running
|
|
ps -ef | grep [r]igctld
|
|
if [ $? -eq 0 ]; then
|
|
PID=$(ps -ef | grep [r]igctld | awk '{print $2}')
|
|
et-log "Rig control is already running with process ID: ${PID}."
|
|
#kill -9 ${PID}
|
|
#sleep 1
|
|
fi
|
|
|
|
# Grab rigctld values from active radio configuration
|
|
ID=$(cat ${ET_HOME}/conf/radios.d/active-radio.json | jq -r .rigctrl.id)
|
|
BAUD=$(cat ${ET_HOME}/conf/radios.d/active-radio.json | jq -r .rigctrl.baud)
|
|
PTT=$(cat ${ET_HOME}/conf/radios.d/active-radio.json | jq -r .rigctrl.ptt)
|
|
|
|
# Generate command
|
|
CMD="rigctld -m ${ID} -r ${CAT_DEVICE} -s ${BAUD} -P ${PTT} "
|
|
et-log "Starting rigctld with: ${CMD}"
|
|
$CMD
|
|
}
|
|
|
|
stop() {
|
|
et-log "Stopping rigctld service..."
|
|
systemctl stop rigctld
|
|
|
|
if [ -L /dev/et-cat ]; then
|
|
et-log "Removing stale /dev/et-cat symlink"
|
|
rm -f /dev/et-cat
|
|
fi
|
|
}
|
|
|
|
usage() {
|
|
echo "usage: $(basename $0) <cmd>"
|
|
echo " <cmd> [start|stop]"
|
|
}
|
|
|
|
if [ $# -ne 1 ]; then
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
case $1 in
|
|
start)
|
|
start
|
|
;;
|
|
stop)
|
|
stop
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|