<?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>

    <!-- 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 506,68
        a 34,34 0 1 0 68,0 34,34 0 1 0 -68,0
        Z
        @left
    </string>

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

    <!-- 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>1100.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>

    <!-- The default refresh rate. We manage this using the peak refresh rate setting. 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>

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

    <!-- 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>

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