| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| Copyright (C) 2020 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. |
| --> |
| |
| <!-- |
| This defines the format of the XML file used to provide static configuration values |
| for the displays on a device. |
| It is parsed in com/android/server/display/DisplayDeviceConfig.java |
| --> |
| <xs:schema version="2.0" |
| elementFormDefault="qualified" |
| xmlns:xs="http://www.w3.org/2001/XMLSchema"> |
| <xs:element name="displayConfiguration"> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element type ="xs:string" name="name"> |
| <xs:annotation name="nullable"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="densityMapping" name="densityMapping" minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="nullable"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="nitsMap" name="screenBrightnessMap"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="nonNegativeDecimal" name="screenBrightnessDefault"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="thermalThrottling" name="thermalThrottling" minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="powerThrottlingConfig" name="powerThrottlingConfig" minOccurs="0" |
| maxOccurs="1"/> |
| <xs:element type="luxThrottling" name="luxThrottling" minOccurs="0" |
| maxOccurs="1"/> |
| <xs:element type="highBrightnessMode" name="highBrightnessMode" minOccurs="0" |
| maxOccurs="1"/> |
| |
| <xs:element name="hdrBrightnessConfig" type="hdrBrightnessConfig" |
| minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="nullable"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| |
| <xs:element type="displayQuirks" name="quirks" minOccurs="0" maxOccurs="1"/> |
| <xs:element type="autoBrightness" name="autoBrightness" minOccurs="0" |
| maxOccurs="1"/> |
| <xs:element type="refreshRateConfigs" name="refreshRate" minOccurs="0" |
| maxOccurs="1"/> |
| <xs:element type="nonNegativeDecimal" name="screenBrightnessRampFastDecrease"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="nonNegativeDecimal" name="screenBrightnessRampFastIncrease"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="nonNegativeDecimal" name="screenBrightnessRampSlowDecrease"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="nonNegativeDecimal" name="screenBrightnessRampSlowIncrease"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Ramp speed used to decrease the screen brightness when in idle mode. |
| In framework brightness units per second. Must exist with |
| screenBrightnessRampSlowIncreaseIdle--> |
| <xs:element type="nonNegativeDecimal" name="screenBrightnessRampSlowDecreaseIdle"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Ramp speed used to decrease the screen brightness when in idle mode. |
| In framework brightness units per second. Must exist with |
| screenBrightnessRampSlowDecreaseIdle--> |
| <xs:element type="nonNegativeDecimal" name="screenBrightnessRampSlowIncreaseIdle"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Maximum time in milliseconds that a brightness increase animation |
| can take. --> |
| <xs:element type="xs:nonNegativeInteger" name="screenBrightnessRampIncreaseMaxMillis"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Maximum time in milliseconds that a brightness decrease animation |
| can take. --> |
| <xs:element type="xs:nonNegativeInteger" name="screenBrightnessRampDecreaseMaxMillis"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Maximum time in milliseconds that a brightness increase animation |
| can take in idle mode. --> |
| <xs:element type="xs:nonNegativeInteger" name="screenBrightnessRampIncreaseMaxIdleMillis"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Maximum time in milliseconds that a brightness decrease animation |
| can take in idle mode. --> |
| <xs:element type="xs:nonNegativeInteger" name="screenBrightnessRampDecreaseMaxIdleMillis"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="sensorDetails" name="lightSensor"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="sensorDetails" name="screenOffBrightnessSensor"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="sensorDetails" name="proxSensor" maxOccurs="2"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="sensorDetails" name="tempSensor"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| |
| <!-- Length of the ambient light horizon used to calculate the long & short term |
| estimates of ambient light in milliseconds.--> |
| <xs:element type="xs:nonNegativeInteger" name="ambientLightHorizonLong"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="xs:nonNegativeInteger" name="ambientLightHorizonShort"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| |
| <!-- Set of thresholds that dictate the change needed for screen brightness |
| adaptations --> |
| <xs:element type="thresholds" name="displayBrightnessChangeThresholds"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Set of thresholds that dictate the change needed for ambient brightness |
| adaptations --> |
| <xs:element type="thresholds" name="ambientBrightnessChangeThresholds"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Set of thresholds that dictate the change needed for screen brightness |
| adaptations while in idle mode --> |
| <xs:element type="thresholds" name="displayBrightnessChangeThresholdsIdle" minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Set of thresholds that dictate the change needed for ambient brightness |
| adaptations while in idle mode --> |
| <xs:element type="thresholds" name="ambientBrightnessChangeThresholdsIdle" minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Table that translates sensor values from the screenOffBrightnessSensor |
| to lux values; -1 means the lux reading is not available. --> |
| <xs:element type="integer-array" name="screenOffBrightnessSensorValueToLux"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- The version of the Universal Stylus Initiative |
| (USI, https://universalstylus.org/) protocol supported by the display, if any. --> |
| <xs:element type="usiVersion" name="usiVersion"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="evenDimmerMode" name="evenDimmer"> |
| <xs:attribute name="enabled" type="xs:boolean" use="optional"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Maximum screen brightness setting when screen brightness capped in |
| Wear Bedtime mode. This must be a non-negative decimal within the range defined by |
| the first and the last brightness value in screenBrightnessMap. --> |
| <xs:element type="nonNegativeDecimal" name="screenBrightnessCapForWearBedtimeMode"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Timeout after which we reduce the refresh rate if the screen has been idle, in order to save power. --> |
| <xs:element type="idleScreenRefreshRateTimeout" name="idleScreenRefreshRateTimeout" minOccurs="0"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="supportsVrr" type="xs:boolean" minOccurs="0"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Table that translates doze brightness sensor values to brightness values in |
| the float scale [0, 1]; -1 means the current brightness should be kept. |
| The following formula should be used for conversion between nits and the float |
| scale: float = (nits - minNits) / (maxNits - minNits). minNits and maxNits are |
| defined in screenBrightnessMap. --> |
| <xs:element type="float-array" name="dozeBrightnessSensorValueToBrightness"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- The default screen brightness in the scale [0, 1] to use while the device is |
| dozing. --> |
| <xs:element type="nonNegativeDecimal" name="defaultDozeBrightness"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| </xs:element> |
| |
| <!-- Type definitions --> |
| <xs:complexType name="displayQuirks"> |
| <xs:sequence> |
| <xs:element name="quirk" type="xs:string" minOccurs="0" maxOccurs="unbounded" /> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="luxThrottling"> |
| <xs:sequence> |
| <xs:element name="brightnessLimitMap" type="brightnessLimitMap" |
| maxOccurs="unbounded"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="brightnessLimitMap"> |
| <xs:sequence> |
| <xs:element name="type" type="PredefinedBrightnessLimitNames"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- lux level from light sensor to screen brightness recommended max value map. |
| Screen brightness recommended max value is to highBrightnessMode.transitionPoint and must be below that --> |
| <xs:element name="map" type="nonNegativeFloatToFloatMap"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <!-- Predefined type names as defined by DisplayDeviceConfig.BrightnessLimitMapType --> |
| <xs:simpleType name="PredefinedBrightnessLimitNames"> |
| <xs:restriction base="xs:string"> |
| <xs:enumeration value="default"/> |
| <xs:enumeration value="adaptive"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <xs:complexType name="evenDimmerMode"> |
| <xs:sequence> |
| <xs:element name="transitionPoint" type="nonNegativeDecimal" minOccurs="1" |
| maxOccurs="1"> |
| </xs:element> |
| <!-- Mapping of nits -> backlight -> brightness --> |
| <xs:element name="brightnessMapping" type="comprehensiveBrightnessMap" maxOccurs="1"> |
| </xs:element> |
| <!-- Mapping of current lux to minimum allowed nits values. --> |
| <xs:element name="luxToMinimumNitsMap" type="nitsMap" maxOccurs="1"> |
| </xs:element> |
| </xs:sequence> |
| <xs:attribute name="enabled" type="xs:boolean" use="optional"/> |
| </xs:complexType> |
| |
| <xs:complexType name="highBrightnessMode"> |
| <xs:all> |
| <xs:element name="transitionPoint" type="nonNegativeDecimal" minOccurs="1" |
| maxOccurs="1"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="minimumLux" type="nonNegativeDecimal" minOccurs="1" maxOccurs="1"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="timing" type="hbmTiming" minOccurs="1" maxOccurs="1"/> |
| <xs:element type="refreshRateRange" name="refreshRate" minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="nullable"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="allowInLowPowerMode" type="xs:boolean" minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- The minimum HDR video size at which high-brightness-mode is allowed to operate. |
| Default is 0.5 if not specified--> |
| <xs:element name="minimumHdrPercentOfScreen" type="nonNegativeDecimal" |
| minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="nullable"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- This LUT specifies how to boost HDR brightness at given SDR brightness (nits). --> |
| <xs:element type="sdrHdrRatioMap" name="sdrHdrRatioMap" minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="nullable"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:all> |
| <xs:attribute name="enabled" type="xs:boolean" use="optional"/> |
| </xs:complexType> |
| |
| <xs:complexType name="hbmTiming"> |
| <xs:all> |
| <xs:element name="timeWindowSecs" type="xs:nonNegativeInteger" minOccurs="1" |
| maxOccurs="1"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="timeMaxSecs" type="xs:nonNegativeInteger" minOccurs="1" maxOccurs="1"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="timeMinSecs" type="xs:nonNegativeInteger" minOccurs="1" maxOccurs="1"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:all> |
| </xs:complexType> |
| |
| <!-- brightness config for HDR content --> |
| <xs:complexType name="hdrBrightnessConfig"> |
| <!-- lux level from light sensor to screen brightness recommended max value map. --> |
| <xs:element name="brightnessMap" type="nonNegativeFloatToFloatMap"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Debounce for brightness increase in millis --> |
| <xs:element name="brightnessIncreaseDebounceMillis" type="xs:nonNegativeInteger"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Debounce for brightness decrease in millis --> |
| <xs:element name="brightnessDecreaseDebounceMillis" type="xs:nonNegativeInteger"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Animation speed for brightness increase. In framework brightness units per second. --> |
| <xs:element name="screenBrightnessRampIncrease" type="nonNegativeDecimal"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Animation speed for brightness decrease. In framework brightness units per second. --> |
| <xs:element name="screenBrightnessRampDecrease" type="nonNegativeDecimal"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| |
| <!-- The minimum HDR layer % at which hdr boost will be applied with transition point cap. |
| Should be lower or equal to minimumHdrPercentOfScreenForHbm. --> |
| <xs:element name="minimumHdrPercentOfScreenForNbm" type="nonNegativeDecimal" |
| minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="nullable"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- The minimum HDR layer size at which hdr boost will be applied. --> |
| <xs:element name="minimumHdrPercentOfScreenForHbm" type="nonNegativeDecimal" |
| minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="nullable"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- If hdr boost is allowed in low power mode. --> |
| <xs:element name="allowInLowPowerMode" type="xs:boolean" minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- sdrNits, hdrRatio This LUT specifies how to boost HDR brightness at given SDR brightness (nits). --> |
| <!-- sdr brightness to hdr boost ratio map |
| Format: first = sdrNits, second = hdrRatio. E.g. : |
| <sdrHdrRatioMap> |
| <point> |
| <first>2.0</first> // sdrNits |
| <second>4.0</second> // hdrRatio |
| </point> |
| .... |
| </sdrHdrRatioMap> |
| --> |
| <xs:element type="nonNegativeFloatToFloatMap" name="sdrHdrRatioMap" minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="nullable"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| |
| |
| </xs:complexType> |
| |
| <!-- Maps to PowerManager.THERMAL_STATUS_* values. --> |
| <xs:simpleType name="thermalStatus"> |
| <xs:restriction base="xs:string"> |
| <xs:enumeration value="none"/> |
| <xs:enumeration value="light"/> |
| <xs:enumeration value="moderate"/> |
| <xs:enumeration value="severe"/> |
| <xs:enumeration value="critical"/> |
| <xs:enumeration value="emergency"/> |
| <xs:enumeration value="shutdown"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <xs:complexType name="thermalThrottling"> |
| <xs:sequence> |
| <xs:element type="brightnessThrottlingMap" name="brightnessThrottlingMap" maxOccurs="unbounded"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="refreshRateThrottlingMap" name="refreshRateThrottlingMap" maxOccurs="unbounded"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="refreshRateThrottlingMap"> |
| <xs:attribute name="id" type="xs:string" /> |
| <xs:sequence> |
| <xs:element name="refreshRateThrottlingPoint" type="refreshRateThrottlingPoint" maxOccurs="unbounded"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="refreshRateThrottlingPoint"> |
| <xs:sequence> |
| <xs:element type="thermalStatus" name="thermalStatus"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="refreshRateRange" name="refreshRateRange"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="brightnessThrottlingMap"> |
| <xs:sequence> |
| <xs:element name="brightnessThrottlingPoint" type="brightnessThrottlingPoint" maxOccurs="unbounded" minOccurs="1"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| <xs:attribute name="id" type="xs:string"/> |
| </xs:complexType> |
| |
| <xs:complexType name="brightnessThrottlingPoint"> |
| <xs:sequence> |
| <xs:element type="thermalStatus" name="thermalStatus"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="nonNegativeDecimal" name="brightness"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="powerThrottlingMap"> |
| <xs:sequence> |
| <xs:element name="powerThrottlingPoint" type="powerThrottlingPoint" maxOccurs="unbounded" minOccurs="1"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| <xs:attribute name="id" type="xs:string"/> |
| </xs:complexType> |
| |
| <xs:complexType name="powerThrottlingPoint"> |
| <xs:sequence> |
| <xs:element type="thermalStatus" name="thermalStatus"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="nonNegativeDecimal" name="powerQuotaMilliWatts"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="powerThrottlingConfig"> |
| <xs:element type="nonNegativeDecimal" name="brightnessLowestCapAllowed"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="customAnimationRateSec" type="nonNegativeDecimal" minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="pollingWindowMaxMillis" type="xs:nonNegativeInteger"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="pollingWindowMinMillis" type="xs:nonNegativeInteger"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="powerThrottlingMap" name="powerThrottlingMap" maxOccurs="unbounded"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:complexType> |
| |
| <xs:complexType name="nitsMap"> |
| <xs:sequence> |
| <xs:element name="point" type="point" maxOccurs="unbounded" minOccurs="2"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| <!-- valid value of interpolation if specified: linear --> |
| <xs:attribute name="interpolation" type="xs:string" use="optional"/> |
| </xs:complexType> |
| |
| <xs:complexType name="point"> |
| <xs:sequence> |
| <xs:element type="nonNegativeDecimal" name="value"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="nonNegativeDecimal" name="nits"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="comprehensiveBrightnessMap"> |
| <xs:sequence> |
| <xs:element name="brightnessPoint" type="brightnessPoint" maxOccurs="unbounded" minOccurs="2"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| <!-- valid value of interpolation if specified: linear --> |
| <xs:attribute name="interpolation" type="xs:string" use="optional"/> |
| </xs:complexType> |
| |
| <xs:complexType name="brightnessPoint"> |
| <xs:sequence> |
| <xs:element type="nonNegativeDecimal" name="nits"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="nonNegativeDecimal" name="backlight"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="nonNegativeDecimal" name="brightness"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| |
| <xs:complexType name="sdrHdrRatioMap"> |
| <xs:sequence> |
| <xs:element name="point" type="sdrHdrRatioPoint" maxOccurs="unbounded" minOccurs="2"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="sdrHdrRatioPoint"> |
| <xs:sequence> |
| <xs:element type="nonNegativeDecimal" name="sdrNits"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="nonNegativeDecimal" name="hdrRatio"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:simpleType name="nonNegativeDecimal"> |
| <xs:restriction base="xs:decimal"> |
| <xs:minInclusive value="0.0"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <xs:complexType name="sensorDetails"> |
| <xs:attribute name="featureFlag" type="xs:string" use="optional"/> |
| <xs:sequence> |
| <xs:element type="xs:string" name="type" minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="nullable"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="xs:string" name="name" minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="nullable"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="refreshRateRange" name="refreshRate" minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="nullable"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- list of supported modes when sensor is ON. Each point corresponds to one mode. |
| Mode format is : first = refreshRate, second = vsyncRate. E.g. : |
| <supportedModes> |
| <point> |
| <first>60</first> // refreshRate |
| <second>60</second> //vsyncRate |
| </point> |
| .... |
| </supportedModes> |
| --> |
| <xs:element type="nonNegativeFloatToFloatMap" name="supportedModes" minOccurs="0"> |
| <xs:annotation name="nullable"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="refreshRateRange"> |
| <xs:sequence> |
| <xs:element type="xs:nonNegativeInteger" name="minimum" minOccurs="1" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="xs:nonNegativeInteger" name="maximum" minOccurs="1" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="densityMapping"> |
| <xs:sequence> |
| <xs:element name="density" type="density" maxOccurs="unbounded" minOccurs="1"> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="density"> |
| <xs:sequence> |
| <xs:element type="xs:nonNegativeInteger" name="width"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="xs:nonNegativeInteger" name="height"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="xs:nonNegativeInteger" name="density"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <!-- Thresholds for brightness changes. --> |
| <xs:complexType name="thresholds"> |
| <xs:sequence> |
| <!-- Brightening thresholds for active screen brightness mode. --> |
| <xs:element name="brighteningThresholds" type="brightnessThresholds" minOccurs="0" |
| maxOccurs="1" > |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Darkening thresholds for active screen brightness mode. --> |
| <xs:element name="darkeningThresholds" type="brightnessThresholds" minOccurs="0" |
| maxOccurs="1" > |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <!-- Brightening and darkening minimum change thresholds. --> |
| <xs:complexType name="brightnessThresholds"> |
| <!-- Minimum brightness change needed. --> |
| <xs:element name="minimum" type="nonNegativeDecimal" minOccurs="0" maxOccurs="1" > |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:sequence> |
| <!-- Thresholds as tenths of percent of current brightness level, at each level of |
| brightness --> |
| <xs:element name="brightnessThresholdPoints" type="thresholdPoints" maxOccurs="1" minOccurs="0"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="thresholdPoints"> |
| <xs:sequence> |
| <xs:element type="thresholdPoint" name="brightnessThresholdPoint" maxOccurs="unbounded" minOccurs="1"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="thresholdPoint"> |
| <xs:sequence> |
| <xs:element type="nonNegativeDecimal" name="threshold"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type="nonNegativeDecimal" name="percentage"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="autoBrightness"> |
| <xs:attribute name="enabled" type="xs:boolean" use="optional" default="true"/> |
| <xs:sequence> |
| <!-- Sets the debounce for autoBrightness brightening in millis --> |
| <xs:element name="brighteningLightDebounceMillis" type="xs:nonNegativeInteger" |
| minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Sets the debounce for autoBrightness darkening in millis --> |
| <xs:element name="darkeningLightDebounceMillis" type="xs:nonNegativeInteger" |
| minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Sets the debounce for autoBrightness brightening in millis while in idle mode --> |
| <xs:element name="brighteningLightDebounceIdleMillis" type="xs:nonNegativeInteger" |
| minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Sets the debounce for autoBrightness darkening in millis while in idle mode --> |
| <xs:element name="darkeningLightDebounceIdleMillis" type="xs:nonNegativeInteger" |
| minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- Sets the brightness mapping of the desired screen brightness to the corresponding |
| lux for the current display --> |
| <xs:element name="luxToBrightnessMapping" type="luxToBrightnessMapping" |
| minOccurs="0" maxOccurs="unbounded"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <!-- Sets the list of display brightness points, each representing the desired screen brightness |
| in a certain lux environment. |
| |
| The first value of each point is the lux value and the second value is the brightness value. |
| |
| The first lux value must be 0. |
| |
| The control points must be strictly increasing. |
| |
| Example: if currentLux == the second lux value in the mapping then the brightness will be |
| determined by the second brightness value in the mapping. Spline interpolation is used |
| to determine the auto-brightness values for lux levels between these control points. |
| |
| The brightness values must be non-negative decimals within the range between the first and |
| the last brightness values in screenBrightnessMap. |
| |
| This is used in place of config_autoBrightnessLevels and config_autoBrightnessLcdBacklightValues |
| defined in the config XML resource. |
| |
| On devices that allow users to choose from a set of predefined options in display |
| auto-brightness settings, multiple mappings for different modes and settings can be defined. |
| |
| If no mode is specified, the mapping will be used for the default mode. |
| If no setting is specified, the mapping will be used for the normal brightness setting. |
| |
| If no mapping is defined for one of the settings, the mapping for the normal setting will be |
| used as a fallback. |
| --> |
| <xs:complexType name="luxToBrightnessMapping"> |
| <xs:element name="map" type="nonNegativeFloatToFloatMap"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="mode" type="AutoBrightnessModeName" minOccurs="0"/> |
| <xs:element name="setting" type="AutoBrightnessSettingName" minOccurs="0"/> |
| </xs:complexType> |
| |
| <!-- Represents a point in the display brightness mapping, representing the lux level from the |
| light sensor to the desired screen brightness in nits at this level --> |
| <xs:complexType name="displayBrightnessPoint"> |
| <xs:sequence> |
| <!-- The lux level from the light sensor. This must be a non-negative integer --> |
| <xs:element name="lux" type="xs:nonNegativeInteger" |
| minOccurs="1" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| |
| <!-- Desired screen brightness in nits corresponding to the suggested lux values. |
| The display brightness is defined as the measured brightness of an all-white image. |
| This must be a non-negative integer --> |
| <xs:element name="nits" type="nonNegativeDecimal" |
| minOccurs="1" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="refreshRateConfigs"> |
| <xs:element name="defaultRefreshRate" type="xs:nonNegativeInteger" |
| minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="defaultPeakRefreshRate" type="xs:nonNegativeInteger" |
| minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="refreshRateZoneProfiles" type="refreshRateZoneProfiles" |
| minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="defaultRefreshRateInHbmHdr" type="xs:nonNegativeInteger" |
| minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="defaultRefreshRateInHbmSunlight" type="xs:nonNegativeInteger" |
| minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="lowerBlockingZoneConfigs" type="blockingZoneConfig" |
| minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="higherBlockingZoneConfigs" type="blockingZoneConfig" |
| minOccurs="0" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <!-- list of supported modes for low power. Each point corresponds to one mode. |
| Mode format is : first = refreshRate, second = vsyncRate. E.g. : |
| <lowPowerSupportedModes> |
| <point> |
| <first>60</first> // refreshRate |
| <second>60</second> //vsyncRate |
| </point> |
| .... |
| </lowPowerSupportedModes> |
| --> |
| <xs:element type="nonNegativeFloatToFloatMap" name="lowPowerSupportedModes" minOccurs="0"> |
| <xs:annotation name="nullable"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:complexType> |
| |
| <xs:complexType name="refreshRateZoneProfiles"> |
| <xs:sequence> |
| <xs:element name="refreshRateZoneProfile" type="refreshRateZone" |
| minOccurs="0" maxOccurs="unbounded"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="refreshRateZone"> |
| <xs:attribute name="id" use="required" type="xs:string" /> |
| <xs:element name="refreshRateRange" type="refreshRateRange"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:complexType> |
| |
| <xs:complexType name="blockingZoneConfig"> |
| <!-- list of supported modes for blocking zone . Each point corresponds to one mode. |
| Supported only for lowerBlockingZoneConfigs |
| Mode format is : first = refreshRate, second = vsyncRate. E.g. : |
| <supportedModes> |
| <point> |
| <first>60</first> // refreshRate |
| <second>60</second> //vsyncRate |
| </point> |
| .... |
| </supportedModes> |
| --> |
| <xs:element type="nonNegativeFloatToFloatMap" name="supportedModes" minOccurs="0"> |
| <xs:annotation name="nullable"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="defaultRefreshRate" type="xs:nonNegativeInteger" |
| minOccurs="1" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element type ="xs:string" name="refreshRateThermalThrottlingId"> |
| <xs:annotation name="nullable"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="blockingZoneThreshold" type="blockingZoneThreshold" |
| minOccurs="1" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:complexType> |
| |
| <xs:complexType name="blockingZoneThreshold"> |
| <xs:sequence> |
| <xs:element name="displayBrightnessPoint" type="displayBrightnessPoint" |
| minOccurs="1" maxOccurs="unbounded"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="integer-array"> |
| <xs:sequence> |
| <xs:element name="item" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="unbounded"/> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="float-array"> |
| <xs:sequence> |
| <xs:element name="item" type="nonNegativeDecimal" minOccurs="0" maxOccurs="unbounded"/> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="usiVersion"> |
| <xs:element name="majorVersion" type="xs:nonNegativeInteger" |
| minOccurs="1" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="minorVersion" type="xs:nonNegativeInteger" |
| minOccurs="1" maxOccurs="1"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:complexType> |
| |
| <!-- generic types --> |
| <xs:complexType name="nonNegativeFloatToFloatPoint"> |
| <xs:sequence> |
| <xs:element name="first" type="nonNegativeDecimal"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="second" type="nonNegativeDecimal"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="nonNegativeFloatToFloatMap"> |
| <xs:sequence> |
| <xs:element name="point" type="nonNegativeFloatToFloatPoint" maxOccurs="unbounded"> |
| <xs:annotation name="nonnull"/> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <xs:complexType name="idleScreenRefreshRateTimeout"> |
| <xs:element name="luxThresholds" type="idleScreenRefreshRateTimeoutLuxThresholds" minOccurs="0"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:complexType> |
| |
| <!-- Lux based timeout after which we reduce the refresh rate if the screen has been idle, in order to save power. --> |
| <xs:complexType name="idleScreenRefreshRateTimeoutLuxThresholds"> |
| <xs:sequence> |
| <xs:element name="point" type="idleScreenRefreshRateTimeoutLuxThresholdPoint" maxOccurs="unbounded" /> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <!-- Represents a tuple of lux and timeout(in ms), which represents the timeout value for the lux in |
| the [luxValue, nextLuxValue (INF if missing)) --> |
| <xs:complexType name="idleScreenRefreshRateTimeoutLuxThresholdPoint"> |
| <xs:element name="lux" type="xs:nonNegativeInteger"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| <xs:element name="timeout" type="xs:nonNegativeInteger"> |
| <xs:annotation name="final"/> |
| </xs:element> |
| </xs:complexType> |
| |
| <!-- Predefined type names as defined by |
| AutomaticBrightnessController.AutomaticBrightnessMode --> |
| <xs:simpleType name="AutoBrightnessModeName"> |
| <xs:restriction base="xs:string"> |
| <xs:enumeration value="default"/> |
| <xs:enumeration value="idle"/> |
| <xs:enumeration value="doze"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <!-- Predefined auto-brighntess settings --> |
| <xs:simpleType name="AutoBrightnessSettingName"> |
| <xs:restriction base="xs:string"> |
| <xs:enumeration value="dim"/> |
| <xs:enumeration value="normal"/> |
| <xs:enumeration value="bright"/> |
| </xs:restriction> |
| </xs:simpleType> |
| </xs:schema> |