| Index: tools/telemetry/telemetry/internal/platform/power_monitor/android_power_monitor_base.py
 | 
| diff --git a/tools/telemetry/telemetry/internal/platform/power_monitor/android_power_monitor_base.py b/tools/telemetry/telemetry/internal/platform/power_monitor/android_power_monitor_base.py
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..3bec7a3a5aa203874c08a26f851008885c83529b
 | 
| --- /dev/null
 | 
| +++ b/tools/telemetry/telemetry/internal/platform/power_monitor/android_power_monitor_base.py
 | 
| @@ -0,0 +1,45 @@
 | 
| +# 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.internal.platform import power_monitor
 | 
| +
 | 
| +
 | 
| +class AndroidPowerMonitorBase(power_monitor.PowerMonitor):
 | 
| +
 | 
| +  # Abstract class.
 | 
| +  # pylint: disable=abstract-method
 | 
| +
 | 
| +  def _ParseVoltage(self, millivolts):
 | 
| +    # Parse voltage information.
 | 
| +    # If voltage is None, use 4.0 as default.
 | 
| +    # Otherwise, convert millivolts to volts.
 | 
| +    if millivolts is None:
 | 
| +      # Converting at a nominal voltage of 4.0V, as those values are obtained by
 | 
| +      # a heuristic, and 4.0V is the voltage we set when using a monsoon device.
 | 
| +      voltage = 4.0
 | 
| +      logging.warning('Unable to get device voltage. Using %s.', voltage)
 | 
| +    else:
 | 
| +      voltage = float(millivolts) / 1000
 | 
| +      logging.info('Device voltage at %s', voltage)
 | 
| +      return voltage
 | 
| +
 | 
| +  def _LogPowerAnomalies(self, power_data, package):
 | 
| +    # Log anomalies in power data.
 | 
| +    if power_data['energy_consumption_mwh'] == 0:
 | 
| +      logging.warning('Power data is returning 0 for system total usage. %s'
 | 
| +                      % (power_data))
 | 
| +      if power_data['application_energy_consumption_mwh'] == 0:
 | 
| +        logging.warning('Power data is returning 0 usage for %s. %s'
 | 
| +                        % (package, power_data))
 | 
| +
 | 
| +  def _ChargingOff(self, battery):
 | 
| +    battery.SetCharging(False)
 | 
| +
 | 
| +  def _ChargingOn(self, battery):
 | 
| +    if battery.GetCharging():
 | 
| +      logging.warning('Charging re-enabled during test.'
 | 
| +                      'Results may be inaccurate.')
 | 
| +      battery.SetCharging(True)
 | 
| 
 |