CHERRY-PICK: power_status: Fix incorrect AC status check on Butterfly.
Under certain conditions, Butterfly EC will not report AC state
correctly for up to one minute following unplug. For Butterfly only,
also check the battery discharge state in case AC indicates ON.
BUG=chromium-os:38579
TEST=Manual. Run power_LoadTest on Butterfly with newly disconnected
AC and verify detection is correct.
Change-Id: I5fe87c62e9408c1f8ad581dafed948879fbdc211
Original-Change-Id: Id76e9dbbc74a0577cfe37562e1f532e5ed25343d
Reviewed-on: https://gerrit.chromium.org/gerrit/44250
Reviewed-by: Julius Werner <jwerner@chromium.org>
Commit-Queue: Shawn Nematbakhsh <shawnn@chromium.org>
Tested-by: Shawn Nematbakhsh <shawnn@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/44569
diff --git a/client/cros/power_status.py b/client/cros/power_status.py
index 41efce5..4daeeae 100644
--- a/client/cros/power_status.py
+++ b/client/cros/power_status.py
@@ -375,8 +375,21 @@
def on_ac(self):
- return self.linepower[0].online
+ """
+ Returns true if device is currently running from AC power.
+ """
+ on_ac = self.linepower[0].online
+ # Butterfly can incorrectly report AC online for some time after
+ # unplug. Check battery discharge state to confirm.
+ if utils.get_board() == 'BUTTERFLY':
+ on_ac &= (not self.battery_discharging())
+ return on_ac
+ def battery_discharging(self):
+ """
+ Returns true if battery is currently discharging.
+ """
+ return(self.battery[0].status.rstrip() == 'Discharging')
def percent_current_charge(self):
return self.battery[0].charge_now * 100 / \
@@ -396,7 +409,7 @@
"""
if self.on_ac():
raise error.TestError(
- 'Running on AC power. Please remove AC power cable')
+ 'Running on AC power. Please remove AC power cable.')
percent_initial_charge = self.percent_current_charge()