#!/usr/bin/env bash
set -euo pipefail

# Helper script to monitor Cricket ESP32-P4 serial output
# Usage: monitor_cricket.sh [port]

DEFAULT_PORT="/dev/cu.usbmodem1101"

echo "=== Cricket ESP32-P4 Serial Monitor ==="
echo ""

# Auto-detect Cricket directory based on user
if [[ "$USER" == "uhuman" ]]; then
  CRICKET_DIR="/Users/uhuman/PycharmProjects/PlatformIO/Projects/M5Tab5-HalUD/platforms/Cricket_ESP32_P4"
elif [[ "$USER" == "ming" ]]; then
  CRICKET_DIR="/Users/ming/Development/PlatformIO/Projects/M5Tab5-HalUD/platforms/Cricket_ESP32_P4"
else
  echo "ERROR: Unknown user '$USER' - add your path to this script" >&2
  exit 1
fi

# Source ESP-IDF (suppress verbose output)
if [[ -f "$HOME/export-esp.sh" ]]; then
  source "$HOME/export-esp.sh" > /dev/null 2>&1
elif [[ -f "$HOME/esp/esp-idf/export.sh" ]]; then
  source "$HOME/esp/esp-idf/export.sh" > /dev/null 2>&1
else
  echo "ERROR: ESP-IDF not found" >&2
  echo "  Expected: ~/export-esp.sh or ~/esp/esp-idf/export.sh"
  exit 1
fi

# Check for available ports if requested
if [[ "${1:-}" == "list" ]]; then
  echo "Available USB modem ports:"
  ls -1 /dev/cu.usbmodem* 2>/dev/null || echo "No usbmodem ports found"
  exit 0
fi

# Use provided port or default
PORT="${1:-$DEFAULT_PORT}"

# Auto-detect port if default not found
if [[ ! -e "$PORT" ]]; then
  echo "Port $PORT not found, auto-detecting..."
  DETECTED=$(ls /dev/cu.usbmodem* 2>/dev/null | head -1)
  if [[ -n "$DETECTED" ]]; then
    PORT="$DETECTED"
    echo "Using: $PORT"
  else
    echo "ERROR: No USB modem ports found" >&2
    exit 1
  fi
fi

cd "$CRICKET_DIR" || exit 1

echo "Monitoring port: $PORT"
echo "Press Ctrl+] to exit"
echo ""

idf.py -p "$PORT" monitor
