import attr
from .common import Driver
from ..factory import target_factory
from ..step import step
from .exception import ExecutionError
from ..util.helper import processwrapper
[docs]
@target_factory.reg_driver
@attr.s(eq=False)
class LXAUSBMuxDriver(Driver):
"""The LXAUSBMuxDriver uses the usbmuxctl tool to control the USBMux
hardware
"""
bindings = {
"mux": {"LXAUSBMux", "NetworkLXAUSBMux"},
}
[docs]
def __attrs_post_init__(self):
super().__attrs_post_init__()
if self.target.env:
self.tool = self.target.env.config.get_tool("usbmuxctl")
else:
self.tool = "usbmuxctl"
[docs]
@Driver.check_active
@step(title="usbmux_set", args=["links"])
def set_links(self, links):
args = []
for link in links:
link = link.lower()
if link == "dut-device":
args.append("--dut-device")
elif link == "host-dut":
args.append("--host-dut")
elif link == "host-device":
args.append("--host-device")
else:
raise ExecutionError(f"Link '{link}' not supported by LXAUSBMuxDriver")
cmd = self.mux.command_prefix + [
self.tool,
"--path",
self.mux.path,
"connect",
*args,
]
processwrapper.check_output(cmd)