1# Copyright 2015 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5from devil.android import device_blacklist 6from devil.android import device_errors 7from devil.android import device_utils 8 9 10def GetDevices(requested_devices, blacklist_file): 11 blacklist = (device_blacklist.Blacklist(blacklist_file) 12 if blacklist_file 13 else None) 14 15 devices = device_utils.DeviceUtils.HealthyDevices(blacklist) 16 if not devices: 17 raise device_errors.NoDevicesError() 18 elif requested_devices: 19 requested = set(requested_devices) 20 available = set(str(d) for d in devices) 21 missing = requested.difference(available) 22 if missing: 23 raise device_errors.DeviceUnreachableError(next(iter(missing))) 24 return sorted(device_utils.DeviceUtils(d) 25 for d in available.intersection(requested)) 26 else: 27 return devices 28 29