From d5cdb61d357856d6060e5dc09a177ee1de79d689 Mon Sep 17 00:00:00 2001 From: Jeremy Nei Date: Thu, 19 Jan 2023 08:34:54 +0000 Subject: [PATCH] Report brightness event to StatsLog Report brightness event with additional info including bucket_id and brightness_at_max. Bug: 259797565 Test: Tested by tool statsd_testdrive Change-Id: I38fde2a3eb4f70cffebec093f201fb6705e7dc76 --- .../display/DisplayPowerController.java | 152 ++++++++++++++++++ .../display/DisplayPowerController2.java | 152 ++++++++++++++++++ 2 files changed, 304 insertions(+) diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index f5ca8aaa0997b..82e6e308cab3f 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -1882,6 +1882,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call ? BrightnessEvent.FLAG_USER_SET : 0)); Slog.i(mTag, newEvent.toString(/* includeTime= */ false)); + // Log all events which are not temporary + if (newEvent.getReason().getReason() != BrightnessReason.REASON_TEMPORARY) { + logBrightnessEvent(newEvent, unthrottledBrightnessState); + } if (userSetBrightnessChanged) { logManualBrightnessEvent(newEvent); } @@ -2976,6 +2980,154 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } } + // Return bucket index of range_[left]_[right] where + // left <= nits < right + private int nitsToRangeIndex(float nits) { + float[] boundaries = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60, 70, 80, + 90, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1200, + 1400, 1600, 1800, 2000, 2250, 2500, 2750, 3000}; + int[] rangeIndex = { + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_UNKNOWN, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_0_1, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_1_2, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_2_3, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_3_4, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_4_5, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_5_6, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_6_7, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_7_8, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_8_9, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_9_10, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_10_20, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_20_30, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_30_40, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_40_50, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_50_60, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_60_70, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_70_80, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_80_90, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_90_100, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_100_200, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_200_300, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_300_400, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_400_500, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_500_600, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_600_700, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_700_800, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_800_900, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_900_1000, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_1000_1200, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_1200_1400, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_1400_1600, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_1600_1800, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_1800_2000, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_2000_2250, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_2250_2500, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_2500_2750, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_2750_3000, + }; + for (int i = 0; i < boundaries.length; i++) { + if (nits < boundaries[i]) { + return rangeIndex[i]; + } + } + return FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_3000_INF; + } + + private int convertBrightnessReasonToStatsEnum(int brightnessReason) { + switch(brightnessReason) { + case BrightnessReason.REASON_UNKNOWN: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_UNKNOWN; + case BrightnessReason.REASON_MANUAL: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_MANUAL; + case BrightnessReason.REASON_DOZE: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_DOZE; + case BrightnessReason.REASON_DOZE_DEFAULT: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_DOZE_DEFAULT; + case BrightnessReason.REASON_AUTOMATIC: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_AUTOMATIC; + case BrightnessReason.REASON_SCREEN_OFF: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_SCREEN_OFF; + case BrightnessReason.REASON_OVERRIDE: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_OVERRIDE; + case BrightnessReason.REASON_TEMPORARY: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_TEMPORARY; + case BrightnessReason.REASON_BOOST: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_BOOST; + case BrightnessReason.REASON_SCREEN_OFF_BRIGHTNESS_SENSOR: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_SCREEN_OFF_BRIGHTNESS_SENSOR; + case BrightnessReason.REASON_FOLLOWER: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_FOLLOWER; + } + return FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_UNKNOWN; + } + + private int convertHbmModeToStatsEnum(int mode) { + switch(mode) { + case BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__HBM_MODE__HIGH_BRIGHTNESS_MODE_OFF; + case BrightnessInfo.HIGH_BRIGHTNESS_MODE_SUNLIGHT: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__HBM_MODE__HIGH_BRIGHTNESS_MODE_SUNLIGHT; + case BrightnessInfo.HIGH_BRIGHTNESS_MODE_HDR: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__HBM_MODE__HIGH_BRIGHTNESS_MODE_HDR; + } + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__HBM_MODE__HIGH_BRIGHTNESS_MODE_OFF; + } + + // unmodifiedBrightness: the brightness value that has not been + // modified by any modifiers(dimming/throttling/low-power-mode) + private void logBrightnessEvent(BrightnessEvent event, float unmodifiedBrightness) { + int modifier = event.getReason().getModifier(); + // It's easier to check if the brightness is at maximum level using the brightness + // value untouched by any modifiers + boolean brightnessIsMax = unmodifiedBrightness == event.getHbmMax(); + float brightnessInNits = convertToNits(event.getBrightness()); + float lowPowerModeFactor = event.getPowerFactor(); + int rbcStrength = event.getRbcStrength(); + float hbmMaxNits = convertToNits(event.getHbmMax()); + float thermalCapNits = convertToNits(event.getThermalMax()); + + if (mLogicalDisplay.getPrimaryDisplayDeviceLocked() != null + && mLogicalDisplay.getPrimaryDisplayDeviceLocked() + .getDisplayDeviceInfoLocked().type == Display.TYPE_INTERNAL) { + FrameworkStatsLog.write(FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2, + event.getPhysicalDisplayId().hashCode(), + brightnessInNits, + convertToNits(unmodifiedBrightness), + nitsToRangeIndex(brightnessInNits), + brightnessIsMax, + (event.getFlags() & BrightnessEvent.FLAG_USER_SET) > 0, + convertBrightnessReasonToStatsEnum(event.getReason().getReason()), + convertHbmModeToStatsEnum(event.getHbmMode()), + (modifier & BrightnessReason.MODIFIER_LOW_POWER) > 0, + (modifier & BrightnessReason.MODIFIER_THROTTLED) > 0, + event.isRbcEnabled(), + event.getLux(), + event.wasShortTermModelActive(), + lowPowerModeFactor, + rbcStrength, + hbmMaxNits, + thermalCapNits, + event.isAutomaticBrightnessEnabled()); + } + } + private void logManualBrightnessEvent(BrightnessEvent event) { float appliedLowPowerMode = event.isLowPowerModeSet() ? event.getPowerFactor() : -1f; int appliedRbcStrength = event.isRbcEnabled() ? event.getRbcStrength() : -1; diff --git a/services/core/java/com/android/server/display/DisplayPowerController2.java b/services/core/java/com/android/server/display/DisplayPowerController2.java index 5667ddf59b3c7..39bc09ef81bcf 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController2.java +++ b/services/core/java/com/android/server/display/DisplayPowerController2.java @@ -1595,6 +1595,10 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal ? BrightnessEvent.FLAG_USER_SET : 0)); Slog.i(mTag, newEvent.toString(/* includeTime= */ false)); + // Log all events which are not temporary + if (newEvent.getReason().getReason() != BrightnessReason.REASON_TEMPORARY) { + logBrightnessEvent(newEvent, unthrottledBrightnessState); + } if (userSetBrightnessChanged) { logManualBrightnessEvent(newEvent); } @@ -2512,6 +2516,154 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal } } + // Return bucket index of range_[left]_[right] where + // left <= nits < right + private int nitsToRangeIndex(float nits) { + float[] boundaries = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60, 70, 80, + 90, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1200, + 1400, 1600, 1800, 2000, 2250, 2500, 2750, 3000}; + int[] rangeIndex = { + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_UNKNOWN, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_0_1, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_1_2, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_2_3, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_3_4, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_4_5, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_5_6, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_6_7, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_7_8, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_8_9, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_9_10, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_10_20, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_20_30, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_30_40, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_40_50, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_50_60, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_60_70, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_70_80, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_80_90, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_90_100, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_100_200, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_200_300, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_300_400, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_400_500, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_500_600, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_600_700, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_700_800, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_800_900, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_900_1000, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_1000_1200, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_1200_1400, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_1400_1600, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_1600_1800, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_1800_2000, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_2000_2250, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_2250_2500, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_2500_2750, + FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_2750_3000, + }; + for (int i = 0; i < boundaries.length; i++) { + if (nits < boundaries[i]) { + return rangeIndex[i]; + } + } + return FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__BUCKET_INDEX__RANGE_3000_INF; + } + + private int convertBrightnessReasonToStatsEnum(int brightnessReason) { + switch(brightnessReason) { + case BrightnessReason.REASON_UNKNOWN: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_UNKNOWN; + case BrightnessReason.REASON_MANUAL: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_MANUAL; + case BrightnessReason.REASON_DOZE: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_DOZE; + case BrightnessReason.REASON_DOZE_DEFAULT: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_DOZE_DEFAULT; + case BrightnessReason.REASON_AUTOMATIC: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_AUTOMATIC; + case BrightnessReason.REASON_SCREEN_OFF: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_SCREEN_OFF; + case BrightnessReason.REASON_OVERRIDE: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_OVERRIDE; + case BrightnessReason.REASON_TEMPORARY: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_TEMPORARY; + case BrightnessReason.REASON_BOOST: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_BOOST; + case BrightnessReason.REASON_SCREEN_OFF_BRIGHTNESS_SENSOR: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_SCREEN_OFF_BRIGHTNESS_SENSOR; + case BrightnessReason.REASON_FOLLOWER: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_FOLLOWER; + } + return FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2__REASON__REASON_UNKNOWN; + } + + private int convertHbmModeToStatsEnum(int mode) { + switch(mode) { + case BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__HBM_MODE__HIGH_BRIGHTNESS_MODE_OFF; + case BrightnessInfo.HIGH_BRIGHTNESS_MODE_SUNLIGHT: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__HBM_MODE__HIGH_BRIGHTNESS_MODE_SUNLIGHT; + case BrightnessInfo.HIGH_BRIGHTNESS_MODE_HDR: + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__HBM_MODE__HIGH_BRIGHTNESS_MODE_HDR; + } + return FrameworkStatsLog + .SCREEN_BRIGHTNESS_CHANGED_V2__HBM_MODE__HIGH_BRIGHTNESS_MODE_OFF; + } + + // unmodifiedBrightness: the brightness value that has not been + // modified by any modifiers(dimming/throttling/low-power-mode) + private void logBrightnessEvent(BrightnessEvent event, float unmodifiedBrightness) { + int modifier = event.getReason().getModifier(); + // It's easier to check if the brightness is at maximum level using the brightness + // value untouched by any modifiers + boolean brightnessIsMax = unmodifiedBrightness == event.getHbmMax(); + float brightnessInNits = convertToNits(event.getBrightness()); + float lowPowerModeFactor = event.getPowerFactor(); + int rbcStrength = event.getRbcStrength(); + float hbmMaxNits = convertToNits(event.getHbmMax()); + float thermalCapNits = convertToNits(event.getThermalMax()); + + if (mLogicalDisplay.getPrimaryDisplayDeviceLocked() != null + && mLogicalDisplay.getPrimaryDisplayDeviceLocked() + .getDisplayDeviceInfoLocked().type == Display.TYPE_INTERNAL) { + FrameworkStatsLog.write(FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED_V2, + event.getPhysicalDisplayId().hashCode(), + brightnessInNits, + convertToNits(unmodifiedBrightness), + nitsToRangeIndex(brightnessInNits), + brightnessIsMax, + (event.getFlags() & BrightnessEvent.FLAG_USER_SET) > 0, + convertBrightnessReasonToStatsEnum(event.getReason().getReason()), + convertHbmModeToStatsEnum(event.getHbmMode()), + (modifier & BrightnessReason.MODIFIER_LOW_POWER) > 0, + (modifier & BrightnessReason.MODIFIER_THROTTLED) > 0, + event.isRbcEnabled(), + event.getLux(), + event.wasShortTermModelActive(), + lowPowerModeFactor, + rbcStrength, + hbmMaxNits, + thermalCapNits, + event.isAutomaticBrightnessEnabled()); + } + } + private final class DisplayControllerHandler extends Handler { DisplayControllerHandler(Looper looper) { super(looper, null, true /*async*/);