#!/usr/bin/env bash

# Start jun11-good debug bridge with TouchEasy Keno lab jpot synth (Master pos3 only).

#

# Usage:

#   cd ~/EtherGold/sync && FIXTURE_POS=3 bash switch_lab_keno_jpot_master.sh



set -euo pipefail



SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

# shellcheck source=ethergold_paths.sh

source "${SCRIPT_DIR}/ethergold_paths.sh"

export FIXTURE_MODE=debug

# shellcheck source=source_fixture_env.sh

source "${SCRIPT_DIR}/source_fixture_env.sh"

# shellcheck source=resolve_bench_timing.sh

source "${SCRIPT_DIR}/resolve_bench_timing.sh"



if grep -q $'\r' "${BASH_SOURCE[0]}" 2>/dev/null; then

  sed -i 's/\r$//' "${BASH_SOURCE[0]}"

  exec bash "${BASH_SOURCE[0]}" "$@"

fi



TIMING="$(resolve_bench_timing_root)"



POS="${FIXTURE_POS:-}"

if [[ "${POS}" != "3" ]]; then

  echo "FATAL: lab Keno Master is pos3 only (pos2=Slave relay — use BENCH_PROFILE=debug)" >&2

  exit 1

fi



if [[ ! -f "${TIMING}/run_bridge_jun11_lab_keno_jpot_master.sh" ]]; then

  echo "FATAL: missing ${TIMING}/run_bridge_jun11_lab_keno_jpot_master.sh — pull first" >&2

  exit 1

fi



bash "${SCRIPT_DIR}/enable_lab_keno_jpot_env.sh"



stop_all() {

  for pattern in fixture_supervisor fixture_link_watch pog422_fixture_bridge pog422_fixture_listen; do

    pkill -TERM -f "${pattern}" 2>/dev/null || true

  done

  sleep 1

  for pattern in fixture_supervisor fixture_link_watch pog422_fixture_bridge pog422_fixture_listen; do

    pkill -KILL -f "${pattern}" 2>/dev/null || true

  done

  rm -f "${TIMING}/.bridge.pid"

}



start_lab_keno() {

  export FIXTURE_MODE=debug

  export FIXTURE_PROD=0

  export POG422_UARTD=0

  export POG422_UARTD_CAPTURE=0

  export POG422_UARTD_INJECT=0

  pkill -TERM -f pog422_uartd 2>/dev/null || true

  sleep 0.5

  pkill -KILL -f pog422_uartd 2>/dev/null || true

  export FIXTURE_LAB_KENO_JPOT_SYNTH=1

  export FIXTURE_LAB_KENO_JPOT_GAME="${FIXTURE_LAB_KENO_JPOT_GAME:-9309}"

  export CHANNEL="${CHANNEL:-both}"

  export CLEAR_CAPTURE="${CLEAR_CAPTURE:-1}"

  echo "=== start lab Keno jpot synth pos=${FIXTURE_POS} CHANNEL=${CHANNEL} ==="

  echo "  capture -> ${TIMING}/data/  logs -> ${TIMING}/logs/"

  cd "${TIMING}"

  mkdir -p "${TIMING}/logs"

  LOG="${TIMING}/logs/orchestrator-bridge.log"

  if [[ "${CLEAR_CAPTURE}" == "1" ]]; then

    : > "${LOG}"

    : > "${TIMING}/logs/orchestrator.log"

  fi

  rm -f "${TIMING}/.bridge.pid"

  nohup bash "${TIMING}/run_bridge_jun11_lab_keno_jpot_master.sh" >> "${LOG}" 2>&1 &

  bridge_pid=$!

  echo "${bridge_pid}" > "${TIMING}/.bridge.pid"

  sleep 2

  if ! kill -0 "${bridge_pid}" 2>/dev/null; then

    echo "FATAL: lab Keno bridge exited early — tail ${LOG}" >&2

    tail -n 40 "${LOG}" >&2 || true

    rm -f "${TIMING}/.bridge.pid"

    exit 1

  fi

  echo "pos${FIXTURE_POS} lab Keno bridge pid=${bridge_pid} log=${LOG}"

  grep -m1 'LAB Keno jpot synth' "${LOG}" 2>/dev/null || tail -n 5 "${LOG}" || true

}



FIXTURE_POS="${POS}" bash "${SCRIPT_DIR}/disable_bench_prod.sh"

stop_all

start_lab_keno

