"""Control experiment: run the factory direct_mode_dx12.exe -dsc_present_test
with the exact extended-mode-display recipe, auto-quitting after N seconds.

Usage: python run_factory_dsc_test.py [seconds] [display#] [mode#]
"""

import os
import subprocess
import sys
import time

seconds = float(sys.argv[1]) if len(sys.argv) > 1 else 30.0
disp = sys.argv[2] if len(sys.argv) > 2 else "0"
mode = sys.argv[3] if len(sys.argv) > 3 else "1"

env = dict(os.environ, DM_VENDOR_ID="0x2709")
args = ["./direct_mode_dx12.exe", "-dsc_present_test", disp, mode, "1", "0",
        "0x11", "4", "128"]
print("running:", " ".join(args), flush=True)
p = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
                     stderr=subprocess.STDOUT, env=env, text=True)
time.sleep(seconds)
try:
    out, _ = p.communicate("q\n", timeout=15)
except subprocess.TimeoutExpired:
    p.kill()
    out, _ = p.communicate()
print(out[-3000:])
print("exit:", p.returncode)
