Index: build/android/devil/utils/lsusb.py |
diff --git a/build/android/devil/utils/lsusb.py b/build/android/devil/utils/lsusb.py |
deleted file mode 100644 |
index 6a6213eed53705fd0fad1f9585a54872c2c16d2e..0000000000000000000000000000000000000000 |
--- a/build/android/devil/utils/lsusb.py |
+++ /dev/null |
@@ -1,106 +0,0 @@ |
-# Copyright 2015 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-import logging |
-import re |
- |
-from devil.utils import cmd_helper |
- |
-_COULDNT_OPEN_ERROR_RE = re.compile(r'Couldn\'t open device.*') |
-_INDENTATION_RE = re.compile(r'^( *)') |
-_LSUSB_BUS_DEVICE_RE = re.compile(r'^Bus (\d{3}) Device (\d{3}):') |
-_LSUSB_ENTRY_RE = re.compile(r'^ *([^ ]+) +([^ ]+) *([^ ].*)?$') |
-_LSUSB_GROUP_RE = re.compile(r'^ *([^ ]+.*):$') |
- |
- |
-def _lsusbv_on_device(bus_id, dev_id): |
- """Calls lsusb -v on device.""" |
- _, raw_output = cmd_helper.GetCmdStatusAndOutputWithTimeout( |
- ['lsusb', '-v', '-s', '%s:%s' % (bus_id, dev_id)], timeout=10) |
- |
- device = {'bus': bus_id, 'device': dev_id} |
- depth_stack = [device] |
- |
- # TODO(jbudorick): Add documentation for parsing. |
- for line in raw_output.splitlines(): |
- # Ignore blank lines. |
- if not line: |
- continue |
- # Filter out error mesage about opening device. |
- if _COULDNT_OPEN_ERROR_RE.match(line): |
- continue |
- # Find start of device information. |
- m = _LSUSB_BUS_DEVICE_RE.match(line) |
- if m: |
- if m.group(1) != bus_id: |
- logging.warning( |
- 'Expected bus_id value: %r, seen %r', bus_id, m.group(1)) |
- if m.group(2) != dev_id: |
- logging.warning( |
- 'Expected dev_id value: %r, seen %r', dev_id, m.group(2)) |
- continue |
- |
- indent_match = _INDENTATION_RE.match(line) |
- if not indent_match: |
- continue |
- |
- depth = 1 + len(indent_match.group(1)) / 2 |
- if depth > len(depth_stack): |
- logging.error( |
- 'lsusb parsing error: unexpected indentation: "%s"', line) |
- continue |
- |
- while depth < len(depth_stack): |
- depth_stack.pop() |
- |
- cur = depth_stack[-1] |
- |
- m = _LSUSB_GROUP_RE.match(line) |
- if m: |
- new_group = {} |
- cur[m.group(1)] = new_group |
- depth_stack.append(new_group) |
- continue |
- |
- m = _LSUSB_ENTRY_RE.match(line) |
- if m: |
- new_entry = { |
- '_value': m.group(2), |
- '_desc': m.group(3), |
- } |
- cur[m.group(1)] = new_entry |
- depth_stack.append(new_entry) |
- continue |
- |
- logging.error('lsusb parsing error: unrecognized line: "%s"', line) |
- |
- return device |
- |
-def lsusb(): |
- """Call lsusb and return the parsed output.""" |
- _, lsusb_list_output = cmd_helper.GetCmdStatusAndOutputWithTimeout( |
- ['lsusb'], timeout=10) |
- devices = [] |
- for line in lsusb_list_output.splitlines(): |
- m = _LSUSB_BUS_DEVICE_RE.match(line) |
- if m: |
- bus_num = m.group(1) |
- dev_num = m.group(2) |
- try: |
- devices.append(_lsusbv_on_device(bus_num, dev_num)) |
- except cmd_helper.TimeoutError: |
- # Will be blacklisted if it is in expected device file, but times out. |
- logging.info('lsusb -v %s:%s timed out.', bus_num, dev_num) |
- |
- return devices |
- |
-def get_lsusb_serial(device): |
- try: |
- return device['Device Descriptor']['iSerial']['_desc'] |
- except KeyError: |
- return None |
- |
-def get_android_devices(): |
- return [serial for serial in (get_lsusb_serial(d) for d in lsusb()) |
- if serial] |