From 5a8416837638ca3f912e98fd78a3638a05bceceb Mon Sep 17 00:00:00 2001 From: Kweku Adams Date: Wed, 23 Oct 2019 14:53:56 -0700 Subject: [PATCH] Add missing information to dumpsys. The dynamic battery saver information was not being logged in the dumpsys, which made debugging an issue harder. Adding the information to make future debugging easier. Bug: 142473857 Test: atest android.os.cts.PowerManagerTest Change-Id: I81cb724efd454f578d99b8abaa4eca3b6bad587a --- .../android/server/powermanagerservice.proto | 24 ++++++++++- .../BatterySaverStateMachine.java | 40 +++++++++++++++---- 2 files changed, 55 insertions(+), 9 deletions(-) diff --git a/core/proto/android/server/powermanagerservice.proto b/core/proto/android/server/powermanagerservice.proto index c03957087f266..6850d01099132 100644 --- a/core/proto/android/server/powermanagerservice.proto +++ b/core/proto/android/server/powermanagerservice.proto @@ -366,6 +366,15 @@ message BatterySaverStateMachineProto { // Whether battery level is low or not. optional bool is_battery_level_low = 8; + // Denotes which threshold should be used for automatic Battery Saver triggering. + enum AutomaticTriggerEnum { + TRIGGER_PERCENTAGE = 0; + TRIGGER_DYNAMIC = 1; + } + // The value of Global.AUTOMATIC_POWER_SAVE_MODE. This is a cached value, so it could + // be slightly different from what's in GlobalSettingsProto.DynamicPowerSavings. + optional AutomaticTriggerEnum setting_automatic_trigger = 19; + // The value of Global.LOW_POWER_MODE. This is a cached value, so it could // be slightly different from what's in GlobalSettingsProto.LowPowerMode. optional bool setting_battery_saver_enabled = 9; @@ -390,5 +399,18 @@ message BatterySaverStateMachineProto { // using elapsed realtime as the timebase. optional int64 last_adaptive_battery_saver_changed_externally_elapsed = 17; - // Next tag: 19 + // The default disable threshold for Dynamic Power Savings enabled battery saver. + optional int32 default_dynamic_disable_threshold = 20; + + // When to disable battery saver again if it was enabled due to an external suggestion. + // Corresponds to Global.DYNAMIC_POWER_SAVINGS_DISABLE_THRESHOLD. This is a cached value, + // so it could be slightly different from what's in GlobalSettingsProto.DynamicPowerSavings. + optional int32 dynamic_disable_threshold = 21; + + // Whether we've received a suggestion that battery saver should be on from an external app. + // Corresponds to Global.DYNAMIC_POWER_SAVINGS_ENABLED. This is a cached value, so it could + // be slightly different from what's in GlobalSettingsProto.DynamicPowerSavings. + optional bool dynamic_battery_saver_enabled = 22; + + // Next tag: 23 } diff --git a/services/core/java/com/android/server/power/batterysaver/BatterySaverStateMachine.java b/services/core/java/com/android/server/power/batterysaver/BatterySaverStateMachine.java index 4b3746b5141e8..42aaec9ce23ab 100644 --- a/services/core/java/com/android/server/power/batterysaver/BatterySaverStateMachine.java +++ b/services/core/java/com/android/server/power/batterysaver/BatterySaverStateMachine.java @@ -176,8 +176,10 @@ public class BatterySaverStateMachine { @GuardedBy("mLock") private int mSettingBatterySaverStickyAutoDisableThreshold; - /** Config flag to track default disable threshold for Dynamic Power Savings enabled battery - * saver. */ + /** + * Config flag to track default disable threshold for Dynamic Power Savings enabled battery + * saver. + */ @GuardedBy("mLock") private final int mDynamicPowerSavingsDefaultDisableThreshold; @@ -192,8 +194,9 @@ public class BatterySaverStateMachine { @GuardedBy("mLock") private int mSettingAutomaticBatterySaver; - /** When to disable battery saver again if it was enabled due to an external suggestion. - * Corresponds to Settings.Global.DYNAMIC_POWER_SAVINGS_DISABLE_THRESHOLD. + /** + * When to disable battery saver again if it was enabled due to an external suggestion. + * Corresponds to Settings.Global.DYNAMIC_POWER_SAVINGS_DISABLE_THRESHOLD. */ @GuardedBy("mLock") private int mDynamicPowerSavingsDisableThreshold; @@ -203,7 +206,7 @@ public class BatterySaverStateMachine { * Updates when Settings.Global.DYNAMIC_POWER_SAVINGS_ENABLED changes. */ @GuardedBy("mLock") - private boolean mDynamicPowerSavingsBatterySaver; + private boolean mDynamicPowerSavingsEnableBatterySaver; /** * Last reason passed to {@link #enableBatterySaverLocked}. @@ -265,7 +268,7 @@ public class BatterySaverStateMachine { /** @return true if the dynamic mode should be used */ private boolean isDynamicModeActiveLocked() { return mSettingAutomaticBatterySaver == PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC - && mDynamicPowerSavingsBatterySaver; + && mDynamicPowerSavingsEnableBatterySaver; } /** @@ -428,7 +431,7 @@ public class BatterySaverStateMachine { final boolean dynamicPowerSavingsThresholdChanged = mDynamicPowerSavingsDisableThreshold != dynamicPowerSavingsDisableThreshold; final boolean dynamicPowerSavingsBatterySaverChanged = - mDynamicPowerSavingsBatterySaver != dynamicPowerSavingsBatterySaver; + mDynamicPowerSavingsEnableBatterySaver != dynamicPowerSavingsBatterySaver; if (!(enabledChanged || stickyChanged || thresholdChanged || automaticModeChanged || stickyAutoDisableEnabledChanged || stickyAutoDisableThresholdChanged @@ -443,7 +446,7 @@ public class BatterySaverStateMachine { mSettingBatterySaverStickyAutoDisableThreshold = stickyAutoDisableThreshold; mSettingAutomaticBatterySaver = automaticBatterySaver; mDynamicPowerSavingsDisableThreshold = dynamicPowerSavingsDisableThreshold; - mDynamicPowerSavingsBatterySaver = dynamicPowerSavingsBatterySaver; + mDynamicPowerSavingsEnableBatterySaver = dynamicPowerSavingsBatterySaver; if (thresholdChanged) { // To avoid spamming the event log, we throttle logging here. @@ -923,6 +926,8 @@ public class BatterySaverStateMachine { pw.print(" mIsBatteryLevelLow="); pw.println(mIsBatteryLevelLow); + pw.print(" mSettingAutomaticBatterySaver="); + pw.println(mSettingAutomaticBatterySaver); pw.print(" mSettingBatterySaverEnabled="); pw.println(mSettingBatterySaverEnabled); pw.print(" mSettingBatterySaverEnabledSticky="); @@ -936,6 +941,13 @@ public class BatterySaverStateMachine { pw.print(" mBatterySaverStickyBehaviourDisabled="); pw.println(mBatterySaverStickyBehaviourDisabled); + pw.print(" mDynamicPowerSavingsDefaultDisableThreshold="); + pw.println(mDynamicPowerSavingsDefaultDisableThreshold); + pw.print(" mDynamicPowerSavingsDisableThreshold="); + pw.println(mDynamicPowerSavingsDisableThreshold); + pw.print(" mDynamicPowerSavingsEnableBatterySaver="); + pw.println(mDynamicPowerSavingsEnableBatterySaver); + pw.print(" mLastAdaptiveBatterySaverChangedExternallyElapsed="); pw.println(mLastAdaptiveBatterySaverChangedExternallyElapsed); } @@ -964,6 +976,8 @@ public class BatterySaverStateMachine { proto.write(BatterySaverStateMachineProto.BATTERY_LEVEL, mBatteryLevel); proto.write(BatterySaverStateMachineProto.IS_BATTERY_LEVEL_LOW, mIsBatteryLevelLow); + proto.write(BatterySaverStateMachineProto.SETTING_AUTOMATIC_TRIGGER, + mSettingAutomaticBatterySaver); proto.write(BatterySaverStateMachineProto.SETTING_BATTERY_SAVER_ENABLED, mSettingBatterySaverEnabled); proto.write(BatterySaverStateMachineProto.SETTING_BATTERY_SAVER_ENABLED_STICKY, @@ -978,6 +992,16 @@ public class BatterySaverStateMachine { .SETTING_BATTERY_SAVER_STICKY_AUTO_DISABLE_THRESHOLD, mSettingBatterySaverStickyAutoDisableThreshold); + proto.write( + BatterySaverStateMachineProto.DEFAULT_DYNAMIC_DISABLE_THRESHOLD, + mDynamicPowerSavingsDefaultDisableThreshold); + proto.write( + BatterySaverStateMachineProto.DYNAMIC_DISABLE_THRESHOLD, + mDynamicPowerSavingsDisableThreshold); + proto.write( + BatterySaverStateMachineProto.DYNAMIC_BATTERY_SAVER_ENABLED, + mDynamicPowerSavingsEnableBatterySaver); + proto.write( BatterySaverStateMachineProto .LAST_ADAPTIVE_BATTERY_SAVER_CHANGED_EXTERNALLY_ELAPSED,