Index: tools/telemetry/telemetry/core/platform/power_monitor/android_dumpsys_power_monitor.py |
diff --git a/tools/telemetry/telemetry/core/platform/power_monitor/android_dumpsys_power_monitor.py b/tools/telemetry/telemetry/core/platform/power_monitor/android_dumpsys_power_monitor.py |
index f6da6aced23408a2956d176d38a34e7714fc07a6..0b8c8ad93676a21cbdb025d1c57ea5132c1afc8f 100644 |
--- a/tools/telemetry/telemetry/core/platform/power_monitor/android_dumpsys_power_monitor.py |
+++ b/tools/telemetry/telemetry/core/platform/power_monitor/android_dumpsys_power_monitor.py |
@@ -52,7 +52,17 @@ class DumpsysPowerMonitor(sysfs_power_monitor.SysfsPowerMonitor): |
cpu_stats = super(DumpsysPowerMonitor, self).StopMonitoringPower() |
self._battery.EnableBatteryUpdates() |
power_data = self._battery.GetPackagePowerData(package) |
- power_results = self.ProcessPowerData(power_data, package) |
+ battery_info = self._battery.GetBatteryInfo() |
+ voltage = battery_info.get('voltage') |
+ if voltage 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(voltage) / 1000 |
+ logging.info('Device voltage at %s', voltage) |
+ power_results = self.ProcessPowerData(power_data, voltage, package) |
if power_results['energy_consumption_mwh'] == 0: |
logging.warning('Power data is returning 0 usage for %s. %s' |
% (package, self._battery.GetPowerData())) |
@@ -60,15 +70,13 @@ class DumpsysPowerMonitor(sysfs_power_monitor.SysfsPowerMonitor): |
cpu_stats, power_results) |
@staticmethod |
- def ProcessPowerData(power_data, package): |
+ def ProcessPowerData(power_data, voltage, package): |
power_results = {'identifier': 'dumpsys', 'power_samples_mw': []} |
if not power_data: |
logging.warning('Unable to find power data for %s in dumpsys output. ' |
'Please upgrade the OS version of the device.' % package) |
power_results['energy_consumption_mwh'] = 0 |
return power_results |
- # 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. |
- consumption_mwh = sum(power_data['data']) * 4.0 |
+ consumption_mwh = sum(power_data['data']) * voltage |
power_results['energy_consumption_mwh'] = consumption_mwh |
return power_results |