Index: tools/telemetry/telemetry/core/platform/android_device.py |
diff --git a/tools/telemetry/telemetry/core/platform/android_device.py b/tools/telemetry/telemetry/core/platform/android_device.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f72a18619bff18684364dfb679729a22a85ad5ff |
--- /dev/null |
+++ b/tools/telemetry/telemetry/core/platform/android_device.py |
@@ -0,0 +1,63 @@ |
+# Copyright 2014 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 |
+ |
+from telemetry.core import util |
+from telemetry.core.backends import adb_commands |
+from telemetry.core.platform import device |
+from telemetry.core.platform.profiler import monsoon |
+ |
+ |
+class AndroidDevice(device.Device): |
+ """ Class represents information for connecting to an android device. |
+ |
+ Attributes: |
+ device_id: the device's serial string created by adb to uniquely |
+ identify an emulator/device instance. This string can be found by running |
+ 'adb devices' command |
+ enable_performance_mode: when this is set to True, android platform will be |
+ set to high performance mode after browser is started. |
+ """ |
+ def __init__(self, device_id, enable_performance_mode=False): |
+ super(AndroidDevice, self).__init__( |
+ name='Android device %s' % device_id, guid=device_id) |
+ self._device_id = device_id |
+ self._enable_performance_mode = enable_performance_mode |
+ |
+ @classmethod |
+ def GetAllConnectedDevices(cls): |
+ device_serials = adb_commands.GetAttachedDevices() |
+ # The monsoon provides power for the device, so for devices with no |
+ # real battery, we need to turn them on after the monsoon enables voltage |
+ # output to the device. |
+ if not device_serials: |
+ try: |
+ m = monsoon.Monsoon(wait=False) |
+ m.SetUsbPassthrough(1) |
+ m.SetVoltage(3.8) |
+ m.SetMaxCurrent(8) |
+ logging.warn(""" |
+Monsoon power monitor detected, but no Android devices. |
+ |
+The Monsoon's power output has been enabled. Please now ensure that: |
+ |
+ 1. The Monsoon's front and back USB are connected to the host. |
+ 2. The device is connected to the Monsoon's main and USB channels. |
+ 3. The device is turned on. |
+ |
+Waiting for device... |
+""") |
+ util.WaitFor(adb_commands.GetAttachedDevices, 600) |
+ device_serials = adb_commands.GetAttachedDevices() |
+ except IOError: |
+ return [] |
+ return [AndroidDevice(s) for s in device_serials] |
+ |
+ @property |
+ def device_id(self): |
+ return self._device_id |
+ |
+ @property |
+ def enable_performance_mode(self): |
+ return self._enable_performance_mode |