from __future__ import annotations import json import os import struct import sys from pathlib import Path from types import SimpleNamespace import pytest import usb.core import usb.util class Root: idVendor = 0x057E idProduct = 0x2068 bus = 2 def __init__(self, address=7, ports=(3, 4), serial="switch-pico-test"): self.address = address self.port_numbers = ports self.serial = self.cached_serial = serial self.transfers = [] self.bootsel_requested = False self.write_result = 16 def ctrl_transfer(self, request_type, request, value, index, data, *, timeout): self.transfers.append((request_type, request, value, index, data)) assert timeout > 0 if request_type == 0x80: assert request == 6, "recovery must only read root identity descriptors" if value == 0x0100: assert index == 0 and data == 18 descriptor = bytearray(18) descriptor[:2] = b"\x12\x01" descriptor[4] = 9 descriptor[16] = 3 struct.pack_into("