Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 37727f65 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Read wear brightness setting and use appropriate curve" into main

parents c0f2337a 7f0d58cf
Loading
Loading
Loading
Loading
+22 −13
Original line number Diff line number Diff line
@@ -23,12 +23,14 @@ import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIG
import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_IDLE;

import android.annotation.Nullable;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.hardware.display.BrightnessConfiguration;
import android.hardware.display.BrightnessCorrection;
import android.os.PowerManager;
import android.os.UserHandle;
import android.provider.Settings;
import android.util.LongArray;
import android.util.MathUtils;
import android.util.Pair;
@@ -80,45 +82,50 @@ public abstract class BrightnessMappingStrategy {
     * Creates a BrightnessMapping strategy. We do not create a simple mapping strategy for idle
     * mode.
     *
     * @param resources
     * @param context
     * @param displayDeviceConfig
     * @param mode The auto-brightness mode. Different modes use different brightness curves
     * @param displayWhiteBalanceController
     * @return the BrightnessMappingStrategy
     */
    @Nullable
    static BrightnessMappingStrategy create(Resources resources,
    static BrightnessMappingStrategy create(Context context,
            DisplayDeviceConfig displayDeviceConfig,
            @AutomaticBrightnessController.AutomaticBrightnessMode int mode,
            DisplayWhiteBalanceController displayWhiteBalanceController) {
            @Nullable DisplayWhiteBalanceController displayWhiteBalanceController) {

        // Display independent, mode dependent values
        float[] brightnessLevelsNits = null;
        float[] brightnessLevels = null;
        float[] luxLevels = null;
        int preset = Settings.System.getIntForUser(context.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_FOR_ALS,
                Settings.System.SCREEN_BRIGHTNESS_AUTOMATIC_NORMAL, UserHandle.USER_CURRENT);
        switch (mode) {
            case AUTO_BRIGHTNESS_MODE_DEFAULT -> {
                brightnessLevelsNits = displayDeviceConfig.getAutoBrightnessBrighteningLevelsNits();
                luxLevels = displayDeviceConfig.getAutoBrightnessBrighteningLevelsLux(mode);
                brightnessLevels = displayDeviceConfig.getAutoBrightnessBrighteningLevels(mode);
                luxLevels = displayDeviceConfig.getAutoBrightnessBrighteningLevelsLux(mode, preset);
                brightnessLevels =
                        displayDeviceConfig.getAutoBrightnessBrighteningLevels(mode, preset);
            }
            case AUTO_BRIGHTNESS_MODE_IDLE -> {
                brightnessLevelsNits = getFloatArray(resources.obtainTypedArray(
                brightnessLevelsNits = getFloatArray(context.getResources().obtainTypedArray(
                        com.android.internal.R.array.config_autoBrightnessDisplayValuesNitsIdle));
                luxLevels = getLuxLevels(resources.getIntArray(
                luxLevels = getLuxLevels(context.getResources().getIntArray(
                        com.android.internal.R.array.config_autoBrightnessLevelsIdle));
            }
            case AUTO_BRIGHTNESS_MODE_DOZE -> {
                luxLevels = displayDeviceConfig.getAutoBrightnessBrighteningLevelsLux(mode);
                brightnessLevels = displayDeviceConfig.getAutoBrightnessBrighteningLevels(mode);
                luxLevels = displayDeviceConfig.getAutoBrightnessBrighteningLevelsLux(mode, preset);
                brightnessLevels =
                        displayDeviceConfig.getAutoBrightnessBrighteningLevels(mode, preset);
            }
        }

        // Display independent, mode independent values
        float autoBrightnessAdjustmentMaxGamma = resources.getFraction(
        float autoBrightnessAdjustmentMaxGamma = context.getResources().getFraction(
                com.android.internal.R.fraction.config_autoBrightnessAdjustmentMaxGamma,
                1, 1);
        long shortTermModelTimeout = resources.getInteger(
        long shortTermModelTimeout = context.getResources().getInteger(
                com.android.internal.R.integer.config_autoBrightnessShortTermModelTimeout);

        // Display dependent values - used for physical mapping strategy nits -> brightness
@@ -823,6 +830,8 @@ public abstract class BrightnessMappingStrategy {
        private float mAutoBrightnessAdjustment;
        private float mUserLux;
        private float mUserBrightness;

        @Nullable
        private final DisplayWhiteBalanceController mDisplayWhiteBalanceController;

        @AutomaticBrightnessController.AutomaticBrightnessMode
@@ -838,7 +847,7 @@ public abstract class BrightnessMappingStrategy {
        public PhysicalMappingStrategy(BrightnessConfiguration config, float[] nits,
                float[] brightness, float maxGamma,
                @AutomaticBrightnessController.AutomaticBrightnessMode int mode,
                DisplayWhiteBalanceController displayWhiteBalanceController) {
                @Nullable DisplayWhiteBalanceController displayWhiteBalanceController) {

            Preconditions.checkArgument(nits.length != 0 && brightness.length != 0,
                    "Nits and brightness arrays must not be empty!");
+7 −30
Original line number Diff line number Diff line
@@ -1590,26 +1590,15 @@ public class DisplayDeviceConfig {
        return mAutoBrightnessBrighteningLightDebounceIdle;
    }

    /**
     * @param mode The auto-brightness mode
     * @return The default auto-brightness brightening ambient lux levels for the specified mode
     * and the normal brightness preset
     */
    public float[] getAutoBrightnessBrighteningLevelsLux(
            @AutomaticBrightnessController.AutomaticBrightnessMode int mode) {
        if (mDisplayBrightnessMapping == null) {
            return null;
        }
        return mDisplayBrightnessMapping.getLuxArray(mode);
    }

    /**
     * @param mode The auto-brightness mode
     * @param preset The brightness preset. Presets are used on devices that allow users to choose
     *               from a set of predefined options in display auto-brightness settings.
     * @return Auto brightness brightening ambient lux levels for the specified mode and preset
     * @return The default auto-brightness brightening ambient lux levels for the specified mode
     * and preset
     */
    public float[] getAutoBrightnessBrighteningLevelsLux(String mode, String preset) {
    public float[] getAutoBrightnessBrighteningLevelsLux(
            @AutomaticBrightnessController.AutomaticBrightnessMode int mode, int preset) {
        if (mDisplayBrightnessMapping == null) {
            return null;
        }
@@ -1626,26 +1615,14 @@ public class DisplayDeviceConfig {
        return mDisplayBrightnessMapping.getNitsArray();
    }

    /**
     * @param mode The auto-brightness mode
     * @return The default auto-brightness brightening levels for the specified mode and the normal
     * brightness preset
     */
    public float[] getAutoBrightnessBrighteningLevels(
            @AutomaticBrightnessController.AutomaticBrightnessMode int mode) {
        if (mDisplayBrightnessMapping == null) {
            return null;
        }
        return mDisplayBrightnessMapping.getBrightnessArray(mode);
    }

    /**
     * @param mode The auto-brightness mode
     * @param preset The brightness preset. Presets are used on devices that allow users to choose
     *               from a set of predefined options in display auto-brightness settings.
     * @return Auto brightness brightening backlight levels for the specified mode and preset
     * @return The default auto-brightness brightening levels for the specified mode and preset
     */
    public float[] getAutoBrightnessBrighteningLevels(String mode, String preset) {
    public float[] getAutoBrightnessBrighteningLevels(
            @AutomaticBrightnessController.AutomaticBrightnessMode int mode, int preset) {
        if (mDisplayBrightnessMapping == null) {
            return null;
        }
+16 −19
Original line number Diff line number Diff line
@@ -735,7 +735,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
            mCdsi = null;
        }

        setUpAutoBrightness(resources, handler);
        setUpAutoBrightness(context, handler);

        mColorFadeEnabled = !ActivityManager.isLowRamDeviceStatic()
                && !resources.getBoolean(
@@ -1075,7 +1075,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
        loadBrightnessRampRates();
        loadProximitySensor();
        loadNitsRange(mContext.getResources());
        setUpAutoBrightness(mContext.getResources(), mHandler);
        setUpAutoBrightness(mContext, mHandler);
        reloadReduceBrightColours();
        setAnimatorRampSpeeds(/* isIdleMode= */ false);
        mBrightnessRangeController.loadFromConfig(hbmMetadata, token, info, mDisplayDeviceConfig);
@@ -1145,7 +1145,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
        handleBrightnessModeChange();
    }

    private void setUpAutoBrightness(Resources resources, Handler handler) {
    private void setUpAutoBrightness(Context context, Handler handler) {
        mUseSoftwareAutoBrightnessConfig = mDisplayDeviceConfig.isAutoBrightnessAvailable();

        if (!mUseSoftwareAutoBrightnessConfig) {
@@ -1155,21 +1155,19 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
        SparseArray<BrightnessMappingStrategy> brightnessMappers = new SparseArray<>();

        BrightnessMappingStrategy defaultModeBrightnessMapper =
                mInjector.getDefaultModeBrightnessMapper(resources, mDisplayDeviceConfig,
                mInjector.getDefaultModeBrightnessMapper(context, mDisplayDeviceConfig,
                        mDisplayWhiteBalanceController);
        brightnessMappers.append(AUTO_BRIGHTNESS_MODE_DEFAULT,
                defaultModeBrightnessMapper);

        final boolean isIdleScreenBrightnessEnabled = resources.getBoolean(
        final boolean isIdleScreenBrightnessEnabled = context.getResources().getBoolean(
                R.bool.config_enableIdleScreenBrightnessMode);
        if (isIdleScreenBrightnessEnabled) {
            BrightnessMappingStrategy idleModeBrightnessMapper =
                    BrightnessMappingStrategy.create(resources, mDisplayDeviceConfig,
                            AUTO_BRIGHTNESS_MODE_IDLE,
                            mDisplayWhiteBalanceController);
                    BrightnessMappingStrategy.create(context, mDisplayDeviceConfig,
                            AUTO_BRIGHTNESS_MODE_IDLE, mDisplayWhiteBalanceController);
            if (idleModeBrightnessMapper != null) {
                brightnessMappers.append(AUTO_BRIGHTNESS_MODE_IDLE,
                        idleModeBrightnessMapper);
                brightnessMappers.append(AUTO_BRIGHTNESS_MODE_IDLE, idleModeBrightnessMapper);
            }
        }

@@ -1181,7 +1179,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
        }

        if (defaultModeBrightnessMapper != null) {
            final float dozeScaleFactor = resources.getFraction(
            final float dozeScaleFactor = context.getResources().getFraction(
                    com.android.internal.R.fraction.config_screenAutoBrightnessDozeScaleFactor,
                    1, 1);

@@ -1265,14 +1263,14 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                    .getAutoBrightnessBrighteningLightDebounceIdle();
            long darkeningLightDebounceIdle = mDisplayDeviceConfig
                    .getAutoBrightnessDarkeningLightDebounceIdle();
            boolean autoBrightnessResetAmbientLuxAfterWarmUp = resources.getBoolean(
            boolean autoBrightnessResetAmbientLuxAfterWarmUp = context.getResources().getBoolean(
                    com.android.internal.R.bool.config_autoBrightnessResetAmbientLuxAfterWarmUp);

            int lightSensorWarmUpTimeConfig = resources.getInteger(
            int lightSensorWarmUpTimeConfig = context.getResources().getInteger(
                    com.android.internal.R.integer.config_lightSensorWarmupTime);
            int lightSensorRate = resources.getInteger(
            int lightSensorRate = context.getResources().getInteger(
                    com.android.internal.R.integer.config_autoBrightnessLightSensorRate);
            int initialLightSensorRate = resources.getInteger(
            int initialLightSensorRate = context.getResources().getInteger(
                    com.android.internal.R.integer.config_autoBrightnessInitialLightSensorRate);
            if (initialLightSensorRate == -1) {
                initialLightSensorRate = lightSensorRate;
@@ -3645,12 +3643,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                    userNits);
        }

        BrightnessMappingStrategy getDefaultModeBrightnessMapper(Resources resources,
        BrightnessMappingStrategy getDefaultModeBrightnessMapper(Context context,
                DisplayDeviceConfig displayDeviceConfig,
                DisplayWhiteBalanceController displayWhiteBalanceController) {
            return BrightnessMappingStrategy.create(resources,
                    displayDeviceConfig, AUTO_BRIGHTNESS_MODE_DEFAULT,
                    displayWhiteBalanceController);
            return BrightnessMappingStrategy.create(context, displayDeviceConfig,
                    AUTO_BRIGHTNESS_MODE_DEFAULT, displayWhiteBalanceController);
        }

        HysteresisLevels getHysteresisLevels(float[] brighteningThresholdsPercentages,
+31 −16
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.server.display;
import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_DEFAULT;
import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_DOZE;
import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_IDLE;
import static com.android.server.display.config.DisplayBrightnessMappingConfig.autoBrightnessPresetToString;

import android.animation.Animator;
import android.animation.ObjectAnimator;
@@ -624,7 +625,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
            mCdsi = null;
        }

        setUpAutoBrightness(resources, handler);
        setUpAutoBrightness(context, handler);

        mColorFadeEnabled = mInjector.isColorFadeEnabled()
                && !resources.getBoolean(
@@ -905,7 +906,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
        // updated here.
        loadBrightnessRampRates();
        loadNitsRange(mContext.getResources());
        setUpAutoBrightness(mContext.getResources(), mHandler);
        setUpAutoBrightness(mContext, mHandler);
        reloadReduceBrightColours();
        setAnimatorRampSpeeds(/* isIdleMode= */ false);

@@ -976,10 +977,15 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
        mContext.getContentResolver().registerContentObserver(
                Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_MODE),
                false /*notifyForDescendants*/, mSettingsObserver, UserHandle.USER_ALL);
        if (mFlags.areAutoBrightnessModesEnabled()) {
            mContext.getContentResolver().registerContentObserver(
                    Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_FOR_ALS),
                    /* notifyForDescendants= */ false, mSettingsObserver, UserHandle.USER_CURRENT);
        }
        handleBrightnessModeChange();
    }

    private void setUpAutoBrightness(Resources resources, Handler handler) {
    private void setUpAutoBrightness(Context context, Handler handler) {
        mUseSoftwareAutoBrightnessConfig = mDisplayDeviceConfig.isAutoBrightnessAvailable();

        if (!mUseSoftwareAutoBrightnessConfig) {
@@ -989,16 +995,16 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
        SparseArray<BrightnessMappingStrategy> brightnessMappers = new SparseArray<>();

        BrightnessMappingStrategy defaultModeBrightnessMapper =
                mInjector.getDefaultModeBrightnessMapper(resources, mDisplayDeviceConfig,
                mInjector.getDefaultModeBrightnessMapper(context, mDisplayDeviceConfig,
                        mDisplayWhiteBalanceController);
        brightnessMappers.append(AUTO_BRIGHTNESS_MODE_DEFAULT,
                defaultModeBrightnessMapper);

        final boolean isIdleScreenBrightnessEnabled = resources.getBoolean(
        final boolean isIdleScreenBrightnessEnabled = context.getResources().getBoolean(
                R.bool.config_enableIdleScreenBrightnessMode);
        if (isIdleScreenBrightnessEnabled) {
            BrightnessMappingStrategy idleModeBrightnessMapper =
                    BrightnessMappingStrategy.create(resources, mDisplayDeviceConfig,
                    BrightnessMappingStrategy.create(context, mDisplayDeviceConfig,
                            AUTO_BRIGHTNESS_MODE_IDLE,
                            mDisplayWhiteBalanceController);
            if (idleModeBrightnessMapper != null) {
@@ -1008,7 +1014,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
        }

        BrightnessMappingStrategy dozeModeBrightnessMapper =
                BrightnessMappingStrategy.create(resources, mDisplayDeviceConfig,
                BrightnessMappingStrategy.create(context, mDisplayDeviceConfig,
                        AUTO_BRIGHTNESS_MODE_DOZE, mDisplayWhiteBalanceController);
        if (mFlags.areAutoBrightnessModesEnabled() && dozeModeBrightnessMapper != null) {
            brightnessMappers.put(AUTO_BRIGHTNESS_MODE_DOZE, dozeModeBrightnessMapper);
@@ -1022,7 +1028,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
        }

        if (defaultModeBrightnessMapper != null) {
            final float dozeScaleFactor = resources.getFraction(
            final float dozeScaleFactor = context.getResources().getFraction(
                    R.fraction.config_screenAutoBrightnessDozeScaleFactor,
                    1, 1);

@@ -1106,14 +1112,14 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
                    .getAutoBrightnessBrighteningLightDebounceIdle();
            long darkeningLightDebounceIdle = mDisplayDeviceConfig
                    .getAutoBrightnessDarkeningLightDebounceIdle();
            boolean autoBrightnessResetAmbientLuxAfterWarmUp = resources.getBoolean(
            boolean autoBrightnessResetAmbientLuxAfterWarmUp = context.getResources().getBoolean(
                    R.bool.config_autoBrightnessResetAmbientLuxAfterWarmUp);

            int lightSensorWarmUpTimeConfig = resources.getInteger(
            int lightSensorWarmUpTimeConfig = context.getResources().getInteger(
                    R.integer.config_lightSensorWarmupTime);
            int lightSensorRate = resources.getInteger(
            int lightSensorRate = context.getResources().getInteger(
                    R.integer.config_autoBrightnessLightSensorRate);
            int initialLightSensorRate = resources.getInteger(
            int initialLightSensorRate = context.getResources().getInteger(
                    R.integer.config_autoBrightnessInitialLightSensorRate);
            if (initialLightSensorRate == -1) {
                initialLightSensorRate = lightSensorRate;
@@ -2999,6 +3005,16 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
        public void onChange(boolean selfChange, Uri uri) {
            if (uri.equals(Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_MODE))) {
                handleBrightnessModeChange();
            } else if (uri.equals(Settings.System.getUriFor(
                    Settings.System.SCREEN_BRIGHTNESS_FOR_ALS))) {
                int preset = Settings.System.getIntForUser(mContext.getContentResolver(),
                        Settings.System.SCREEN_BRIGHTNESS_FOR_ALS,
                        Settings.System.SCREEN_BRIGHTNESS_AUTOMATIC_NORMAL,
                        UserHandle.USER_CURRENT);
                Slog.i(mTag, "Setting up auto-brightness for preset "
                        + autoBrightnessPresetToString(preset));
                setUpAutoBrightness(mContext, mHandler);
                sendUpdatePowerState();
            } else {
                handleSettingsChange(false /* userSwitch */);
            }
@@ -3117,12 +3133,11 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
                    userNits);
        }

        BrightnessMappingStrategy getDefaultModeBrightnessMapper(Resources resources,
        BrightnessMappingStrategy getDefaultModeBrightnessMapper(Context context,
                DisplayDeviceConfig displayDeviceConfig,
                DisplayWhiteBalanceController displayWhiteBalanceController) {
            return BrightnessMappingStrategy.create(resources,
                    displayDeviceConfig, AUTO_BRIGHTNESS_MODE_DEFAULT,
                    displayWhiteBalanceController);
            return BrightnessMappingStrategy.create(context, displayDeviceConfig,
                    AUTO_BRIGHTNESS_MODE_DEFAULT, displayWhiteBalanceController);
        }

        HysteresisLevels getHysteresisLevels(float[] brighteningThresholdsPercentages,
+32 −29
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIG

import android.content.Context;
import android.os.PowerManager;
import android.provider.Settings;
import android.util.Spline;

import com.android.internal.display.BrightnessSynchronizer;
@@ -38,9 +39,9 @@ import java.util.Map;
 */
public class DisplayBrightnessMappingConfig {

    private static final String DEFAULT_BRIGHTNESS_PRESET_NAME = "normal";
    private static final String DEFAULT_BRIGHTNESS_MAPPING_KEY =
            AutoBrightnessModeName._default.getRawName() + "_" + DEFAULT_BRIGHTNESS_PRESET_NAME;
            AutoBrightnessModeName._default.getRawName() + "_"
                    + AutoBrightnessSettingName.normal.getRawName();

    /**
     * Array of desired screen brightness in nits corresponding to the lux values
@@ -150,24 +151,17 @@ public class DisplayBrightnessMappingConfig {
        }
    }

    /**
     * @param mode The auto-brightness mode
     * @return The default auto-brightness brightening ambient lux levels for the specified mode
     * and the normal brightness preset
     */
    public float[] getLuxArray(@AutomaticBrightnessController.AutomaticBrightnessMode int mode) {
        return mBrightnessLevelsLuxMap.get(
                autoBrightnessModeToString(mode) + "_" + DEFAULT_BRIGHTNESS_PRESET_NAME);
    }

    /**
     * @param mode The auto-brightness mode
     * @param preset The brightness preset. Presets are used on devices that allow users to choose
     *               from a set of predefined options in display auto-brightness settings.
     * @return Auto brightness brightening ambient lux levels for the specified mode and preset
     * @return The default auto-brightness brightening ambient lux levels for the specified mode
     * and preset
     */
    public float[] getLuxArray(String mode, String preset) {
        return mBrightnessLevelsLuxMap.get(mode + "_" + preset);
    public float[] getLuxArray(@AutomaticBrightnessController.AutomaticBrightnessMode int mode,
            int preset) {
        return mBrightnessLevelsLuxMap.get(
                autoBrightnessModeToString(mode) + "_" + autoBrightnessPresetToString(preset));
    }

    /**
@@ -177,25 +171,16 @@ public class DisplayBrightnessMappingConfig {
        return mBrightnessLevelsNits;
    }

    /**
     * @param mode The auto-brightness mode
     * @return The default auto-brightness brightening levels for the specified mode and the normal
     * brightness preset
     */
    public float[] getBrightnessArray(
            @AutomaticBrightnessController.AutomaticBrightnessMode int mode) {
        return mBrightnessLevelsMap.get(
                autoBrightnessModeToString(mode) + "_" + DEFAULT_BRIGHTNESS_PRESET_NAME);
    }

    /**
     * @param mode The auto-brightness mode
     * @param preset The brightness preset. Presets are used on devices that allow users to choose
     *               from a set of predefined options in display auto-brightness settings.
     * @return Auto brightness brightening ambient lux levels for the specified mode and preset
     * @return The default auto-brightness brightening levels for the specified mode and preset
     */
    public float[] getBrightnessArray(String mode, String preset) {
        return mBrightnessLevelsMap.get(mode + "_" + preset);
    public float[] getBrightnessArray(
            @AutomaticBrightnessController.AutomaticBrightnessMode int mode, int preset) {
        return mBrightnessLevelsMap.get(
                autoBrightnessModeToString(mode) + "_" + autoBrightnessPresetToString(preset));
    }

    @Override
@@ -247,6 +232,24 @@ public class DisplayBrightnessMappingConfig {
        }
    }

    /**
     * @param preset The brightness preset. Presets are used on devices that allow users to choose
     *               from a set of predefined options in display auto-brightness settings.
     * @return The string representing the preset
     */
    public static String autoBrightnessPresetToString(int preset) {
        return switch (preset) {
            case Settings.System.SCREEN_BRIGHTNESS_AUTOMATIC_DIM ->
                    AutoBrightnessSettingName.dim.getRawName();
            case Settings.System.SCREEN_BRIGHTNESS_AUTOMATIC_NORMAL ->
                    AutoBrightnessSettingName.normal.getRawName();
            case Settings.System.SCREEN_BRIGHTNESS_AUTOMATIC_BRIGHT ->
                    AutoBrightnessSettingName.bright.getRawName();
            default -> throw new IllegalArgumentException(
                    "Unknown auto-brightness preset value: " + preset);
        };
    }

    private float[] brightnessArrayIntToFloat(int[] brightnessInt,
            Spline backlightToBrightnessSpline) {
        float[] brightnessFloat = new float[brightnessInt.length];
Loading