import logging
import os
import subprocess
import time

from .resources import resource_path

os.environ["DM_VENDOR_ID"] = "0x2709"

cmd = resource_path("./resources/direct_mode_dx12.exe")

log = logging.getLogger(__name__)


def enable_direct_mode(enable: bool = True):
    assert os.path.exists(cmd), f"Direct mode executable not found at {cmd}"
    log.info(f"{'Enabling' if enable else 'Disabling'} direct mode")

    args = ["-enable" if enable else "-disable"]

    log.debug(f"Running {cmd} {args}")
    r = subprocess.run([cmd] + args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    log.debug(r.stdout.decode())
    log.debug(r.stderr.decode())
    time.sleep(2)


def enable_extended_mode():
    enable_direct_mode()
    log.info("Enabling extended mode")
    args = "-dsc_present_test 0 1 1 0 0x11 4 128"

    log.debug(f"Running {[cmd] + args.split(' ')}")
    r = subprocess.run(
        [cmd] + args.split(" "),
        input="q\r\n".encode(),
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
    )
    log.debug(r.stdout.decode())
    log.debug(r.stderr.decode())

    time.sleep(2)

    enable_direct_mode(False)
    time.sleep(2)
