Add automatic brightness events to dumpsys
Bug: 220137659 Test: adb shell dumpsys display Change-Id: I140441d3f698e509642555342f25c7776b20eff6
This commit is contained in:
@@ -63,6 +63,7 @@ import com.android.internal.display.BrightnessSynchronizer;
|
||||
import com.android.internal.logging.MetricsLogger;
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.internal.util.FrameworkStatsLog;
|
||||
import com.android.internal.util.RingBuffer;
|
||||
import com.android.server.LocalServices;
|
||||
import com.android.server.am.BatteryStatsService;
|
||||
import com.android.server.display.RampAnimator.DualRampAnimator;
|
||||
@@ -154,6 +155,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
private static final int REPORTED_TO_POLICY_SCREEN_ON = 2;
|
||||
private static final int REPORTED_TO_POLICY_SCREEN_TURNING_OFF = 3;
|
||||
|
||||
private static final int RINGBUFFER_MAX = 100;
|
||||
|
||||
private final String TAG;
|
||||
|
||||
private final Object mLock = new Object();
|
||||
@@ -211,6 +214,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
|
||||
private final float mScreenBrightnessDefault;
|
||||
|
||||
// Previously logged screen brightness. Used for autobrightness event dumpsys.
|
||||
private float mPreviousScreenBrightness = Float.NaN;
|
||||
|
||||
// The minimum allowed brightness while in VR.
|
||||
private final float mScreenBrightnessForVrRangeMinimum;
|
||||
|
||||
@@ -386,6 +392,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
|
||||
private final Runnable mOnBrightnessChangeRunnable;
|
||||
|
||||
// Used for keeping record in dumpsys for when and to which brightness auto adaptions were made.
|
||||
private RingBuffer<AutobrightnessEvent> mAutobrightnessEventRingBuffer;
|
||||
|
||||
// A record of state for skipping brightness ramps.
|
||||
private int mSkipRampState = RAMP_STATE_SKIP_NONE;
|
||||
|
||||
@@ -984,6 +993,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
mHbmController, mBrightnessThrottler, mIdleModeBrightnessMapper,
|
||||
mDisplayDeviceConfig.getAmbientHorizonShort(),
|
||||
mDisplayDeviceConfig.getAmbientHorizonLong());
|
||||
|
||||
mAutobrightnessEventRingBuffer =
|
||||
new RingBuffer<>(AutobrightnessEvent.class, RINGBUFFER_MAX);
|
||||
} else {
|
||||
mUseSoftwareAutoBrightnessConfig = false;
|
||||
}
|
||||
@@ -1554,6 +1566,15 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
Slog.v(TAG, "Brightness [" + brightnessState + "] manual adjustment.");
|
||||
}
|
||||
|
||||
// Add any automatic changes to autobrightness ringbuffer for dumpsys.
|
||||
if (mBrightnessReason.reason == BrightnessReason.REASON_AUTOMATIC
|
||||
&& !BrightnessSynchronizer.floatEquals(
|
||||
mPreviousScreenBrightness, brightnessState)) {
|
||||
mPreviousScreenBrightness = brightnessState;
|
||||
mAutobrightnessEventRingBuffer.append(new AutobrightnessEvent(
|
||||
System.currentTimeMillis(), brightnessState));
|
||||
}
|
||||
|
||||
// Update display white-balance.
|
||||
if (mDisplayWhiteBalanceController != null) {
|
||||
if (state == Display.STATE_ON && mDisplayWhiteBalanceSettings.isEnabled()) {
|
||||
@@ -2488,6 +2509,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
|
||||
if (mAutomaticBrightnessController != null) {
|
||||
mAutomaticBrightnessController.dump(pw);
|
||||
dumpAutobrightnessEvents(pw);
|
||||
}
|
||||
|
||||
if (mHbmController != null) {
|
||||
@@ -2544,6 +2566,20 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
}
|
||||
}
|
||||
|
||||
private void dumpAutobrightnessEvents(PrintWriter pw) {
|
||||
int size = mAutobrightnessEventRingBuffer.size();
|
||||
if (size < 1) {
|
||||
pw.println("No Automatic Brightness Adjustments");
|
||||
return;
|
||||
}
|
||||
|
||||
pw.println("Automatic Brightness Adjustments Last " + size + " Events: ");
|
||||
AutobrightnessEvent[] eventArray = mAutobrightnessEventRingBuffer.toArray();
|
||||
for (int i = 0; i < mAutobrightnessEventRingBuffer.size(); i++) {
|
||||
pw.println(" " + eventArray[i].toString());
|
||||
}
|
||||
}
|
||||
|
||||
private static float clampAbsoluteBrightness(float value) {
|
||||
return MathUtils.constrain(value, PowerManager.BRIGHTNESS_MIN,
|
||||
PowerManager.BRIGHTNESS_MAX);
|
||||
@@ -2612,6 +2648,21 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
}
|
||||
}
|
||||
|
||||
private static class AutobrightnessEvent {
|
||||
final long mTime;
|
||||
final float mBrightness;
|
||||
|
||||
AutobrightnessEvent(long time, float brightness) {
|
||||
mTime = time;
|
||||
mBrightness = brightness;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return TimeUtils.formatForLogging(mTime) + " - Brightness: " + mBrightness;
|
||||
}
|
||||
}
|
||||
|
||||
private final class DisplayControllerHandler extends Handler {
|
||||
public DisplayControllerHandler(Looper looper) {
|
||||
super(looper, null, true /*async*/);
|
||||
|
||||
Reference in New Issue
Block a user