#!/bin/sh
# Helper script for launching ka9q-radio radiod daemon when a SDR is plugged in
# 3 Aug 2026 Phil Karn
set -eu

# force to lower case
identity=$(printf '%s' "$1"| LC_ALL=C tr '[:upper:]' '[:lower:]' )

# Extract required vendor.
case "$identity" in
    *-*)
        vendor=${identity%%-*}
        remainder=${identity#*-}
        ;;
    *)
        echo "start-ka9q-radio: invalid device identity: $identity" >&2
        exit 2
        ;;
esac

# Extract required product and optional serial.
# the serial may contain embedded '-'
case "$remainder" in
    *-*)
        product=${remainder%%-*}
        serial=${remainder#*-}
        ;;
    *)
        product=$remainder
        serial=
        ;;
esac

if [ -z "$vendor" ] || [ -z "$product" ]; then
    echo "start-ka9q-radio: invalid device identity: $identity" >&2
    exit 2
fi


radiod='/usr/sbin/radiod'
device_config_dir='/etc/radio/devices'
default_config_dir='/usr/share/ka9q-radio/defaults'

specific="$device_config_dir/$vendor-$product-$serial.conf"
generic="$device_config_dir/$vendor-$product.conf"
packaged="$default_config_dir/$vendor-$product.conf"

if [ -r "$specific" ]; then
    config=$specific
elif [ -r "$generic" ]; then
    config=$generic
elif [ -r "$packaged" ]; then
    config=$packaged
else
    echo "ka9q-radio-start: no configuration for $vendor:$product serial $serial" >&2
    exit 1
fi

if [ -n "$serial" ]; then
    echo "exec $radiod -s$serial -- $config"
    exec "$radiod" -s"$serial" -- "$config"
else
    echo "exec $radiod $config"
    exec "$radiod" "$config"
fi
