1# Copyright 2014 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
5"""Finds devices that can be controlled by telemetry."""
6
7from telemetry.internal.platform import android_device
8from telemetry.internal.platform import cros_device
9from telemetry.internal.platform import desktop_device
10from telemetry.internal.platform import ios_device
11
12DEVICES = [
13  android_device,
14  cros_device,
15  desktop_device,
16  ios_device,
17]
18
19
20def _GetAllAvailableDevices(options):
21  """Returns a list of all available devices."""
22  devices = []
23  for device in DEVICES:
24    devices.extend(device.FindAllAvailableDevices(options))
25  return devices
26
27
28def GetDevicesMatchingOptions(options):
29  """Returns a list of devices matching the options."""
30  devices = []
31  if not options.device or options.device == 'list':
32    devices = _GetAllAvailableDevices(options)
33  elif options.device == 'android':
34    devices = android_device.FindAllAvailableDevices(options)
35  else:
36    devices = _GetAllAvailableDevices(options)
37    devices = [d for d in devices if d.guid == options.device]
38
39  devices.sort(key=lambda device: device.name)
40  return devices
41