#!/bin/bash # # Author : Gaston Gonzalez # Date : 6 October 2024 # Updated : 21 October 2024 # Purpose : Utility script for dumping system information function usage() { echo "Usage: $(basename $0) " echo " active-radio - Display model of active radio" echo " et-audio - State of audio interface" echo " et-cat - State of CAT control interface" echo " et-gps - State of GPS interface" echo " ip - System IP address" echo " release - EmComm Tools release" } if [ $# -ne 1 ]; then usage exit 1 fi case $1 in active-radio) if [ -L "${ET_HOME}/conf/radios.d/active-radio.json" ]; then cat "${ET_HOME}/conf/radios.d/active-radio.json" | jq -r .model else echo "No radio selected" fi ;; et-audio) # 1. Check if the symlink was created by the udev rules if [ -e /dev/et-audio ]; then UDEV_OUT=$(udevadm info /dev/et-audio | grep ET_DEVICE) if [ $? -eq 0 ]; then udevadm info /dev/et-audio | grep ET_DEVICE | cut -d"=" -f2 else echo "Connected" fi else echo "Not connected" fi ;; et-cat) if [ ! -L "${ET_HOME}/conf/radios.d/active-radio.json" ]; then echo "N/A" exit 0 fi # 1. Check if the symlink was created by the udev rules if [ -e /dev/et-cat ]; then # 2. Check if the rigctl systemd unit is running properly systemctl status rigctld --no-pager > /dev/null if [ $? -eq 0 ]; then # 3. Grab and format frequency FREQ=$(timeout 1 rigctl -m 2 f) if [ $? -eq 0 ]; then printf "%'d MHz\n" "$FREQ" | sed 's|,|.|g' else echo "Connected. Can't access VFO"; fi else echo "Connected. rigctld not running" fi else echo "Not connected"; fi ;; et-gps) # 1. Check if the symlink was created by the udev rules if [ -e /dev/et-gps ]; then # 2. Check if the gpsd systemd unit is running properly systemctl status gpsd --no-pager > /dev/null if [ $? -eq 0 ]; then # 3. Obtain the current GPS mode GPS_JSON=$(gpspipe -w -n 10 | grep -m 1 TPV) if [ $? -eq 0 ]; then GPS_MODE=$(echo $GPS_JSON | jq --exit-status -r .mode) case $GPS_MODE in 1) echo "No fix" ;; 2) echo "2D fix" ;; 3) LAT=$(echo $GPS_JSON | jq -r .lat) LON=$(echo $GPS_JSON | jq -r .lon) printf "%.5f,%.5f\n" $LAT $LON ;; *) echo "Unknown mode" ;; esac else echo "Connected. Can't decode" fi else echo "Connected. gpsd not running" fi else echo "Not connected" fi ;; ip) hostname -I | awk '{print $1}' ;; release) grep DISTRIB_DESCRIPTION /etc/lsb-release | sed 's|"||g' | awk '{print $1}' | cut -d"=" -f2 ;; *) echo "Command not supported." usage exit 1 ;; esac