Skip to content

Commit eb65177

Browse files
committed
match device by qualifiers too like adb does
For instance matching by devpath (like usb:1.1) is very useful for devices that have identical serial numbers. Adb accepts adb -s <serialno> adb -s <devpath> adb -s <model:name> adb -s <device:name> adb -t <transport_id> Let's support first four forms the same way. The fifth seems to work as well with serial in form 'transport_id:1' References append_transport, acquire_one_transport, atransport::MatchesTarget https://android.googlesource.com/platform/system/core/+/master/adb/transport.cpp
1 parent bdbe45b commit eb65177

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

src/com/dtmilano/android/adb/adbclient.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,10 @@ def factory(_str):
103103
def __init__(self, serialno, status, qualifiers=None):
104104
self.serialno = serialno
105105
self.status = status
106-
self.qualifiers = qualifiers
106+
self.qualifiers = qualifiers.split(None) if qualifiers else None
107+
108+
def has_qualifier(self, qualifier):
109+
return self.qualifiers and qualifier in self.qualifiers
107110

108111
def __str__(self):
109112
return "<<<" + self.serialno + ", " + self.status + ", %s>>>" % self.qualifiers
@@ -434,7 +437,7 @@ def __setTransport(self, timeout=60):
434437
if len(devices) == 0:
435438
raise RuntimeError("ERROR: There are no connected devices")
436439
for device in devices:
437-
if serialnoRE.match(device.serialno):
440+
if serialnoRE.match(device.serialno) or device.has_qualifier(self.serialno):
438441
found = True
439442
break
440443
if not found:

0 commit comments

Comments
 (0)