#!/usr/bin/env bash
# Parameterized chain-hop lab gameplay synth start (seat SM, close-on-x1).
# Env (required): CHAIN_OCTET  LAB_GAMEPLAY_TID
# Optional: LAB_GAMEPLAY_GAMES  LAB_GAMEPLAY_SESSION_S  LAB_GAMEPLAY_PHASE_S
set -euo pipefail
OCTET="${CHAIN_OCTET:?set CHAIN_OCTET}"
TID="${LAB_GAMEPLAY_TID:?set LAB_GAMEPLAY_TID}"
GAMES="${LAB_GAMEPLAY_GAMES:-touch6,superpick,bingo,poker,keno,spinjack,triple7s}"
SESSION_S="${LAB_GAMEPLAY_SESSION_S:-300}"
PERIOD_S="${LAB_GAMEPLAY_PERIOD_S:-7}"
PHASE_S="${LAB_GAMEPLAY_PHASE_S:-}"
if [[ -z "$PHASE_S" ]]; then
  # Stagger session boundaries by octet; keep under ~9s so smoke stays fast.
  PHASE_S="$(python3 -c "print(round(($OCTET % 23) * 0.4, 2))")"
fi
cd ~/EtherGold/dev
pkill -f pog422_fixture_bridge 2>/dev/null || true
pkill -f pog422_uartd 2>/dev/null || true
sudo systemctl stop fixture-prod 2>/dev/null || true
sudo systemctl stop ethergold 2>/dev/null || true
sleep 2
mkdir -p ~/EtherGold/logs/lab_gameplay_pilot ~/EtherGold/dev/lab_gameplay_templates
ENVF=~/EtherGold/fixture-bridge.env
touch "$ENVF"
for key in LAB_GAMEPLAY_SYNTH LAB_GAMEPLAY_TID LAB_GAMEPLAY_GAMES LAB_GAMEPLAY_TOUCH6_REPLICATE LAB_GAMEPLAY_SESSION_S LAB_GAMEPLAY_PHASE_S LAB_GAMEPLAY_PERIOD_S FIXTURE_POS PI_LABEL; do
  sed -i "/^${key}=/d" "$ENVF" 2>/dev/null || true
done
{
  echo "FIXTURE_POS=1"
  echo "PI_LABEL=topbox${OCTET}"
  echo "LAB_GAMEPLAY_SYNTH=1"
  echo "LAB_GAMEPLAY_TID=${TID}"
  echo "LAB_GAMEPLAY_GAMES=${GAMES}"
  echo "LAB_GAMEPLAY_TOUCH6_REPLICATE=1"
  echo "LAB_GAMEPLAY_SESSION_S=${SESSION_S}"
  echo "LAB_GAMEPLAY_PERIOD_S=${PERIOD_S}"
  echo "LAB_GAMEPLAY_PHASE_S=${PHASE_S}"
} >>"$ENVF"
LOG=~/EtherGold/logs/lab_gameplay_pilot/bridge.log
: >"$LOG"
nohup env \
  FIXTURE_POS=1 \
  PI_LABEL="topbox${OCTET}" \
  CHANNEL=machine \
  CLEAR_CAPTURE=1 \
  FIXTURE_MODE=debug \
  FIXTURE_PROD=0 \
  FIXTURE_DEV_LIGHT=1 \
  LAB_GAMEPLAY_SYNTH=1 \
  LAB_GAMEPLAY_TID="${TID}" \
  LAB_GAMEPLAY_GAMES="${GAMES}" \
  LAB_GAMEPLAY_TOUCH6_REPLICATE=1 \
  LAB_GAMEPLAY_SESSION_S="${SESSION_S}" \
  LAB_GAMEPLAY_PERIOD_S="${PERIOD_S}" \
  LAB_GAMEPLAY_JITTER_S=0.5 \
  LAB_GAMEPLAY_PHASE_S="${PHASE_S}" \
  LAB_GAMEPLAY_SYNTH_ALLOW_PROD=0 \
  FIXTURE_EARLY_WIN_PHASE1=0 \
  FIXTURE_EARLY_WIN_PHASE2_SLOTS=0 \
  FIXTURE_EARLY_WIN_PHASE2_KENO=0 \
  bash /home/topbox/EtherGold/dev/run_bridge_jun11_good.sh \
  >"$LOG" 2>&1 &
echo $! >~/EtherGold/logs/lab_gameplay_pilot/bridge.pid
sleep 10
echo "octet=$OCTET tid=$TID games=$GAMES period_s=$PERIOD_S phase_s=$PHASE_S pid=$(cat ~/EtherGold/logs/lab_gameplay_pilot/bridge.pid)"
grep -E "LAB gameplay|lab_gameplay_synth_armed|lab_gameplay_session_start|WARNING: LAB|FATAL|TypeError" "$LOG" | head -20
pgrep -af 'pog422_fixture_bridge' | head -2 || true
