Log the saved historical HBM events.
HighBrightnessModeController saves all the previous HBM events within
the HBM time window. This CL adds those events to dumpsys.
Bug: 189384189
Test: Manually test and verify output of 'adb shell dumpsys display'
Change-Id: I3cbd83b4fb4714cf697d2e7f29a00edfe6bdb1ed
diff --git a/services/core/java/com/android/server/display/DisplayDeviceConfig.java b/services/core/java/com/android/server/display/DisplayDeviceConfig.java
index 170564d..47b2604 100644
--- a/services/core/java/com/android/server/display/DisplayDeviceConfig.java
+++ b/services/core/java/com/android/server/display/DisplayDeviceConfig.java
@@ -771,7 +771,7 @@
+ ", transition: " + transitionPoint
+ ", timeWindow: " + timeWindowMillis + "ms"
+ ", timeMax: " + timeMaxMillis + "ms"
- + ", timeMin: " + timeMinMillis
+ + ", timeMin: " + timeMinMillis + "ms"
+ "} ";
}
}
diff --git a/services/core/java/com/android/server/display/HighBrightnessModeController.java b/services/core/java/com/android/server/display/HighBrightnessModeController.java
index b948777..57a8c4b 100644
--- a/services/core/java/com/android/server/display/HighBrightnessModeController.java
+++ b/services/core/java/com/android/server/display/HighBrightnessModeController.java
@@ -22,6 +22,7 @@
import android.os.PowerManager;
import android.os.SystemClock;
import android.util.Slog;
+import android.util.TimeUtils;
import android.view.SurfaceControlHdrLayerInfoListener;
import com.android.internal.annotations.VisibleForTesting;
@@ -189,6 +190,10 @@
}
void dump(PrintWriter pw) {
+ mHandler.runWithScissors(() -> dumpLocal(pw), 1000);
+ }
+
+ private void dumpLocal(PrintWriter pw) {
pw.println("HighBrightnessModeController:");
pw.println(" mCurrentMin=" + getCurrentBrightnessMin());
pw.println(" mCurrentMax=" + getCurrentBrightnessMax());
@@ -202,6 +207,29 @@
pw.println(" mIsHdrLayerPresent=" + mIsHdrLayerPresent);
pw.println(" mBrightnessMin=" + mBrightnessMin);
pw.println(" mBrightnessMax=" + mBrightnessMax);
+ pw.println(" mRunningStartTimeMillis=" + TimeUtils.formatUptime(mRunningStartTimeMillis));
+ pw.println(" mEvents=");
+ final long currentTime = mClock.uptimeMillis();
+ long lastStartTime = currentTime;
+ if (mRunningStartTimeMillis != -1) {
+ lastStartTime = dumpHbmEvent(pw, new HbmEvent(mRunningStartTimeMillis, currentTime));
+ }
+ for (HbmEvent event : mEvents) {
+ if (lastStartTime > event.endTimeMillis) {
+ pw.println(" event: [normal brightness]: "
+ + TimeUtils.formatDuration(lastStartTime - event.endTimeMillis));
+ }
+ lastStartTime = dumpHbmEvent(pw, event);
+ }
+ }
+
+ private long dumpHbmEvent(PrintWriter pw, HbmEvent event) {
+ final long duration = event.endTimeMillis - event.startTimeMillis;
+ pw.println(" event: ["
+ + TimeUtils.formatUptime(event.startTimeMillis) + ", "
+ + TimeUtils.formatUptime(event.endTimeMillis) + "] ("
+ + TimeUtils.formatDuration(duration) + ")");
+ return event.startTimeMillis;
}
private boolean isCurrentlyAllowed() {