#!/bin/bash
# Cricket Status Tool - Query Cricket device status over WiFi
#
# Usage: ./cricket_status.sh

CRICKET_HOST="${CRICKET_HOST:-cricket-m5tab5.local}"
API_KEY="water_detection_2025"

echo "============================================"
echo "  CRICKET STATUS"
echo "============================================"
echo "Host: $CRICKET_HOST"
echo "Time: $(date '+%Y-%m-%d %H:%M:%S')"
echo "============================================"
echo ""

# Fetch status JSON
STATUS_JSON=$(curl -4 -s --connect-timeout 3 -m 12 -H "X-API-Key: $API_KEY" "http://$CRICKET_HOST/status" 2>/dev/null)

if [ -z "$STATUS_JSON" ]; then
    echo "❌ Cannot reach Cricket at $CRICKET_HOST"
    exit 1
fi

# Parse and display status
python3 -c "
import sys, json

try:
    data = json.loads('''$STATUS_JSON''')

    print('Status:               {}'.format(data.get('status', 'unknown')))
    print('IP Address:           {}'.format(data.get('ip_address', 'unknown')))
    print('Free Heap:            {:.2f} MB'.format(data.get('free_heap', 0) / (1024*1024)))
    print('Min Free Heap:        {:.2f} MB'.format(data.get('min_free_heap', 0) / (1024*1024)))
    print('')
    print('USB Mic Connected:    {}'.format('Yes' if data.get('usb_mic_connected') else 'No'))
    if data.get('usb_mic_connected'):
        print('  Type:               {}'.format(data.get('usb_mic_type', 'unknown')))
        print('  Address:            {}'.format(data.get('usb_mic_address', 0)))
    print('Mic Sample Rate:      {} Hz'.format(data.get('mic_sample_rate_hz', 0)))
    print('')
    print('Mic Gain:             {} dB'.format(data.get('mic_gain_db', 0)))
    print('Smart Clipping:       {}'.format('ON' if data.get('smart_clipping_enabled') else 'OFF'))
    print('Clipping Threshold:   {:.4f}'.format(data.get('clipping_threshold', 0)))
    print('Min Water Prob (p):   {:.4f}'.format(data.get('min_water_prob', 0)))

except Exception as e:
    print('❌ Error parsing status:', e, file=sys.stderr)
    sys.exit(1)
"

echo ""
echo "============================================"
