tools/mpremote: Use available ports instead of auto-connect list.

Using just the list of available ports, instead of a hard-coded list of
possible ports, means that all ports will be available for auto connection.
And the order that they will be attempted in will match what's printed by
"mpremote connect list" (and will be the same as before, trying ACMx before
USBx).  Auto-connect will also now work on Mac, and will allow all COM
ports on Windows.

Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
Damien George 2021-06-13 23:55:15 +10:00
parent b0b8ebc4f6
commit 77c529e8be

View File

@ -25,21 +25,6 @@ from .console import Console, ConsolePosix
_PROG = "mpremote" _PROG = "mpremote"
_AUTO_CONNECT_SEARCH_LIST = [
"/dev/ttyACM0",
"/dev/ttyACM1",
"/dev/ttyACM2",
"/dev/ttyACM3",
"/dev/ttyUSB0",
"/dev/ttyUSB1",
"/dev/ttyUSB2",
"/dev/ttyUSB3",
"COM0",
"COM1",
"COM2",
"COM3",
]
_BUILTIN_COMMAND_EXPANSIONS = { _BUILTIN_COMMAND_EXPANSIONS = {
# Device connection shortcuts. # Device connection shortcuts.
"a0": "connect /dev/ttyACM0", "a0": "connect /dev/ttyACM0",
@ -187,14 +172,12 @@ def do_connect(args):
return None return None
elif dev == "auto": elif dev == "auto":
# Auto-detect and auto-connect to the first available device. # Auto-detect and auto-connect to the first available device.
ports = serial.tools.list_ports.comports() for p in sorted(serial.tools.list_ports.comports()):
for dev in _AUTO_CONNECT_SEARCH_LIST: try:
if any(p.device == dev for p in ports): return pyboard.PyboardExtended(p.device, baudrate=115200)
try: except pyboard.PyboardError as er:
return pyboard.PyboardExtended(dev, baudrate=115200) if not er.args[0].startswith("failed to access"):
except pyboard.PyboardError as er: raise er
if not er.args[0].startswith("failed to access"):
raise er
raise pyboard.PyboardError("no device found") raise pyboard.PyboardError("no device found")
elif dev.startswith("id:"): elif dev.startswith("id:"):
# Search for a device with the given serial number. # Search for a device with the given serial number.