<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2021, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
**     http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <!-- Indicate whether to allow the device to suspend when the screen is off
         due to the proximity sensor.  This resource should only be set to true
         if the sensor HAL correctly handles the proximity sensor as a wake-up source.
         Otherwise, the device may fail to wake out of suspend reliably.
         The default is false. -->
    <bool name="config_suspendWhenScreenOffDueToProximity">true</bool>

    <!-- Flag indicating whether the we should enable the automatic brightness in Settings.
         Software implementation will be used if config_hardware_auto_brightness_available is not set -->
    <bool name="config_automatic_brightness_available">true</bool>

    <!-- Minimum screen brightness allowed by the power manager. -->
    <integer name="config_screenBrightnessDim">6</integer>

    <!-- Minimum screen brightness setting allowed by power manager.
         The user is forbidden from setting the brightness below this level.  -->
    <item name="config_screenBrightnessSettingMinimumFloat" format="float" type="dimen">0.0</item>

    <!-- Maximum screen brightness allowed by the power manager.
         The user is forbidden from setting the brightness above this level. -->
    <item name="config_screenBrightnessSettingMaximumFloat" format="float" type="dimen">1.0</item>

    <!-- Default screen brightness setting
         Must be in the range specified by minimum and maximum. -->
    <item name="config_screenBrightnessSettingDefaultFloat" format="float" type="dimen">0.17429718</item>

    <!-- The default refresh rate. Pixel 6 manages this using the peak refresh rate setting, so set
         this value to 0 so it has no effect. -->
    <integer name="config_defaultRefreshRate">0</integer>

    <!-- The default peak refresh rate. -->
    <integer name="config_defaultPeakRefreshRate">90</integer>

    <!-- Nonlinear coefficients for maximum panel brightness of 500 nits -->
    <string-array name="config_reduceBrightColorsCoefficientsNonlinear">
        <!-- a-coefficient --> <item>-0.4553233597</item>
        <!-- b-coefficient --> <item>-0.2380196976</item>
        <!-- y-intercept --> <item>0.9801096801</item>
    </string-array>

    <!-- Linear coefficients for maximum panel brightness of 500 nits -->
    <string-array name="config_reduceBrightColorsCoefficients">
        <!-- a-coefficient --> <item>0.0</item>
        <!-- b-coefficient --> <item>-0.96</item>
        <!-- y-intercept --> <item>1.0</item>
    </string-array>

    <!-- Whether the display cutout region of the main built-in display should be forced to
        black in software (to avoid aliasing or emulate a cutout that is not physically existent).
    -->
    <bool name="config_fillMainBuiltInDisplayCutout">true</bool>

    <!-- Display cutout configuration -->
    <string translatable="false" name="config_mainBuiltInDisplayCutout">
        M 507,64
        a 33,33 0 1 0 66,0 33,33 0 1 0 -66,0
        Z
        @left
    </string>

    <string translatable="false" name="config_mainBuiltInDisplayCutoutRectApproximation">
        M 492,0
        h 124
        v 118
        h -124
        Z
        @left
    </string>

    <!-- Radius of the software rounded corners. -->
    <dimen name="rounded_corner_radius">28px</dimen>

    <!-- Height of the status bar.
         Do not read this dimen directly. Use {@link SystemBarUtils#getStatusBarHeight} instead.
         -->
    <dimen name="status_bar_height_height">74px</dimen>

    <!-- Adjustment for software rounded corners since corners aren't perfectly round. -->
    <dimen name="rounded_corner_radius_adjustment">5px</dimen>

    <!-- Array of light sensor LUX values to define our levels for auto backlight brightness support.
      The N entries of this array define N  1 zones as follows:
         Zone 0:        0 <= LUX < array[0]
         Zone 1:        array[0] <= LUX < array[1]
         ...
         Zone N:        array[N - 1] <= LUX < array[N]
         Zone N + 1     array[N] <= LUX < infinity
         Must be overridden in platform specific overlays -->
    <integer-array name="config_autoBrightnessLevels">
        <item>1</item>
        <item>2</item>
        <item>3</item>
        <item>4</item>
        <item>8</item>
        <item>12</item>
        <item>20</item>
        <item>33</item>
        <item>55</item>
        <item>90</item>
        <item>148</item>
        <item>245</item>
        <item>403</item>
        <item>665</item>
        <item>1097</item>
        <item>1808</item>
        <item>2981</item>
        <item>5000</item>
        <item>10000</item>
        <item>20000</item>
    </integer-array>

    <!-- Array of desired screen brightness in nits corresponding to the lux values
      in the config_autoBrightnessLevels array. As with config_screenBrightnessMinimumNits and
      config_screenBrightnessMaximumNits, the display brightness is defined as the measured
      brightness of an all-white image.

      If this is defined then:
      - config_autoBrightnessLcdBacklightValues should not be defined
      - config_screenBrightnessNits must be defined
      - config_screenBrightnessBacklight must be defined

      This array should have size one greater than the size of the config_autoBrightnessLevels
      array. The brightness values must be non-negative and non-decreasing. This must be
      overridden in platform specific overlays -->
    <array name="config_autoBrightnessDisplayValuesNits">
      <item>5.139055</item>       <!--  0 - 1 -->
      <item>9.962018965</item>    <!--  1 - 2 -->
      <item>18.34822964</item>    <!--  2 - 3 -->
      <item>21.55068128</item>    <!--  3 - 4 -->
      <item>24.0167788</item>     <!--  4 - 8 -->
      <item>30.62162162</item>    <!--  8 - 12 -->
      <item>35.09486396</item>    <!--  12 - 20 -->
      <item>41.2249643</item>     <!--  20 - 33 -->
      <item>47.6760716</item>     <!--  33 - 55 -->
      <item>55.73002427</item>    <!--  55 - 90 -->
      <item>66.24126116</item>    <!--  90 - 148 -->
      <item>79.67614115</item>    <!--  148 - 245 -->
      <item>98.04727274</item>    <!--  245 - 403 -->
      <item>125.1221991</item>    <!--  403 - 665 -->
      <item>161.6875093</item>    <!--  665 - 1097 -->
      <item>208.4885553</item>    <!--  1097 - 1808 -->
      <item>264.8221315</item>    <!--  1808 - 2981 -->
      <item>327.8974352</item>    <!--  2981 - 5000 -->
      <item>401.1676739</item>    <!--  5000 - 10000 -->
      <item>750.0</item>          <!--  10000 -20000 -->
      <item>900.0</item>          <!--  20000+ -->
    </array>

    <!-- Stability requirements in milliseconds for accepting a new brightness level.  This is used
         for debouncing the light sensor.  Different constants are used to debounce the light sensor
         when adapting to brighter or darker environments.  This parameter controls how quickly
         brightness changes occur in response to an observed change in light level that exceeds the
         hysteresis threshold. -->
    <integer name="config_autoBrightnessBrighteningLightDebounce">2000</integer>
    <integer name="config_autoBrightnessDarkeningLightDebounce">4000</integer>

    <!-- Type of the udfps long press sensor. Empty if long press is not supported. -->
    <string name="config_dozeUdfpsLongPressSensorType" translatable="false">com.google.sensor.long_press</string>

    <!-- MMS user agent string -->
    <string name="config_mms_user_agent" translatable="false">gb7n6</string>
    <!-- MMS user agent profile url -->
    <string name="config_mms_user_agent_profile_url" translatable="false">http://www.gstatic.com/android/sms/GB7N6.xml</string>

    <!-- Type of the quick pickup sensor. Empty if quick pickup is not supported. -->
    <string name="config_quickPickupSensorType" translatable="false">com.google.sensor.quick_pickup</string>

    <!-- Not allow to switch to higher refresh rate when display brightness setting is
         equal or less than this value -->
    <integer-array name="config_brightnessThresholdsOfPeakRefreshRate">
        <item>7</item> <!-- 33% UI brightness -->
        <item>11</item> <!-- 45% UI brightness -->
    </integer-array>
    <integer-array name="config_ambientThresholdsOfPeakRefreshRate">
        <item>-1</item>
        <item>30</item>
    </integer-array>

    <!-- default refresh rate in the zone defined by birghtness and ambient thresholds -->
    <integer name="config_defaultRefreshRateInZone">90</integer>

    <!-- Switch to fixed refresh rate when display brightness setting is
         equal or more than this value -->
    <integer-array name="config_highDisplayBrightnessThresholdsOfFixedRefreshRate">
        <item>158</item> <!--100% UI normal brightness -->
    </integer-array>

    <integer-array name="config_highAmbientBrightnessThresholdsOfFixedRefreshRate">
        <item>50000</item>
    </integer-array>

    <!-- default refresh rate in the high zone defined by birghtness and ambient thresholds -->
    <integer name="config_fixedRefreshRateInHighZone">60</integer>

    <!-- Default refresh rate while the device has high brightness mode enabled for HDR. -->
    <integer name="config_defaultRefreshRateInHbmHdr">60</integer>

    <!-- How long it takes for the HW to start illuminating after the illumination is requested.
      It takes 3 frames to enable the Local High-Brightness Mode (LHBM), which at 90 Hz screen
      refresh rate equates to a 34 ms delay. -->
    <integer name="config_udfps_illumination_transition_ms">34</integer>

    <!-- The max vibration strength allowed in audio haptic channels. -->
    <item name="config_hapticChannelMaxVibrationAmplitude" format="float" type="dimen">0.3</item>

    <!-- The duration (in milliseconds) that should be applied to waveform vibrations that ends in
         non-zero amplitudes, to bring the vibrator amplitude down to zero using this timing. -->
    <integer name="config_vibrationWaveformRampDownDuration">50</integer>

    <!-- the number of the max cached processes in the system. -->
    <integer name="config_customizedMaxCachedProcesses">64</integer>
</resources>
