#!/bin/bash
# ============================================================================
# deckstart.sh – Startet den ulanzi-niri Daemon + Button-Monitor
# ============================================================================
#
# Dieses Skript wird von der Gambas-GUI (FMain) aufgerufen, um:
#   1. Alte Instanzen von ulanzi-niri und ulanziread zu beenden
#   2. Den ulanzi-niri Daemon zu starten (verwaltet Display + HID-Protokoll)
#   3. ulanziread parallel auf demselben /dev/hidrawN zu starten
#      (liest Tastendrücke und schreibt sie nach /tmp/ulanzi-buttons)
#
# Das HID-Device wird automatisch erkannt: Es sucht in /dev/hidraw*
# nach dem Gerät mit ID_MODEL=ulanzi (via udevadm).
# ============================================================================

LOG="/tmp/ulanzi-debug.log"
echo "=== deckstart $(date) ===" > "$LOG"

# -----------------------------------------------------------
# 1. Alte Prozesse beenden
# -----------------------------------------------------------
killall ulanzi-niri ulanziread 2>/dev/null
echo "killed old processes" >> "$LOG"

# -----------------------------------------------------------
# 2. Ulanzi-HID-Device automatisch erkennen
#    Scannt /dev/hidraw* und sucht nach dem Eintrag "ID_MODEL=ulanzi"
# -----------------------------------------------------------
DEV=""
for d in /dev/hidraw*; do
  if udevadm info "$d" 2>/dev/null | grep -q "ID_MODEL=ulanzi"; then
    DEV="$d"
    break
  fi
done

# Wenn kein Device gefunden wurde, abbrechen
if [ -z "$DEV" ]; then
  echo "ERROR: no Ulanzi hidraw device found" >> "$LOG"
  exit 1
fi
echo "using device: $DEV" >> "$LOG"

# -----------------------------------------------------------
# 3. Daemon starten (im Hintergrund)
# -----------------------------------------------------------
ulanzi-niri run > /dev/null 2>&1 &
echo "daemon started: $!" >> "$LOG"

# Kurz warten, damit der Daemon initialisieren kann
sleep 2

# -----------------------------------------------------------
# 4. Button-Monitor starten
#    ulanziread liest vom HID-Device, jede erkannte Taste wird
#    nach /tmp/ulanzi-buttons geschrieben (überschreibt die Datei).
# -----------------------------------------------------------
DIR="$(dirname "$0")"
"$DIR/ulanziread" "$DEV" | while read code; do
  echo "$code" > /tmp/ulanzi-buttons
  echo "button: $code" >> "$LOG"
done &
echo "monitor started" >> "$LOG"
