summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/proto/android/server/powermanagerservice.proto24
-rw-r--r--services/core/java/com/android/server/power/batterysaver/BatterySaverStateMachine.java40
2 files changed, 55 insertions, 9 deletions
diff --git a/core/proto/android/server/powermanagerservice.proto b/core/proto/android/server/powermanagerservice.proto
index c03957087f26..6850d0109913 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 4b3746b5141e..42aaec9ce23a 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,
@@ -979,6 +993,16 @@ public class BatterySaverStateMachine {
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,
mLastAdaptiveBatterySaverChangedExternallyElapsed);