#!/bin/bash
# ============================================================
#  HamPi launcher — exclusive modem switching + logs + ports
# ============================================================

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m'

stop_modems() {
    echo -e "${YELLOW}Stopping Direwolf and Graywolf...${NC}"
    sudo systemctl stop direwolf 2>/dev/null || true
    sudo systemctl stop graywolf 2>/dev/null || true
    sleep 1
}

show_banner() {
    clear
    echo -e "${CYAN}"
    # Replace with your preferred figlet art if desired
    cat << 'EOF'
  _   _                 ____  _
 | | | | __ _ _ __ ___ |  _ \(_)
 | |_| |/ _` | '_ ` _ \| |_) | |
 |  _  | (_| | | | | | |  __/| |
 |_| |_|\__,_|_| |_| |_|_|   |_|
EOF
    echo -e "${NC}"
    echo "   __CALLSIGN__  •  hampi  •  UV-K5 + AIOC"
    echo
}

show_ports() {
    echo "-----------------------------------------------"
    echo " Ports:"
    echo "   Direwolf  AGWPE : __PORT_DIREWOLF_AGW__"
    echo "   Direwolf  KISS  : __PORT_DIREWOLF_KISS__"
    echo "   Graywolf  Web   : __PORT_GRAYWOLF_WEB__"
    echo "   Graywolf  KISS  : __PORT_GRAYWOLF_KISS__ (localhost)"
    echo "   LinBPQ    Telnet: __PORT_LINBPQ_TELNET__"
    echo "   LinBPQ    Web   : __PORT_LINBPQ_HTTP__"
    echo "   Pat       Web   : __PORT_PAT_HTTP__"
    echo "   gpsd            : __PORT_GPSD__"
    echo "-----------------------------------------------"
}

case "${1:-}" in
    direwolf)
        show_banner
        stop_modems
        echo -e "${GREEN}Starting Direwolf + LinBPQ + Pat...${NC}"
        sudo systemctl start direwolf
        sudo systemctl start linbpq
        sudo systemctl start pat
        echo
        "$0" status
        ;;
    graywolf)
        show_banner
        stop_modems
        echo -e "${GREEN}Starting Graywolf + LinBPQ + Pat...${NC}"
        sudo systemctl start graywolf
        sudo systemctl start linbpq
        sudo systemctl start pat
        echo
        "$0" status
        ;;
    stop)
        show_banner
        echo -e "${YELLOW}Stopping all radio services...${NC}"
        sudo systemctl stop direwolf 2>/dev/null || true
        sudo systemctl stop graywolf 2>/dev/null || true
        sudo systemctl stop linbpq 2>/dev/null || true
        sudo systemctl stop pat 2>/dev/null || true
        echo
        "$0" status
        ;;
    status)
        show_banner
        echo "==============================================="
        echo "                 SERVICE STATUS"
        echo "==============================================="
        systemctl is-active --quiet direwolf  && echo -e "  Direwolf : ${GREEN}running${NC}" || echo -e "  Direwolf : ${RED}stopped${NC}"
        systemctl is-active --quiet graywolf  && echo -e "  Graywolf : ${GREEN}running${NC}" || echo -e "  Graywolf : ${RED}stopped${NC}"
        systemctl is-active --quiet linbpq    && echo -e "  LinBPQ   : ${GREEN}running${NC}" || echo -e "  LinBPQ   : ${RED}stopped${NC}"
        systemctl is-active --quiet pat       && echo -e "  Pat      : ${GREEN}running${NC}" || echo -e "  Pat      : ${RED}stopped${NC}"
        systemctl is-active --quiet gpsd      && echo -e "  gpsd     : ${GREEN}running${NC}" || echo -e "  gpsd     : ${RED}stopped${NC}"
        systemctl is-active --quiet chrony    && echo -e "  chrony   : ${GREEN}running${NC}" || echo -e "  chrony   : ${RED}stopped${NC}"
        echo "==============================================="
        show_ports
        ;;
    log-direwolf)
        show_banner
        echo -e "${CYAN}=== Direwolf log (Ctrl-C to exit) ===${NC}"
        journalctl -u direwolf -f
        ;;
    log-graywolf)
        show_banner
        echo -e "${CYAN}=== Graywolf log (Ctrl-C to exit) ===${NC}"
        journalctl -u graywolf -f
        ;;
    log-linbpq)
        show_banner
        echo -e "${CYAN}=== LinBPQ log (Ctrl-C to exit) ===${NC}"
        journalctl -u linbpq -f
        ;;
    log-pat)
        show_banner
        echo -e "${CYAN}=== Pat log (Ctrl-C to exit) ===${NC}"
        journalctl -u pat -f
        ;;
    logs)
        show_banner
        echo "Which log?"
        echo "  1) Direwolf  2) Graywolf  3) LinBPQ  4) Pat"
        read -r -p "Choice [1-4]: " choice
        case $choice in
            1) "$0" log-direwolf ;;
            2) "$0" log-graywolf ;;
            3) "$0" log-linbpq ;;
            4) "$0" log-pat ;;
            *) echo "Invalid choice" ;;
        esac
        ;;
    *)
        show_banner
        echo "Usage: $0 {direwolf|graywolf|stop|status|logs|log-direwolf|log-graywolf|log-linbpq|log-pat}"
        echo
        echo "  direwolf   Stop Graywolf, start Direwolf + LinBPQ + Pat"
        echo "  graywolf   Stop Direwolf, start Graywolf + LinBPQ + Pat"
        echo "  stop       Stop all radio services"
        echo "  status     Show status + ports"
        echo "  logs       Interactive log menu"
        echo
        show_ports
        exit 1
        ;;
esac
