Adjust remaining supply as needed.

1. Update the remaining supply when TARE loads (from being turned on or
   the device booting up) in case the battery level changed
   significantly since the last time it was on.
2. Don't let the remaining supply go negative since that would
   negatively impact allowing free actions.

Bug: 242605499
Bug: 242769323
Test: atest --rerun-until-failure 100 CtsAlarmManagerTestCases:BasicApiTests
Change-Id: I2659c5823baab45dc3f40cbbe85078a03c5ce5fe
This commit is contained in:
Kweku Adams
2022-08-17 19:02:12 +00:00
parent a9a5146653
commit ff5ee8b3b5
2 changed files with 13 additions and 3 deletions

View File

@@ -783,6 +783,9 @@ public class InternalResourceService extends SystemService {
// Reset the consumption limit since several factors may have changed.
mScribe.setConsumptionLimitLocked(
mCompleteEconomicPolicy.getInitialSatiatedConsumptionLimit());
} else {
// Adjust the supply in case battery level changed while the device was off.
adjustCreditSupplyLocked(true);
}
}
scheduleUnusedWealthReclamationLocked();

View File

@@ -19,6 +19,7 @@ package com.android.server.tare;
import static android.text.format.DateUtils.HOUR_IN_MILLIS;
import static com.android.server.tare.TareUtils.appToString;
import static com.android.server.tare.TareUtils.cakeToString;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -136,9 +137,15 @@ public class Scribe {
@GuardedBy("mIrs.getLock()")
void adjustRemainingConsumableCakesLocked(long delta) {
if (delta != 0) {
// No point doing any work if the change is 0.
mRemainingConsumableCakes += delta;
final long staleCakes = mRemainingConsumableCakes;
mRemainingConsumableCakes += delta;
if (mRemainingConsumableCakes < 0) {
Slog.w(TAG, "Overdrew consumable cakes by " + cakeToString(-mRemainingConsumableCakes));
// A negative value would interfere with allowing free actions, so set the minimum as 0.
mRemainingConsumableCakes = 0;
}
if (mRemainingConsumableCakes != staleCakes) {
// No point doing any work if there was no functional change.
postWrite();
}
}