#!/bin/bash # # Author : Gaston Gonzalez # Date : 11 October 2024 # Updated : 16 October 2024 # Purpose : A script for managaing plug-and-play radios set -e function usage() { echo "Usage: $(basename $0) " echo " active - show active radio" echo " list - list supported radios by id" echo " set - select active radio" } if [ $# -lt 1 ]; then usage exit 1 fi ACTIVE_RADIO="${ET_HOME}/conf/radios.d/active-radio.json" case $1 in list) printf "%-20s %-10s %-10s\n" "Radio ID" "Vendor" "Model" find ${ET_HOME}/conf/radios.d -type f -name \*.json | sort -n | while read radio; do ID=$(cat $radio | jq -r .id) VENDOR=$(cat $radio | jq -r .vendor) MODEL=$(cat $radio | jq -r .model) printf "%-20s %-10s %-10s\n" $ID "$VENDOR" "$MODEL" done ;; set) options=() while IFS= read -r radio; do ID=$(cat $radio | jq -r .id) VENDOR=$(cat $radio | jq -r .vendor) MODEL=$(cat $radio | jq -r .model) options+=("$ID" "$VENDOR $MODEL") done < <(find $ET_HOME/conf/radios.d -type f | sort) selected_radio=$(dialog --clear --menu "Select a radio:" 15 50 10 "${options[@]}" 3>&1 1>&2 2>&3) exit_status=$? # Reset terminal to its original state clear && tput sgr0 if [ $exit_status -eq 0 ]; then RADIO_CONF="${ET_HOME}/conf/radios.d/$selected_radio.json" [ -e ${ACTIVE_RADIO} ] && rm ${ACTIVE_RADIO} ln -s ${RADIO_CONF} ${ACTIVE_RADIO} echo "Set active radio to: $selected_radio" else echo "No radio selected." fi ;; active) if [ ! -L "${ACTIVE_RADIO}" ]; then echo "No active radio defined. Run: '$(basename $0) set '" exit 1 fi ID=$(cat ${ACTIVE_RADIO} | jq -r .id) VENDOR=$(cat ${ACTIVE_RADIO} | jq -r .vendor) MODEL=$(cat ${ACTIVE_RADIO} | jq -r .model) printf "%-20s %-10s %-10s\n" "Radio ID" "Vendor" "Model" printf "%-20s %-10s %-10s\n" $ID "$VENDOR" "$MODEL" printf "\nConfiguration Notes\n" cat ${ACTIVE_RADIO} | jq -r '.notes[] | "* \(.)"' ;; *) echo "Command not supported." usage exit 1 ;; esac