Index: devil/devil/android/sdk/adb_wrapper.py |
diff --git a/devil/devil/android/sdk/adb_wrapper.py b/devil/devil/android/sdk/adb_wrapper.py |
index e2ca0139b7ab4090c0241002530181587ed6884e..9890f11735375197f5c02a8ce17b7a38bf3a1d0e 100644 |
--- a/devil/devil/android/sdk/adb_wrapper.py |
+++ b/devil/devil/android/sdk/adb_wrapper.py |
@@ -120,10 +120,19 @@ class AdbWrapper(object): |
"""Initializes the AdbWrapper. |
Args: |
- device_serial: The device serial number as a string. |
+ device_serial: The device serial number or USB bus ID as a string. |
+ |
+ WARNING: Some features may not be supported with USB ID. |
+ |
""" |
if not device_serial: |
raise ValueError('A device serial must be specified') |
+ |
+ # TODO: Improve support for instances created from a USB ID. |
+ if "usb:" in device_serial: |
+ logger.warning("Some features may not be supported when selecting " |
+ "devices by USB Id.") |
+ |
self._device_serial = str(device_serial) |
class PersistentShell(object): |
@@ -824,16 +833,21 @@ class AdbWrapper(object): |
retries: (optional) Number of retries to attempt. |
Returns: |
- One of 'offline', 'bootloader', or 'device'. |
+ One of 'offline', 'bootloader', 'unauthorized', 'no' [permissions], |
+ or 'device'. |
""" |
# TODO(jbudorick): Revert to using get-state once it doesn't cause a |
# a protocol fault. |
# return self._RunDeviceAdbCmd(['get-state'], timeout, retries).strip() |
- lines = self._RawDevices(timeout=timeout, retries=retries) |
+ lines = self._RawDevices(timeout=timeout, retries=retries, long_list=True) |
for line in lines: |
- if len(line) >= 2 and line[0] == self._device_serial: |
+ if not len(line) >= 3: |
+ continue |
+ |
+ if line[0] == self._device_serial or line[2] == self._device_serial: |
return line[1] |
+ |
return 'offline' |
def GetDevPath(self, timeout=DEFAULT_TIMEOUT, retries=DEFAULT_RETRIES): |