<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2016, 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">

    <!-- Whether a software navigation bar should be shown. NOTE: in the future this may be
         autodetected from the Configuration. -->
    <bool name="config_showNavigationBar">true</bool>

    <!-- Indicate whether closing the lid causes the device to go to sleep and opening
         it causes the device to wake up.
         The default is false. -->
    <bool name="config_lidControlsSleep">true</bool>

    <!-- List of regexpressions describing the interface (if any) that represent tetherable
         Wifi interfaces.  If the device doesn't want to support tethering over Wifi this
         should be empty.  An example would be "softap.*" -->
    <string-array translatable="false" name="config_tether_wifi_regexs">
        <item>"wlan0"</item>
        <item>"softap.*"</item>
    </string-array>

    <!-- List of regexpressions describing the interface (if any) that represent tetherable
         Wifi P2P interfaces.  If the device doesn't want to support tethering over Wifi P2p this
         should be empty.  An example would be "p2p-p2p.*" -->
    <string-array translatable="false" name="config_tether_wifi_p2p_regexs">
        <item>"p2p-p2p\\d-.*"</item>
    </string-array>

    <!-- Enable doze mode
         ComponentName of a dream to show whenever the system would otherwise have gone to sleep. -->
    <string translatable="false" name="config_dozeComponent">com.android.systemui/com.android.systemui.doze.DozeService</string>

    <!-- Type of the ambient tap sensor. Empty if ambient tap is not supported. -->
    <string name="config_dozeTapSensorType" translatable="false">com.google.sensor.single_touch</string>

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

    <!-- 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>600.0</item>          <!--  10000+ -->
    </array>

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

    <!-- Screen brightness when dozing. -->
    <integer name="config_screenBrightnessDoze">34</integer>

    <!-- Whether the always on display mode is available. -->
    <bool name="config_dozeAlwaysOnDisplayAvailable">true</bool>

    <!-- Disable AOD by default -->
    <bool name="config_dozeAlwaysOnEnabled">false</bool>

    <!-- True if the display hardware only has brightness buckets rather than a full range of
         backlight values -->
    <bool name="config_displayBrightnessBucketsInDoze">true</bool>

    <!-- Default screen brightness for VR setting. Target default value: 0x0BB for EVT1.1. -->
    <!-- 8 bit brightness level of 6 corresponds to the 10 bit brightness level of 0x0B6,
         8 bit brightness level of 7 corresponds to the 10 bit brightness level of 0x0C1 on EVT1.1. -->
    <integer name="config_screenBrightnessForVrSettingDefault">7</integer>
    <integer name="config_screenBrightnessForVrSettingMinimum">6</integer>
    <integer name="config_screenBrightnessForVrSettingMaximum">7</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.29019607843</item>

    <!-- An array describing the screen's backlight values corresponding to the brightness
         values in the config_screenBrightnessNits array.

         This array should be equal in size to config_screenBrightnessBacklight. -->
    <integer-array name="config_screenBrightnessBacklight">
        <item>1</item>
        <item>255</item>
    </integer-array>

    <!-- An array of floats describing the screen brightness in nits corresponding to the backlight
         values in the config_screenBrightnessBacklight array.  On OLED displays these  values
         should be measured with an all white image while the display is in the fully on state.
         Note that this value should *not* reflect the maximum brightness value for any high
         brightness modes but only the maximum brightness value obtainable in a sustainable manner.

         This array should be equal in size to config_screenBrightnessBacklight -->
    <array name="config_screenBrightnessNits">
        <item>2.0</item>
        <item>500.0</item>
    </array>

    <!-- The nominal white coordinates, in CIE1931 XYZ color space, for Display White Balance to
         use in its calculations. AWB will adapt this white point to the target ambient white
         point. The array must include a total of 3 float values (X, Y, Z) -->
    <string-array name="config_displayWhiteBalanceDisplayNominalWhite">
        <!-- Nominal White X --> <item>0.950352</item>
        <!-- Nominal White Y --> <item>1.0     </item>
        <!-- Nominal White Z --> <item>1.089366</item>
    </string-array>

    <!-- The default refresh rate. Redfin 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>

    <!-- Shutdown if the battery temperature exceeds (this value * 0.1) Celsius. -->
    <integer name="config_shutdownBatteryTemperature">600</integer>

    <!-- Whether or not we should show the option to show battery percentage -->
    <bool name="config_battery_percentage_setting_available">true</bool>

    <!-- Whether or not wcg mode should be enabled on this device -->
    <bool name="config_enableWcgMode">true</bool>

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

    <!-- An array of device capabilities defined by GSMA SGP.22 v2.2.2, and their corresponding major
     version. -->
     <string-array translatable="false" name="config_telephonyEuiccDeviceCapabilities">
          <item>"gsm,9"</item>
          <item>"utran,9"</item>
          <item>"cdma1x,1"</item>
          <item>"hrpd,3"</item>
          <item>"ehrpd,12"</item>
          <item>"eutran,15"</item>
          <item>"nrepc,15"</item>
          <item>"nr5gc,15"</item>
          <item>"eutran5gc,15"</item>
     </string-array>

    <!-- Display cutout configuration -->
    <string translatable="false" name="config_mainBuiltInDisplayCutout">
      <!-- The hole punch dimensions are this:
      M 42,77 a 39,39 0 1,0 78,0 a 39,39 0 1,0 -78,0
      but using a radius 40 circle for now to see the antialiasing.
      -->
        M 41,77 a 40,40 0 1 0 80,0 40,40 0 1 0 -80,0 Z

        @left
    </string>

    <string translatable="false" name="config_mainBuiltInDisplayCutoutRectApproximation">
        M 0.0,0.0
        h 136
        v 136
        h -136
        Z
        @left
    </string>

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

    <!-- Height of the status bar in portrait. The height should be
         Max((status bar content height + waterfall top size), top cutout size) -->
    <dimen name="status_bar_height_portrait">145px</dimen>
    <dimen name="status_bar_height_landscape">28dp</dimen>
    <!-- Height of area above QQS where battery/time go (equal to status bar) -->
    <dimen name="quick_qs_offset_height">145px</dimen>

    <!-- 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>10</item> <!-- 33% UI brightness -->
        <item>14</item> <!-- 40% UI brightness -->
    </integer-array>
    <integer-array name="config_ambientThresholdsOfPeakRefreshRate">
        <item>-1</item>
        <item>20</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>255</item> <!-- 100% UI 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>
</resources>
