1<?xml version="1.0" encoding="UTF-8"?>
2<!--
3    Copyright (C) 2020 The Android Open Source Project
4
5    Licensed under the Apache License, Version 2.0 (the "License");
6    you may not use this file except in compliance with the License.
7    You may obtain a copy of the License at
8
9         http://www.apache.org/licenses/LICENSE-2.0
10
11    Unless required by applicable law or agreed to in writing, software
12    distributed under the License is distributed on an "AS IS" BASIS,
13    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14    See the License for the specific language governing permissions and
15    limitations under the License.
16-->
17
18<!--
19    This defines the format of the XML file used to provide static configuration values
20    for the displays on a device.
21    It is parsed in com/android/server/display/DisplayDeviceConfig.java
22-->
23<xs:schema version="2.0"
24           elementFormDefault="qualified"
25           xmlns:xs="http://www.w3.org/2001/XMLSchema">
26    <xs:element name="displayConfiguration">
27        <xs:complexType>
28            <xs:sequence>
29                <xs:element type ="xs:string" name="name">
30                    <xs:annotation name="nullable"/>
31                    <xs:annotation name="final"/>
32                </xs:element>
33                <xs:element type="densityMapping" name="densityMapping" minOccurs="0" maxOccurs="1">
34                    <xs:annotation name="nullable"/>
35                    <xs:annotation name="final"/>
36                </xs:element>
37                <xs:element type="nitsMap" name="screenBrightnessMap">
38                    <xs:annotation name="nonnull"/>
39                    <xs:annotation name="final"/>
40                </xs:element>
41                <xs:element type="nonNegativeDecimal" name="screenBrightnessDefault">
42                    <xs:annotation name="nonnull"/>
43                    <xs:annotation name="final"/>
44                </xs:element>
45                <xs:element type="thermalThrottling" name="thermalThrottling">
46                    <xs:annotation name="nonnull"/>
47                    <xs:annotation name="final"/>
48                </xs:element>
49                <xs:element type="luxThrottling" name="luxThrottling" minOccurs="0"
50                            maxOccurs="1"/>
51                <xs:element type="highBrightnessMode" name="highBrightnessMode" minOccurs="0"
52                            maxOccurs="1"/>
53                <xs:element type="displayQuirks" name="quirks" minOccurs="0" maxOccurs="1"/>
54                <xs:element type="autoBrightness" name="autoBrightness" minOccurs="0"
55                            maxOccurs="1"/>
56                <xs:element type="refreshRateConfigs" name="refreshRate" minOccurs="0"
57                            maxOccurs="1"/>
58                <xs:element type="nonNegativeDecimal" name="screenBrightnessRampFastDecrease">
59                    <xs:annotation name="final"/>
60                </xs:element>
61                <xs:element type="nonNegativeDecimal" name="screenBrightnessRampFastIncrease">
62                    <xs:annotation name="final"/>
63                </xs:element>
64                <xs:element type="nonNegativeDecimal" name="screenBrightnessRampSlowDecrease">
65                    <xs:annotation name="final"/>
66                </xs:element>
67                <xs:element type="nonNegativeDecimal" name="screenBrightnessRampSlowIncrease">
68                    <xs:annotation name="final"/>
69                </xs:element>
70                <!-- Maximum time in milliseconds that a brightness increase animation
71                     can take. -->
72                <xs:element type="xs:nonNegativeInteger" name="screenBrightnessRampIncreaseMaxMillis">
73                    <xs:annotation name="final"/>
74                </xs:element>
75                <!-- Maximum time in milliseconds that a brightness decrease animation
76                     can take. -->
77                <xs:element type="xs:nonNegativeInteger" name="screenBrightnessRampDecreaseMaxMillis">
78                    <xs:annotation name="final"/>
79                </xs:element>
80                <xs:element type="sensorDetails" name="lightSensor">
81                    <xs:annotation name="final"/>
82                </xs:element>
83                <xs:element type="sensorDetails" name="screenOffBrightnessSensor">
84                    <xs:annotation name="final"/>
85                </xs:element>
86                <xs:element type="sensorDetails" name="proxSensor">
87                    <xs:annotation name="final"/>
88                </xs:element>
89
90                <!-- Length of the ambient light horizon used to calculate the long & short term
91                estimates of ambient light in milliseconds.-->
92                <xs:element type="xs:nonNegativeInteger" name="ambientLightHorizonLong">
93                    <xs:annotation name="final"/>
94                </xs:element>
95                <xs:element type="xs:nonNegativeInteger" name="ambientLightHorizonShort">
96                    <xs:annotation name="final"/>
97                </xs:element>
98
99                <!-- Set of thresholds that dictate the change needed for screen brightness
100                adaptations -->
101                <xs:element type="thresholds" name="displayBrightnessChangeThresholds">
102                    <xs:annotation name="nonnull"/>
103                    <xs:annotation name="final"/>
104                </xs:element>
105                <!-- Set of thresholds that dictate the change needed for ambient brightness
106                adaptations -->
107                <xs:element type="thresholds" name="ambientBrightnessChangeThresholds">
108                    <xs:annotation name="nonnull"/>
109                    <xs:annotation name="final"/>
110                </xs:element>
111                <!-- Set of thresholds that dictate the change needed for screen brightness
112                adaptations while in idle mode -->
113                <xs:element type="thresholds" name="displayBrightnessChangeThresholdsIdle" minOccurs="0" maxOccurs="1">
114                    <xs:annotation name="final"/>
115                </xs:element>
116                <!-- Set of thresholds that dictate the change needed for ambient brightness
117                adaptations while in idle mode -->
118                <xs:element type="thresholds" name="ambientBrightnessChangeThresholdsIdle" minOccurs="0" maxOccurs="1">
119                    <xs:annotation name="final"/>
120                </xs:element>
121                <!-- Table that translates sensor values from the screenOffBrightnessSensor
122                to lux values; -1 means the lux reading is not available. -->
123                <xs:element type="integer-array" name="screenOffBrightnessSensorValueToLux">
124                    <xs:annotation name="final"/>
125                </xs:element>
126                <!-- The version of the Universal Stylus Initiative
127                 (USI, https://universalstylus.org/) protocol supported by the display, if any. -->
128                <xs:element type="usiVersion" name="usiVersion">
129                    <xs:annotation name="final"/>
130                </xs:element>
131            </xs:sequence>
132        </xs:complexType>
133    </xs:element>
134
135    <!-- Type definitions -->
136    <xs:complexType name="displayQuirks">
137        <xs:sequence>
138            <xs:element name="quirk" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
139        </xs:sequence>
140    </xs:complexType>
141
142    <xs:complexType name="luxThrottling">
143        <xs:sequence>
144            <xs:element name="brightnessLimitMap" type="brightnessLimitMap"
145                        maxOccurs="unbounded">
146                <xs:annotation name="nonnull"/>
147                <xs:annotation name="final"/>
148            </xs:element>
149        </xs:sequence>
150    </xs:complexType>
151
152    <xs:complexType name="brightnessLimitMap">
153        <xs:sequence>
154            <xs:element name="type" type="PredefinedBrightnessLimitNames">
155                <xs:annotation name="nonnull"/>
156                <xs:annotation name="final"/>
157            </xs:element>
158            <!-- lux level from light sensor to screen brightness recommended max value map.
159            Screen brightness recommended max value is to highBrightnessMode.transitionPoint and must be below that -->
160            <xs:element name="map" type="nonNegativeFloatToFloatMap">
161                <xs:annotation name="nonnull"/>
162                <xs:annotation name="final"/>
163            </xs:element>
164        </xs:sequence>
165    </xs:complexType>
166
167    <!-- Predefined type names as defined by DisplayDeviceConfig.BrightnessLimitMapType -->
168    <xs:simpleType  name="PredefinedBrightnessLimitNames">
169        <xs:restriction base="xs:string">
170            <xs:enumeration value="default"/>
171            <xs:enumeration value="adaptive"/>
172        </xs:restriction>
173    </xs:simpleType>
174
175    <xs:complexType name="highBrightnessMode">
176        <xs:all>
177            <xs:element name="transitionPoint" type="nonNegativeDecimal" minOccurs="1"
178                        maxOccurs="1">
179                <xs:annotation name="nonnull"/>
180                <xs:annotation name="final"/>
181            </xs:element>
182            <xs:element name="minimumLux" type="nonNegativeDecimal" minOccurs="1" maxOccurs="1">
183                <xs:annotation name="nonnull"/>
184                <xs:annotation name="final"/>
185            </xs:element>
186            <xs:element name="timing" type="hbmTiming" minOccurs="1" maxOccurs="1"/>
187            <xs:element type="refreshRateRange" name="refreshRate" minOccurs="0" maxOccurs="1">
188                <xs:annotation name="nullable"/>
189                <xs:annotation name="final"/>
190            </xs:element>
191            <xs:element name="allowInLowPowerMode" type="xs:boolean" minOccurs="0" maxOccurs="1">
192                <xs:annotation name="nonnull"/>
193                <xs:annotation name="final"/>
194            </xs:element>
195            <!-- The minimum HDR video size at which high-brightness-mode is allowed to operate.
196                Default is 0.5 if not specified-->
197            <xs:element name="minimumHdrPercentOfScreen" type="nonNegativeDecimal"
198                        minOccurs="0" maxOccurs="1">
199                <xs:annotation name="nullable"/>
200                <xs:annotation name="final"/>
201            </xs:element>
202            <!-- This LUT specifies how to boost HDR brightness at given SDR brightness (nits). -->
203            <xs:element type="sdrHdrRatioMap" name="sdrHdrRatioMap" minOccurs="0" maxOccurs="1">
204                <xs:annotation name="nullable"/>
205                <xs:annotation name="final"/>
206            </xs:element>
207        </xs:all>
208        <xs:attribute name="enabled" type="xs:boolean" use="optional"/>
209    </xs:complexType>
210
211    <xs:complexType name="hbmTiming">
212        <xs:all>
213            <xs:element name="timeWindowSecs" type="xs:nonNegativeInteger" minOccurs="1"
214                        maxOccurs="1">
215                <xs:annotation name="nonnull"/>
216                <xs:annotation name="final"/>
217            </xs:element>
218            <xs:element name="timeMaxSecs" type="xs:nonNegativeInteger" minOccurs="1" maxOccurs="1">
219                <xs:annotation name="nonnull"/>
220                <xs:annotation name="final"/>
221            </xs:element>
222            <xs:element name="timeMinSecs" type="xs:nonNegativeInteger" minOccurs="1" maxOccurs="1">
223                <xs:annotation name="nonnull"/>
224                <xs:annotation name="final"/>
225            </xs:element>
226        </xs:all>
227    </xs:complexType>
228
229    <!-- Maps to PowerManager.THERMAL_STATUS_* values. -->
230    <xs:simpleType name="thermalStatus">
231        <xs:restriction base="xs:string">
232            <xs:enumeration value="none"/>
233            <xs:enumeration value="light"/>
234            <xs:enumeration value="moderate"/>
235            <xs:enumeration value="severe"/>
236            <xs:enumeration value="critical"/>
237            <xs:enumeration value="emergency"/>
238            <xs:enumeration value="shutdown"/>
239        </xs:restriction>
240    </xs:simpleType>
241
242    <xs:complexType name="thermalThrottling">
243        <xs:sequence>
244            <xs:element type="brightnessThrottlingMap" name="brightnessThrottlingMap" maxOccurs="unbounded">
245                <xs:annotation name="final"/>
246            </xs:element>
247            <xs:element type="refreshRateThrottlingMap" name="refreshRateThrottlingMap" maxOccurs="unbounded">
248                <xs:annotation name="final"/>
249            </xs:element>
250        </xs:sequence>
251    </xs:complexType>
252
253    <xs:complexType name="refreshRateThrottlingMap">
254        <xs:attribute name="id" type="xs:string" />
255        <xs:sequence>
256            <xs:element name="refreshRateThrottlingPoint" type="refreshRateThrottlingPoint" maxOccurs="unbounded">
257                <xs:annotation name="nonnull"/>
258                <xs:annotation name="final"/>
259            </xs:element>
260        </xs:sequence>
261    </xs:complexType>
262
263    <xs:complexType name="refreshRateThrottlingPoint">
264        <xs:sequence>
265            <xs:element type="thermalStatus" name="thermalStatus">
266                <xs:annotation name="nonnull"/>
267                <xs:annotation name="final"/>
268            </xs:element>
269            <xs:element type="refreshRateRange" name="refreshRateRange">
270                <xs:annotation name="nonnull"/>
271                <xs:annotation name="final"/>
272            </xs:element>
273        </xs:sequence>
274    </xs:complexType>
275
276    <xs:complexType name="brightnessThrottlingMap">
277        <xs:sequence>
278            <xs:element name="brightnessThrottlingPoint" type="brightnessThrottlingPoint" maxOccurs="unbounded" minOccurs="1">
279                <xs:annotation name="nonnull"/>
280                <xs:annotation name="final"/>
281            </xs:element>
282        </xs:sequence>
283        <xs:attribute name="id" type="xs:string"/>
284    </xs:complexType>
285
286    <xs:complexType name="brightnessThrottlingPoint">
287        <xs:sequence>
288            <xs:element type="thermalStatus" name="thermalStatus">
289                <xs:annotation name="nonnull"/>
290                <xs:annotation name="final"/>
291            </xs:element>
292            <xs:element type="nonNegativeDecimal" name="brightness">
293                <xs:annotation name="nonnull"/>
294                <xs:annotation name="final"/>
295            </xs:element>
296        </xs:sequence>
297    </xs:complexType>
298
299    <xs:complexType name="nitsMap">
300        <xs:sequence>
301            <xs:element name="point" type="point" maxOccurs="unbounded" minOccurs="2">
302                <xs:annotation name="nonnull"/>
303                <xs:annotation name="final"/>
304            </xs:element>
305        </xs:sequence>
306        <!-- valid value of interpolation if specified: linear -->
307        <xs:attribute name="interpolation" type="xs:string" use="optional"/>
308    </xs:complexType>
309
310    <xs:complexType name="point">
311        <xs:sequence>
312            <xs:element type="nonNegativeDecimal" name="value">
313                <xs:annotation name="nonnull"/>
314                <xs:annotation name="final"/>
315            </xs:element>
316            <xs:element type="nonNegativeDecimal" name="nits">
317                <xs:annotation name="nonnull"/>
318                <xs:annotation name="final"/>
319            </xs:element>
320        </xs:sequence>
321    </xs:complexType>
322
323    <xs:complexType name="sdrHdrRatioMap">
324        <xs:sequence>
325            <xs:element name="point" type="sdrHdrRatioPoint" maxOccurs="unbounded" minOccurs="2">
326                <xs:annotation name="nonnull"/>
327                <xs:annotation name="final"/>
328            </xs:element>
329        </xs:sequence>
330    </xs:complexType>
331
332    <xs:complexType name="sdrHdrRatioPoint">
333        <xs:sequence>
334            <xs:element type="nonNegativeDecimal" name="sdrNits">
335                <xs:annotation name="nonnull"/>
336                <xs:annotation name="final"/>
337            </xs:element>
338            <xs:element type="nonNegativeDecimal" name="hdrRatio">
339                <xs:annotation name="nonnull"/>
340                <xs:annotation name="final"/>
341            </xs:element>
342        </xs:sequence>
343    </xs:complexType>
344
345    <xs:simpleType name="nonNegativeDecimal">
346        <xs:restriction base="xs:decimal">
347            <xs:minInclusive value="0.0"/>
348        </xs:restriction>
349    </xs:simpleType>
350
351    <xs:complexType name="sensorDetails">
352        <xs:sequence>
353            <xs:element type="xs:string" name="type" minOccurs="0" maxOccurs="1">
354                <xs:annotation name="nullable"/>
355                <xs:annotation name="final"/>
356            </xs:element>
357            <xs:element type="xs:string" name="name" minOccurs="0" maxOccurs="1">
358                <xs:annotation name="nullable"/>
359                <xs:annotation name="final"/>
360            </xs:element>
361            <xs:element type="refreshRateRange" name="refreshRate" minOccurs="0" maxOccurs="1">
362                <xs:annotation name="nullable"/>
363                <xs:annotation name="final"/>
364            </xs:element>
365        </xs:sequence>
366    </xs:complexType>
367
368    <xs:complexType name="refreshRateRange">
369        <xs:sequence>
370            <xs:element type="xs:nonNegativeInteger" name="minimum" minOccurs="1" maxOccurs="1">
371                <xs:annotation name="final"/>
372            </xs:element>
373            <xs:element type="xs:nonNegativeInteger" name="maximum" minOccurs="1" maxOccurs="1">
374                <xs:annotation name="final"/>
375            </xs:element>
376        </xs:sequence>
377    </xs:complexType>
378
379    <xs:complexType name="densityMapping">
380        <xs:sequence>
381            <xs:element name="density" type="density" maxOccurs="unbounded" minOccurs="1">
382            </xs:element>
383        </xs:sequence>
384    </xs:complexType>
385
386    <xs:complexType name="density">
387        <xs:sequence>
388            <xs:element type="xs:nonNegativeInteger" name="width">
389                <xs:annotation name="nonnull"/>
390                <xs:annotation name="final"/>
391            </xs:element>
392            <xs:element type="xs:nonNegativeInteger" name="height">
393                <xs:annotation name="nonnull"/>
394                <xs:annotation name="final"/>
395            </xs:element>
396            <xs:element type="xs:nonNegativeInteger" name="density">
397                <xs:annotation name="nonnull"/>
398                <xs:annotation name="final"/>
399            </xs:element>
400        </xs:sequence>
401    </xs:complexType>
402
403    <!-- Thresholds for brightness changes. -->
404    <xs:complexType name="thresholds">
405        <xs:sequence>
406            <!-- Brightening thresholds for active screen brightness mode. -->
407            <xs:element name="brighteningThresholds" type="brightnessThresholds" minOccurs="0"
408                        maxOccurs="1" >
409                <xs:annotation name="nonnull"/>
410                <xs:annotation name="final"/>
411            </xs:element>
412            <!-- Darkening thresholds for active screen brightness mode. -->
413            <xs:element name="darkeningThresholds" type="brightnessThresholds" minOccurs="0"
414                        maxOccurs="1" >
415                <xs:annotation name="nonnull"/>
416                <xs:annotation name="final"/>
417            </xs:element>
418        </xs:sequence>
419    </xs:complexType>
420
421    <!-- Brightening and darkening minimum change thresholds. -->
422    <xs:complexType name="brightnessThresholds">
423        <!-- Minimum brightness change needed. -->
424        <xs:element name="minimum" type="nonNegativeDecimal" minOccurs="0" maxOccurs="1" >
425            <xs:annotation name="nonnull"/>
426            <xs:annotation name="final"/>
427        </xs:element>
428        <xs:sequence>
429        <!--  Thresholds as tenths of percent of current brightness level, at each level of
430            brightness -->
431            <xs:element name="brightnessThresholdPoints" type="thresholdPoints" maxOccurs="1" minOccurs="0">
432                <xs:annotation name="final"/>
433            </xs:element>
434        </xs:sequence>
435    </xs:complexType>
436
437    <xs:complexType name="thresholdPoints">
438        <xs:sequence>
439            <xs:element type="thresholdPoint" name="brightnessThresholdPoint" maxOccurs="unbounded" minOccurs="1">
440                <xs:annotation name="nonnull"/>
441                <xs:annotation name="final"/>
442            </xs:element>
443        </xs:sequence>
444    </xs:complexType>
445
446    <xs:complexType name="thresholdPoint">
447        <xs:sequence>
448            <xs:element type="nonNegativeDecimal" name="threshold">
449                <xs:annotation name="nonnull"/>
450                <xs:annotation name="final"/>
451            </xs:element>
452            <xs:element type="nonNegativeDecimal" name="percentage">
453                <xs:annotation name="nonnull"/>
454                <xs:annotation name="final"/>
455            </xs:element>
456        </xs:sequence>
457    </xs:complexType>
458
459    <xs:complexType name="autoBrightness">
460        <xs:attribute name="enabled" type="xs:boolean" use="optional" default="true"/>
461        <xs:sequence>
462            <!-- Sets the debounce for autoBrightness brightening in millis-->
463            <xs:element name="brighteningLightDebounceMillis" type="xs:nonNegativeInteger"
464                        minOccurs="0" maxOccurs="1">
465                <xs:annotation name="final"/>
466            </xs:element>
467            <!-- Sets the debounce for autoBrightness darkening in millis-->
468            <xs:element name="darkeningLightDebounceMillis" type="xs:nonNegativeInteger"
469                        minOccurs="0" maxOccurs="1">
470                <xs:annotation name="final"/>
471            </xs:element>
472            <!-- Sets the brightness mapping of the desired screen brightness in nits to the
473             corresponding lux for the current display -->
474            <xs:element name="displayBrightnessMapping" type="displayBrightnessMapping"
475                        minOccurs="0" maxOccurs="1">
476                <xs:annotation name="final"/>
477            </xs:element>
478        </xs:sequence>
479    </xs:complexType>
480
481    <!-- Represents the brightness mapping of the desired screen brightness in nits to the
482             corresponding lux for the current display -->
483    <xs:complexType name="displayBrightnessMapping">
484        <xs:sequence>
485            <!-- Sets the list of display brightness points, each representing the desired screen
486            brightness in nits to the corresponding lux for the current display
487
488            The N entries of this array define N + 1 control points as follows:
489            (1-based arrays)
490
491            Point 1:            (0, nits[1]):             currentLux <= 0
492            Point 2:     (lux[1], nits[2]):       0 < currentLux <= lux[1]
493            Point 3:     (lux[2], nits[3]):  lux[2] < currentLux <= lux[3]
494            ...
495            Point N+1: (lux[N], nits[N+1]):            lux[N] < currentLux
496
497            The control points must be strictly increasing. Each control point
498            corresponds to an entry in the brightness backlight values arrays.
499            For example, if currentLux == lux[1] (first element of the levels array)
500            then the brightness will be determined by nits[2] (second element
501            of the brightness values array).
502            -->
503            <xs:element name="displayBrightnessPoint" type="displayBrightnessPoint"
504                        minOccurs="1" maxOccurs="unbounded">
505                <xs:annotation name="final"/>
506            </xs:element>
507        </xs:sequence>
508    </xs:complexType>
509
510    <!-- Represents a point in the display brightness mapping, representing the lux level from the
511    light sensor to the desired screen brightness in nits at this level  -->
512    <xs:complexType name="displayBrightnessPoint">
513        <xs:sequence>
514            <!-- The lux level from the light sensor. This must be a non-negative integer -->
515            <xs:element name="lux" type="xs:nonNegativeInteger"
516                        minOccurs="1" maxOccurs="1">
517                <xs:annotation name="final"/>
518            </xs:element>
519
520            <!-- Desired screen brightness in nits corresponding to the suggested lux values.
521             The display brightness is defined as the measured brightness of an all-white image.
522             This must be a non-negative integer -->
523            <xs:element name="nits" type="nonNegativeDecimal"
524                        minOccurs="1" maxOccurs="1">
525                <xs:annotation name="final"/>
526            </xs:element>
527        </xs:sequence>
528    </xs:complexType>
529
530    <xs:complexType name="refreshRateConfigs">
531        <xs:element name="defaultRefreshRate" type="xs:nonNegativeInteger"
532                    minOccurs="0" maxOccurs="1">
533            <xs:annotation name="final"/>
534        </xs:element>
535        <xs:element name="defaultPeakRefreshRate" type="xs:nonNegativeInteger"
536                    minOccurs="0" maxOccurs="1">
537            <xs:annotation name="final"/>
538        </xs:element>
539        <xs:element name="refreshRateZoneProfiles" type="refreshRateZoneProfiles"
540                    minOccurs="0" maxOccurs="1">
541            <xs:annotation name="final"/>
542        </xs:element>
543        <xs:element name="defaultRefreshRateInHbmHdr" type="xs:nonNegativeInteger"
544                    minOccurs="0" maxOccurs="1">
545            <xs:annotation name="final"/>
546        </xs:element>
547        <xs:element name="defaultRefreshRateInHbmSunlight" type="xs:nonNegativeInteger"
548                    minOccurs="0" maxOccurs="1">
549            <xs:annotation name="final"/>
550        </xs:element>
551        <xs:element name="lowerBlockingZoneConfigs" type="blockingZoneConfig"
552                    minOccurs="0" maxOccurs="1">
553            <xs:annotation name="final"/>
554        </xs:element>
555        <xs:element name="higherBlockingZoneConfigs" type="blockingZoneConfig"
556                    minOccurs="0" maxOccurs="1">
557            <xs:annotation name="final"/>
558        </xs:element>
559    </xs:complexType>
560
561    <xs:complexType name="refreshRateZoneProfiles">
562        <xs:sequence>
563            <xs:element name="refreshRateZoneProfile" type="refreshRateZone"
564                        minOccurs="0" maxOccurs="unbounded">
565                <xs:annotation name="final"/>
566            </xs:element>
567        </xs:sequence>
568    </xs:complexType>
569
570    <xs:complexType name="refreshRateZone">
571        <xs:attribute name="id" use="required" type="xs:string" />
572        <xs:element name="refreshRateRange" type="refreshRateRange">
573            <xs:annotation name="final"/>
574        </xs:element>
575    </xs:complexType>
576
577    <xs:complexType name="blockingZoneConfig">
578        <xs:element name="defaultRefreshRate" type="xs:nonNegativeInteger"
579                    minOccurs="1" maxOccurs="1">
580            <xs:annotation name="final"/>
581        </xs:element>
582        <xs:element type ="xs:string" name="refreshRateThermalThrottlingId">
583            <xs:annotation name="nullable"/>
584            <xs:annotation name="final"/>
585        </xs:element>
586        <xs:element name="blockingZoneThreshold" type="blockingZoneThreshold"
587                    minOccurs="1" maxOccurs="1">
588            <xs:annotation name="final"/>
589        </xs:element>
590    </xs:complexType>
591
592    <xs:complexType name="blockingZoneThreshold">
593        <xs:sequence>
594            <xs:element name="displayBrightnessPoint" type="displayBrightnessPoint"
595                        minOccurs="1" maxOccurs="unbounded">
596                <xs:annotation name="final"/>
597            </xs:element>
598        </xs:sequence>
599    </xs:complexType>
600
601    <xs:complexType name="integer-array">
602        <xs:sequence>
603            <xs:element name="item" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="unbounded"/>
604        </xs:sequence>
605    </xs:complexType>
606
607    <xs:complexType name="usiVersion">
608        <xs:element name="majorVersion" type="xs:nonNegativeInteger"
609                    minOccurs="1" maxOccurs="1">
610            <xs:annotation name="final"/>
611        </xs:element>
612        <xs:element name="minorVersion" type="xs:nonNegativeInteger"
613                    minOccurs="1" maxOccurs="1">
614            <xs:annotation name="final"/>
615        </xs:element>
616    </xs:complexType>
617
618    <!-- generic types -->
619    <xs:complexType name="nonNegativeFloatToFloatPoint">
620        <xs:sequence>
621            <xs:element name="first" type="nonNegativeDecimal">
622                <xs:annotation name="nonnull"/>
623                <xs:annotation name="final"/>
624            </xs:element>
625            <xs:element name="second" type="nonNegativeDecimal">
626                <xs:annotation name="nonnull"/>
627                <xs:annotation name="final"/>
628            </xs:element>
629        </xs:sequence>
630    </xs:complexType>
631
632    <xs:complexType name="nonNegativeFloatToFloatMap">
633        <xs:sequence>
634            <xs:element name="point" type="nonNegativeFloatToFloatPoint" maxOccurs="unbounded">
635                <xs:annotation name="nonnull"/>
636                <xs:annotation name="final"/>
637            </xs:element>
638        </xs:sequence>
639    </xs:complexType>
640</xs:schema>
641