1 #ifndef COM_ANDROID_SERVER_DISPLAY_CONFIG_H 2 #define COM_ANDROID_SERVER_DISPLAY_CONFIG_H 3 4 #include <array> 5 #include <map> 6 #include <optional> 7 #include <string> 8 #include <vector> 9 #include <sstream> 10 11 #if __has_include(<libxml/parser.h>) 12 #include <libxml/parser.h> 13 #include <libxml/xinclude.h> 14 #else 15 #error Require libxml2 library. Please add libxml2 to shared_libs or static_libs 16 #endif 17 18 #include "com_android_server_display_config_enums.h" 19 20 namespace com { 21 namespace android { 22 namespace server { 23 namespace display { 24 namespace config { 25 class DisplayQuirks; 26 class LuxThrottling; 27 class BrightnessLimitMap; 28 class EvenDimmerMode; 29 class HighBrightnessMode; 30 class HbmTiming; 31 class HdrBrightnessConfig; 32 class ThermalThrottling; 33 class RefreshRateThrottlingMap; 34 class RefreshRateThrottlingPoint; 35 class BrightnessThrottlingMap; 36 class BrightnessThrottlingPoint; 37 class PowerThrottlingMap; 38 class PowerThrottlingPoint; 39 class PowerThrottlingConfig; 40 class NitsMap; 41 class Point; 42 class ComprehensiveBrightnessMap; 43 class BrightnessPoint; 44 class SdrHdrRatioMap; 45 class SdrHdrRatioPoint; 46 class SensorDetails; 47 class RefreshRateRange; 48 class DensityMapping; 49 class Density; 50 class Thresholds; 51 class BrightnessThresholds; 52 class ThresholdPoints; 53 class ThresholdPoint; 54 class AutoBrightness; 55 class LuxToBrightnessMapping; 56 class DisplayBrightnessPoint; 57 class RefreshRateConfigs; 58 class RefreshRateZoneProfiles; 59 class RefreshRateZone; 60 class BlockingZoneConfig; 61 class BlockingZoneThreshold; 62 class IntegerArray; 63 class FloatArray; 64 class UsiVersion; 65 class NonNegativeFloatToFloatPoint; 66 class NonNegativeFloatToFloatMap; 67 class IdleScreenRefreshRateTimeout; 68 class IdleScreenRefreshRateTimeoutLuxThresholds; 69 class IdleScreenRefreshRateTimeoutLuxThresholdPoint; 70 class DisplayConfiguration; 71 std::optional<DisplayConfiguration> read(const char* configFile); 72 73 std::optional<DisplayConfiguration> parse(const char* xml); 74 75 class DisplayQuirks { 76 private: 77 const std::vector<std::string> quirk_; 78 public: 79 explicit DisplayQuirks(std::vector<std::string> quirk); 80 const std::vector<std::string>& getQuirk() const; 81 bool hasQuirk() const; 82 const std::string* getFirstQuirk() const; 83 static DisplayQuirks read(xmlNode *root); 84 }; 85 86 class LuxThrottling { 87 private: 88 const std::vector<BrightnessLimitMap> brightnessLimitMap_; 89 public: 90 explicit LuxThrottling(std::vector<BrightnessLimitMap> brightnessLimitMap); 91 const std::vector<BrightnessLimitMap>& getBrightnessLimitMap() const; 92 bool hasBrightnessLimitMap() const; 93 const BrightnessLimitMap* getFirstBrightnessLimitMap() const; 94 static LuxThrottling read(xmlNode *root); 95 }; 96 97 class BrightnessLimitMap { 98 private: 99 const std::optional<PredefinedBrightnessLimitNames> type_; 100 const std::vector<NonNegativeFloatToFloatMap> map_; 101 public: 102 BrightnessLimitMap(std::optional<PredefinedBrightnessLimitNames> type, std::vector<NonNegativeFloatToFloatMap> map); 103 const PredefinedBrightnessLimitNames& getType() const; 104 bool hasType() const; 105 const std::vector<NonNegativeFloatToFloatMap>& getMap() const; 106 bool hasMap() const; 107 const NonNegativeFloatToFloatMap* getFirstMap() const; 108 static BrightnessLimitMap read(xmlNode *root); 109 }; 110 111 class EvenDimmerMode { 112 private: 113 const std::optional<double> transitionPoint_; 114 const std::vector<ComprehensiveBrightnessMap> brightnessMapping_; 115 const std::vector<NitsMap> luxToMinimumNitsMap_; 116 const std::optional<bool> enabled_; 117 public: 118 EvenDimmerMode(std::optional<double> transitionPoint, std::vector<ComprehensiveBrightnessMap> brightnessMapping, std::vector<NitsMap> luxToMinimumNitsMap, std::optional<bool> enabled); 119 const double& getTransitionPoint() const; 120 bool hasTransitionPoint() const; 121 const std::vector<ComprehensiveBrightnessMap>& getBrightnessMapping() const; 122 bool hasBrightnessMapping() const; 123 const ComprehensiveBrightnessMap* getFirstBrightnessMapping() const; 124 const std::vector<NitsMap>& getLuxToMinimumNitsMap() const; 125 bool hasLuxToMinimumNitsMap() const; 126 const NitsMap* getFirstLuxToMinimumNitsMap() const; 127 const bool& getEnabled() const; 128 bool hasEnabled() const; 129 static EvenDimmerMode read(xmlNode *root); 130 }; 131 132 class HighBrightnessMode { 133 private: 134 const std::optional<double> transitionPoint_all_; 135 const std::optional<double> minimumLux_all_; 136 const std::vector<HbmTiming> timing_all_; 137 const std::vector<RefreshRateRange> refreshRate_all_; 138 const std::optional<bool> allowInLowPowerMode_all_; 139 const std::optional<double> minimumHdrPercentOfScreen_all_; 140 const std::vector<SdrHdrRatioMap> sdrHdrRatioMap_all_; 141 const std::optional<bool> enabled_; 142 public: 143 HighBrightnessMode(std::optional<double> transitionPoint_all, std::optional<double> minimumLux_all, std::vector<HbmTiming> timing_all, std::vector<RefreshRateRange> refreshRate_all, std::optional<bool> allowInLowPowerMode_all, std::optional<double> minimumHdrPercentOfScreen_all, std::vector<SdrHdrRatioMap> sdrHdrRatioMap_all, std::optional<bool> enabled); 144 const double& getTransitionPoint_all() const; 145 bool hasTransitionPoint_all() const; 146 const double& getMinimumLux_all() const; 147 bool hasMinimumLux_all() const; 148 const std::vector<HbmTiming>& getTiming_all() const; 149 bool hasTiming_all() const; 150 const HbmTiming* getFirstTiming_all() const; 151 const std::vector<RefreshRateRange>& getRefreshRate_all() const; 152 bool hasRefreshRate_all() const; 153 const RefreshRateRange* getFirstRefreshRate_all() const; 154 const bool& getAllowInLowPowerMode_all() const; 155 bool hasAllowInLowPowerMode_all() const; 156 const double& getMinimumHdrPercentOfScreen_all() const; 157 bool hasMinimumHdrPercentOfScreen_all() const; 158 const std::vector<SdrHdrRatioMap>& getSdrHdrRatioMap_all() const; 159 bool hasSdrHdrRatioMap_all() const; 160 const SdrHdrRatioMap* getFirstSdrHdrRatioMap_all() const; 161 const bool& getEnabled() const; 162 bool hasEnabled() const; 163 static HighBrightnessMode read(xmlNode *root); 164 }; 165 166 class HbmTiming { 167 private: 168 const std::optional<int64_t> timeWindowSecs_all_; 169 const std::optional<int64_t> timeMaxSecs_all_; 170 const std::optional<int64_t> timeMinSecs_all_; 171 public: 172 HbmTiming(std::optional<int64_t> timeWindowSecs_all, std::optional<int64_t> timeMaxSecs_all, std::optional<int64_t> timeMinSecs_all); 173 const int64_t& getTimeWindowSecs_all() const; 174 bool hasTimeWindowSecs_all() const; 175 const int64_t& getTimeMaxSecs_all() const; 176 bool hasTimeMaxSecs_all() const; 177 const int64_t& getTimeMinSecs_all() const; 178 bool hasTimeMinSecs_all() const; 179 static HbmTiming read(xmlNode *root); 180 }; 181 182 class HdrBrightnessConfig { 183 private: 184 const std::vector<NonNegativeFloatToFloatMap> brightnessMap_; 185 const std::optional<int64_t> brightnessIncreaseDebounceMillis_; 186 const std::optional<int64_t> brightnessDecreaseDebounceMillis_; 187 const std::optional<double> screenBrightnessRampIncrease_; 188 const std::optional<double> screenBrightnessRampDecrease_; 189 const std::optional<double> minimumHdrPercentOfScreenForNbm_; 190 const std::optional<double> minimumHdrPercentOfScreenForHbm_; 191 const std::optional<bool> allowInLowPowerMode_; 192 const std::vector<NonNegativeFloatToFloatMap> sdrHdrRatioMap_; 193 public: 194 HdrBrightnessConfig(std::vector<NonNegativeFloatToFloatMap> brightnessMap, std::optional<int64_t> brightnessIncreaseDebounceMillis, std::optional<int64_t> brightnessDecreaseDebounceMillis, std::optional<double> screenBrightnessRampIncrease, std::optional<double> screenBrightnessRampDecrease, std::optional<double> minimumHdrPercentOfScreenForNbm, std::optional<double> minimumHdrPercentOfScreenForHbm, std::optional<bool> allowInLowPowerMode, std::vector<NonNegativeFloatToFloatMap> sdrHdrRatioMap); 195 const std::vector<NonNegativeFloatToFloatMap>& getBrightnessMap() const; 196 bool hasBrightnessMap() const; 197 const NonNegativeFloatToFloatMap* getFirstBrightnessMap() const; 198 const int64_t& getBrightnessIncreaseDebounceMillis() const; 199 bool hasBrightnessIncreaseDebounceMillis() const; 200 const int64_t& getBrightnessDecreaseDebounceMillis() const; 201 bool hasBrightnessDecreaseDebounceMillis() const; 202 const double& getScreenBrightnessRampIncrease() const; 203 bool hasScreenBrightnessRampIncrease() const; 204 const double& getScreenBrightnessRampDecrease() const; 205 bool hasScreenBrightnessRampDecrease() const; 206 const double& getMinimumHdrPercentOfScreenForNbm() const; 207 bool hasMinimumHdrPercentOfScreenForNbm() const; 208 const double& getMinimumHdrPercentOfScreenForHbm() const; 209 bool hasMinimumHdrPercentOfScreenForHbm() const; 210 const bool& getAllowInLowPowerMode() const; 211 bool hasAllowInLowPowerMode() const; 212 const std::vector<NonNegativeFloatToFloatMap>& getSdrHdrRatioMap() const; 213 bool hasSdrHdrRatioMap() const; 214 const NonNegativeFloatToFloatMap* getFirstSdrHdrRatioMap() const; 215 static HdrBrightnessConfig read(xmlNode *root); 216 }; 217 218 class ThermalThrottling { 219 private: 220 const std::vector<BrightnessThrottlingMap> brightnessThrottlingMap_; 221 const std::vector<RefreshRateThrottlingMap> refreshRateThrottlingMap_; 222 public: 223 ThermalThrottling(std::vector<BrightnessThrottlingMap> brightnessThrottlingMap, std::vector<RefreshRateThrottlingMap> refreshRateThrottlingMap); 224 const std::vector<BrightnessThrottlingMap>& getBrightnessThrottlingMap() const; 225 bool hasBrightnessThrottlingMap() const; 226 const BrightnessThrottlingMap* getFirstBrightnessThrottlingMap() const; 227 const std::vector<RefreshRateThrottlingMap>& getRefreshRateThrottlingMap() const; 228 bool hasRefreshRateThrottlingMap() const; 229 const RefreshRateThrottlingMap* getFirstRefreshRateThrottlingMap() const; 230 static ThermalThrottling read(xmlNode *root); 231 }; 232 233 class RefreshRateThrottlingMap { 234 private: 235 const std::vector<RefreshRateThrottlingPoint> refreshRateThrottlingPoint_; 236 const std::optional<std::string> id_; 237 public: 238 RefreshRateThrottlingMap(std::vector<RefreshRateThrottlingPoint> refreshRateThrottlingPoint, std::optional<std::string> id); 239 const std::vector<RefreshRateThrottlingPoint>& getRefreshRateThrottlingPoint() const; 240 bool hasRefreshRateThrottlingPoint() const; 241 const RefreshRateThrottlingPoint* getFirstRefreshRateThrottlingPoint() const; 242 const std::string& getId() const; 243 bool hasId() const; 244 static RefreshRateThrottlingMap read(xmlNode *root); 245 }; 246 247 class RefreshRateThrottlingPoint { 248 private: 249 const std::optional<ThermalStatus> thermalStatus_; 250 const std::vector<RefreshRateRange> refreshRateRange_; 251 public: 252 RefreshRateThrottlingPoint(std::optional<ThermalStatus> thermalStatus, std::vector<RefreshRateRange> refreshRateRange); 253 const ThermalStatus& getThermalStatus() const; 254 bool hasThermalStatus() const; 255 const std::vector<RefreshRateRange>& getRefreshRateRange() const; 256 bool hasRefreshRateRange() const; 257 const RefreshRateRange* getFirstRefreshRateRange() const; 258 static RefreshRateThrottlingPoint read(xmlNode *root); 259 }; 260 261 class BrightnessThrottlingMap { 262 private: 263 const std::vector<BrightnessThrottlingPoint> brightnessThrottlingPoint_; 264 const std::optional<std::string> id_; 265 public: 266 BrightnessThrottlingMap(std::vector<BrightnessThrottlingPoint> brightnessThrottlingPoint, std::optional<std::string> id); 267 const std::vector<BrightnessThrottlingPoint>& getBrightnessThrottlingPoint() const; 268 bool hasBrightnessThrottlingPoint() const; 269 const BrightnessThrottlingPoint* getFirstBrightnessThrottlingPoint() const; 270 const std::string& getId() const; 271 bool hasId() const; 272 static BrightnessThrottlingMap read(xmlNode *root); 273 }; 274 275 class BrightnessThrottlingPoint { 276 private: 277 const std::optional<ThermalStatus> thermalStatus_; 278 const std::optional<double> brightness_; 279 public: 280 BrightnessThrottlingPoint(std::optional<ThermalStatus> thermalStatus, std::optional<double> brightness); 281 const ThermalStatus& getThermalStatus() const; 282 bool hasThermalStatus() const; 283 const double& getBrightness() const; 284 bool hasBrightness() const; 285 static BrightnessThrottlingPoint read(xmlNode *root); 286 }; 287 288 class PowerThrottlingMap { 289 private: 290 const std::vector<PowerThrottlingPoint> powerThrottlingPoint_; 291 const std::optional<std::string> id_; 292 public: 293 PowerThrottlingMap(std::vector<PowerThrottlingPoint> powerThrottlingPoint, std::optional<std::string> id); 294 const std::vector<PowerThrottlingPoint>& getPowerThrottlingPoint() const; 295 bool hasPowerThrottlingPoint() const; 296 const PowerThrottlingPoint* getFirstPowerThrottlingPoint() const; 297 const std::string& getId() const; 298 bool hasId() const; 299 static PowerThrottlingMap read(xmlNode *root); 300 }; 301 302 class PowerThrottlingPoint { 303 private: 304 const std::optional<ThermalStatus> thermalStatus_; 305 const std::optional<double> powerQuotaMilliWatts_; 306 public: 307 PowerThrottlingPoint(std::optional<ThermalStatus> thermalStatus, std::optional<double> powerQuotaMilliWatts); 308 const ThermalStatus& getThermalStatus() const; 309 bool hasThermalStatus() const; 310 const double& getPowerQuotaMilliWatts() const; 311 bool hasPowerQuotaMilliWatts() const; 312 static PowerThrottlingPoint read(xmlNode *root); 313 }; 314 315 class PowerThrottlingConfig { 316 private: 317 const std::optional<double> brightnessLowestCapAllowed_; 318 const std::optional<double> customAnimationRate_; 319 const std::optional<int64_t> pollingWindowMaxMillis_; 320 const std::optional<int64_t> pollingWindowMinMillis_; 321 const std::vector<PowerThrottlingMap> powerThrottlingMap_; 322 public: 323 PowerThrottlingConfig(std::optional<double> brightnessLowestCapAllowed, std::optional<double> customAnimationRate, std::optional<int64_t> pollingWindowMaxMillis, std::optional<int64_t> pollingWindowMinMillis, std::vector<PowerThrottlingMap> powerThrottlingMap); 324 const double& getBrightnessLowestCapAllowed() const; 325 bool hasBrightnessLowestCapAllowed() const; 326 const double& getCustomAnimationRate() const; 327 bool hasCustomAnimationRate() const; 328 const int64_t& getPollingWindowMaxMillis() const; 329 bool hasPollingWindowMaxMillis() const; 330 const int64_t& getPollingWindowMinMillis() const; 331 bool hasPollingWindowMinMillis() const; 332 const std::vector<PowerThrottlingMap>& getPowerThrottlingMap() const; 333 bool hasPowerThrottlingMap() const; 334 const PowerThrottlingMap* getFirstPowerThrottlingMap() const; 335 static PowerThrottlingConfig read(xmlNode *root); 336 }; 337 338 class NitsMap { 339 private: 340 const std::vector<Point> point_; 341 const std::optional<std::string> interpolation_; 342 public: 343 NitsMap(std::vector<Point> point, std::optional<std::string> interpolation); 344 const std::vector<Point>& getPoint() const; 345 bool hasPoint() const; 346 const Point* getFirstPoint() const; 347 const std::string& getInterpolation() const; 348 bool hasInterpolation() const; 349 static NitsMap read(xmlNode *root); 350 }; 351 352 class Point { 353 private: 354 const std::optional<double> value_; 355 const std::optional<double> nits_; 356 public: 357 Point(std::optional<double> value, std::optional<double> nits); 358 const double& getValue() const; 359 bool hasValue() const; 360 const double& getNits() const; 361 bool hasNits() const; 362 static Point read(xmlNode *root); 363 }; 364 365 class ComprehensiveBrightnessMap { 366 private: 367 const std::vector<BrightnessPoint> brightnessPoint_; 368 public: 369 explicit ComprehensiveBrightnessMap(std::vector<BrightnessPoint> brightnessPoint); 370 const std::vector<BrightnessPoint>& getBrightnessPoint() const; 371 bool hasBrightnessPoint() const; 372 const BrightnessPoint* getFirstBrightnessPoint() const; 373 static ComprehensiveBrightnessMap read(xmlNode *root); 374 }; 375 376 class BrightnessPoint { 377 private: 378 const std::optional<double> nits_; 379 const std::optional<double> backlight_; 380 const std::optional<double> brightness_; 381 public: 382 BrightnessPoint(std::optional<double> nits, std::optional<double> backlight, std::optional<double> brightness); 383 const double& getNits() const; 384 bool hasNits() const; 385 const double& getBacklight() const; 386 bool hasBacklight() const; 387 const double& getBrightness() const; 388 bool hasBrightness() const; 389 static BrightnessPoint read(xmlNode *root); 390 }; 391 392 class SdrHdrRatioMap { 393 private: 394 const std::vector<SdrHdrRatioPoint> point_; 395 public: 396 explicit SdrHdrRatioMap(std::vector<SdrHdrRatioPoint> point); 397 const std::vector<SdrHdrRatioPoint>& getPoint() const; 398 bool hasPoint() const; 399 const SdrHdrRatioPoint* getFirstPoint() const; 400 static SdrHdrRatioMap read(xmlNode *root); 401 }; 402 403 class SdrHdrRatioPoint { 404 private: 405 const std::optional<double> sdrNits_; 406 const std::optional<double> hdrRatio_; 407 public: 408 SdrHdrRatioPoint(std::optional<double> sdrNits, std::optional<double> hdrRatio); 409 const double& getSdrNits() const; 410 bool hasSdrNits() const; 411 const double& getHdrRatio() const; 412 bool hasHdrRatio() const; 413 static SdrHdrRatioPoint read(xmlNode *root); 414 }; 415 416 class SensorDetails { 417 private: 418 const std::optional<std::string> type_; 419 const std::optional<std::string> name_; 420 const std::vector<RefreshRateRange> refreshRate_; 421 const std::vector<NonNegativeFloatToFloatMap> supportedModes_; 422 const std::optional<std::string> featureFlag_; 423 public: 424 SensorDetails(std::optional<std::string> type, std::optional<std::string> name, std::vector<RefreshRateRange> refreshRate, std::vector<NonNegativeFloatToFloatMap> supportedModes, std::optional<std::string> featureFlag); 425 const std::string& getType() const; 426 bool hasType() const; 427 const std::string& getName() const; 428 bool hasName() const; 429 const std::vector<RefreshRateRange>& getRefreshRate() const; 430 bool hasRefreshRate() const; 431 const RefreshRateRange* getFirstRefreshRate() const; 432 const std::vector<NonNegativeFloatToFloatMap>& getSupportedModes() const; 433 bool hasSupportedModes() const; 434 const NonNegativeFloatToFloatMap* getFirstSupportedModes() const; 435 const std::string& getFeatureFlag() const; 436 bool hasFeatureFlag() const; 437 static SensorDetails read(xmlNode *root); 438 }; 439 440 class RefreshRateRange { 441 private: 442 const std::optional<int64_t> minimum_; 443 const std::optional<int64_t> maximum_; 444 public: 445 RefreshRateRange(std::optional<int64_t> minimum, std::optional<int64_t> maximum); 446 const int64_t& getMinimum() const; 447 bool hasMinimum() const; 448 const int64_t& getMaximum() const; 449 bool hasMaximum() const; 450 static RefreshRateRange read(xmlNode *root); 451 }; 452 453 class DensityMapping { 454 private: 455 const std::vector<Density> density_; 456 public: 457 explicit DensityMapping(std::vector<Density> density); 458 const std::vector<Density>& getDensity() const; 459 bool hasDensity() const; 460 const Density* getFirstDensity() const; 461 static DensityMapping read(xmlNode *root); 462 }; 463 464 class Density { 465 private: 466 const std::optional<int64_t> width_; 467 const std::optional<int64_t> height_; 468 const std::optional<int64_t> density_; 469 public: 470 Density(std::optional<int64_t> width, std::optional<int64_t> height, std::optional<int64_t> density); 471 const int64_t& getWidth() const; 472 bool hasWidth() const; 473 const int64_t& getHeight() const; 474 bool hasHeight() const; 475 const int64_t& getDensity() const; 476 bool hasDensity() const; 477 static Density read(xmlNode *root); 478 }; 479 480 class Thresholds { 481 private: 482 const std::vector<BrightnessThresholds> brighteningThresholds_; 483 const std::vector<BrightnessThresholds> darkeningThresholds_; 484 public: 485 Thresholds(std::vector<BrightnessThresholds> brighteningThresholds, std::vector<BrightnessThresholds> darkeningThresholds); 486 const std::vector<BrightnessThresholds>& getBrighteningThresholds() const; 487 bool hasBrighteningThresholds() const; 488 const BrightnessThresholds* getFirstBrighteningThresholds() const; 489 const std::vector<BrightnessThresholds>& getDarkeningThresholds() const; 490 bool hasDarkeningThresholds() const; 491 const BrightnessThresholds* getFirstDarkeningThresholds() const; 492 static Thresholds read(xmlNode *root); 493 }; 494 495 class BrightnessThresholds { 496 private: 497 const std::optional<double> minimum_; 498 const std::vector<ThresholdPoints> brightnessThresholdPoints_; 499 public: 500 BrightnessThresholds(std::optional<double> minimum, std::vector<ThresholdPoints> brightnessThresholdPoints); 501 const double& getMinimum() const; 502 bool hasMinimum() const; 503 const std::vector<ThresholdPoints>& getBrightnessThresholdPoints() const; 504 bool hasBrightnessThresholdPoints() const; 505 const ThresholdPoints* getFirstBrightnessThresholdPoints() const; 506 static BrightnessThresholds read(xmlNode *root); 507 }; 508 509 class ThresholdPoints { 510 private: 511 const std::vector<ThresholdPoint> brightnessThresholdPoint_; 512 public: 513 explicit ThresholdPoints(std::vector<ThresholdPoint> brightnessThresholdPoint); 514 const std::vector<ThresholdPoint>& getBrightnessThresholdPoint() const; 515 bool hasBrightnessThresholdPoint() const; 516 const ThresholdPoint* getFirstBrightnessThresholdPoint() const; 517 static ThresholdPoints read(xmlNode *root); 518 }; 519 520 class ThresholdPoint { 521 private: 522 const std::optional<double> threshold_; 523 const std::optional<double> percentage_; 524 public: 525 ThresholdPoint(std::optional<double> threshold, std::optional<double> percentage); 526 const double& getThreshold() const; 527 bool hasThreshold() const; 528 const double& getPercentage() const; 529 bool hasPercentage() const; 530 static ThresholdPoint read(xmlNode *root); 531 }; 532 533 class AutoBrightness { 534 private: 535 const std::optional<int64_t> brighteningLightDebounceMillis_; 536 const std::optional<int64_t> darkeningLightDebounceMillis_; 537 const std::optional<int64_t> brighteningLightDebounceIdleMillis_; 538 const std::optional<int64_t> darkeningLightDebounceIdleMillis_; 539 const std::vector<LuxToBrightnessMapping> luxToBrightnessMapping_; 540 const std::optional<int64_t> idleStylusTimeoutMillis_; 541 const std::optional<bool> enabled_; 542 public: 543 AutoBrightness(std::optional<int64_t> brighteningLightDebounceMillis, std::optional<int64_t> darkeningLightDebounceMillis, std::optional<int64_t> brighteningLightDebounceIdleMillis, std::optional<int64_t> darkeningLightDebounceIdleMillis, std::vector<LuxToBrightnessMapping> luxToBrightnessMapping, std::optional<int64_t> idleStylusTimeoutMillis, std::optional<bool> enabled); 544 const int64_t& getBrighteningLightDebounceMillis() const; 545 bool hasBrighteningLightDebounceMillis() const; 546 const int64_t& getDarkeningLightDebounceMillis() const; 547 bool hasDarkeningLightDebounceMillis() const; 548 const int64_t& getBrighteningLightDebounceIdleMillis() const; 549 bool hasBrighteningLightDebounceIdleMillis() const; 550 const int64_t& getDarkeningLightDebounceIdleMillis() const; 551 bool hasDarkeningLightDebounceIdleMillis() const; 552 const std::vector<LuxToBrightnessMapping>& getLuxToBrightnessMapping() const; 553 bool hasLuxToBrightnessMapping() const; 554 const LuxToBrightnessMapping* getFirstLuxToBrightnessMapping() const; 555 const int64_t& getIdleStylusTimeoutMillis() const; 556 bool hasIdleStylusTimeoutMillis() const; 557 const bool& getEnabled() const; 558 bool hasEnabled() const; 559 static AutoBrightness read(xmlNode *root); 560 }; 561 562 class LuxToBrightnessMapping { 563 private: 564 const std::vector<NonNegativeFloatToFloatMap> map_; 565 const std::optional<AutoBrightnessModeName> mode_; 566 const std::optional<AutoBrightnessSettingName> setting_; 567 public: 568 LuxToBrightnessMapping(std::vector<NonNegativeFloatToFloatMap> map, std::optional<AutoBrightnessModeName> mode, std::optional<AutoBrightnessSettingName> setting); 569 const std::vector<NonNegativeFloatToFloatMap>& getMap() const; 570 bool hasMap() const; 571 const NonNegativeFloatToFloatMap* getFirstMap() const; 572 const AutoBrightnessModeName& getMode() const; 573 bool hasMode() const; 574 const AutoBrightnessSettingName& getSetting() const; 575 bool hasSetting() const; 576 static LuxToBrightnessMapping read(xmlNode *root); 577 }; 578 579 class DisplayBrightnessPoint { 580 private: 581 const std::optional<int64_t> lux_; 582 const std::optional<double> nits_; 583 public: 584 DisplayBrightnessPoint(std::optional<int64_t> lux, std::optional<double> nits); 585 const int64_t& getLux() const; 586 bool hasLux() const; 587 const double& getNits() const; 588 bool hasNits() const; 589 static DisplayBrightnessPoint read(xmlNode *root); 590 }; 591 592 class RefreshRateConfigs { 593 private: 594 const std::optional<int64_t> defaultRefreshRate_; 595 const std::optional<int64_t> defaultPeakRefreshRate_; 596 const std::vector<RefreshRateZoneProfiles> refreshRateZoneProfiles_; 597 const std::optional<int64_t> defaultRefreshRateInHbmHdr_; 598 const std::optional<int64_t> defaultRefreshRateInHbmSunlight_; 599 const std::vector<BlockingZoneConfig> lowerBlockingZoneConfigs_; 600 const std::vector<BlockingZoneConfig> higherBlockingZoneConfigs_; 601 const std::vector<NonNegativeFloatToFloatMap> lowPowerSupportedModes_; 602 public: 603 RefreshRateConfigs(std::optional<int64_t> defaultRefreshRate, std::optional<int64_t> defaultPeakRefreshRate, std::vector<RefreshRateZoneProfiles> refreshRateZoneProfiles, std::optional<int64_t> defaultRefreshRateInHbmHdr, std::optional<int64_t> defaultRefreshRateInHbmSunlight, std::vector<BlockingZoneConfig> lowerBlockingZoneConfigs, std::vector<BlockingZoneConfig> higherBlockingZoneConfigs, std::vector<NonNegativeFloatToFloatMap> lowPowerSupportedModes); 604 const int64_t& getDefaultRefreshRate() const; 605 bool hasDefaultRefreshRate() const; 606 const int64_t& getDefaultPeakRefreshRate() const; 607 bool hasDefaultPeakRefreshRate() const; 608 const std::vector<RefreshRateZoneProfiles>& getRefreshRateZoneProfiles() const; 609 bool hasRefreshRateZoneProfiles() const; 610 const RefreshRateZoneProfiles* getFirstRefreshRateZoneProfiles() const; 611 const int64_t& getDefaultRefreshRateInHbmHdr() const; 612 bool hasDefaultRefreshRateInHbmHdr() const; 613 const int64_t& getDefaultRefreshRateInHbmSunlight() const; 614 bool hasDefaultRefreshRateInHbmSunlight() const; 615 const std::vector<BlockingZoneConfig>& getLowerBlockingZoneConfigs() const; 616 bool hasLowerBlockingZoneConfigs() const; 617 const BlockingZoneConfig* getFirstLowerBlockingZoneConfigs() const; 618 const std::vector<BlockingZoneConfig>& getHigherBlockingZoneConfigs() const; 619 bool hasHigherBlockingZoneConfigs() const; 620 const BlockingZoneConfig* getFirstHigherBlockingZoneConfigs() const; 621 const std::vector<NonNegativeFloatToFloatMap>& getLowPowerSupportedModes() const; 622 bool hasLowPowerSupportedModes() const; 623 const NonNegativeFloatToFloatMap* getFirstLowPowerSupportedModes() const; 624 static RefreshRateConfigs read(xmlNode *root); 625 }; 626 627 class RefreshRateZoneProfiles { 628 private: 629 const std::vector<RefreshRateZone> refreshRateZoneProfile_; 630 public: 631 explicit RefreshRateZoneProfiles(std::vector<RefreshRateZone> refreshRateZoneProfile); 632 const std::vector<RefreshRateZone>& getRefreshRateZoneProfile() const; 633 bool hasRefreshRateZoneProfile() const; 634 const RefreshRateZone* getFirstRefreshRateZoneProfile() const; 635 static RefreshRateZoneProfiles read(xmlNode *root); 636 }; 637 638 class RefreshRateZone { 639 private: 640 const std::vector<RefreshRateRange> refreshRateRange_; 641 const std::string id_; 642 public: 643 RefreshRateZone(std::vector<RefreshRateRange> refreshRateRange, std::string id); 644 const std::vector<RefreshRateRange>& getRefreshRateRange() const; 645 bool hasRefreshRateRange() const; 646 const RefreshRateRange* getFirstRefreshRateRange() const; 647 const std::string& getId() const; 648 bool hasId() const; 649 static RefreshRateZone read(xmlNode *root); 650 }; 651 652 class BlockingZoneConfig { 653 private: 654 const std::vector<NonNegativeFloatToFloatMap> supportedModes_; 655 const std::optional<int64_t> defaultRefreshRate_; 656 const std::optional<std::string> refreshRateThermalThrottlingId_; 657 const std::vector<BlockingZoneThreshold> blockingZoneThreshold_; 658 public: 659 BlockingZoneConfig(std::vector<NonNegativeFloatToFloatMap> supportedModes, std::optional<int64_t> defaultRefreshRate, std::optional<std::string> refreshRateThermalThrottlingId, std::vector<BlockingZoneThreshold> blockingZoneThreshold); 660 const std::vector<NonNegativeFloatToFloatMap>& getSupportedModes() const; 661 bool hasSupportedModes() const; 662 const NonNegativeFloatToFloatMap* getFirstSupportedModes() const; 663 const int64_t& getDefaultRefreshRate() const; 664 bool hasDefaultRefreshRate() const; 665 const std::string& getRefreshRateThermalThrottlingId() const; 666 bool hasRefreshRateThermalThrottlingId() const; 667 const std::vector<BlockingZoneThreshold>& getBlockingZoneThreshold() const; 668 bool hasBlockingZoneThreshold() const; 669 const BlockingZoneThreshold* getFirstBlockingZoneThreshold() const; 670 static BlockingZoneConfig read(xmlNode *root); 671 }; 672 673 class BlockingZoneThreshold { 674 private: 675 const std::vector<DisplayBrightnessPoint> displayBrightnessPoint_; 676 public: 677 explicit BlockingZoneThreshold(std::vector<DisplayBrightnessPoint> displayBrightnessPoint); 678 const std::vector<DisplayBrightnessPoint>& getDisplayBrightnessPoint() const; 679 bool hasDisplayBrightnessPoint() const; 680 const DisplayBrightnessPoint* getFirstDisplayBrightnessPoint() const; 681 static BlockingZoneThreshold read(xmlNode *root); 682 }; 683 684 class IntegerArray { 685 private: 686 const std::vector<int64_t> item_; 687 public: 688 explicit IntegerArray(std::vector<int64_t> item); 689 const std::vector<int64_t>& getItem() const; 690 bool hasItem() const; 691 const int64_t* getFirstItem() const; 692 static IntegerArray read(xmlNode *root); 693 }; 694 695 class FloatArray { 696 private: 697 const std::vector<double> item_; 698 public: 699 explicit FloatArray(std::vector<double> item); 700 const std::vector<double>& getItem() const; 701 bool hasItem() const; 702 const double* getFirstItem() const; 703 static FloatArray read(xmlNode *root); 704 }; 705 706 class UsiVersion { 707 private: 708 const std::optional<int64_t> majorVersion_; 709 const std::optional<int64_t> minorVersion_; 710 public: 711 UsiVersion(std::optional<int64_t> majorVersion, std::optional<int64_t> minorVersion); 712 const int64_t& getMajorVersion() const; 713 bool hasMajorVersion() const; 714 const int64_t& getMinorVersion() const; 715 bool hasMinorVersion() const; 716 static UsiVersion read(xmlNode *root); 717 }; 718 719 class NonNegativeFloatToFloatPoint { 720 private: 721 const std::optional<double> first_; 722 const std::optional<double> second_; 723 public: 724 NonNegativeFloatToFloatPoint(std::optional<double> first, std::optional<double> second); 725 const double& getFirst() const; 726 bool hasFirst() const; 727 const double& getSecond() const; 728 bool hasSecond() const; 729 static NonNegativeFloatToFloatPoint read(xmlNode *root); 730 }; 731 732 class NonNegativeFloatToFloatMap { 733 private: 734 const std::vector<NonNegativeFloatToFloatPoint> point_; 735 public: 736 explicit NonNegativeFloatToFloatMap(std::vector<NonNegativeFloatToFloatPoint> point); 737 const std::vector<NonNegativeFloatToFloatPoint>& getPoint() const; 738 bool hasPoint() const; 739 const NonNegativeFloatToFloatPoint* getFirstPoint() const; 740 static NonNegativeFloatToFloatMap read(xmlNode *root); 741 }; 742 743 class IdleScreenRefreshRateTimeout { 744 private: 745 const std::vector<IdleScreenRefreshRateTimeoutLuxThresholds> luxThresholds_; 746 public: 747 explicit IdleScreenRefreshRateTimeout(std::vector<IdleScreenRefreshRateTimeoutLuxThresholds> luxThresholds); 748 const std::vector<IdleScreenRefreshRateTimeoutLuxThresholds>& getLuxThresholds() const; 749 bool hasLuxThresholds() const; 750 const IdleScreenRefreshRateTimeoutLuxThresholds* getFirstLuxThresholds() const; 751 static IdleScreenRefreshRateTimeout read(xmlNode *root); 752 }; 753 754 class IdleScreenRefreshRateTimeoutLuxThresholds { 755 private: 756 const std::vector<IdleScreenRefreshRateTimeoutLuxThresholdPoint> point_; 757 public: 758 explicit IdleScreenRefreshRateTimeoutLuxThresholds(std::vector<IdleScreenRefreshRateTimeoutLuxThresholdPoint> point); 759 const std::vector<IdleScreenRefreshRateTimeoutLuxThresholdPoint>& getPoint() const; 760 bool hasPoint() const; 761 const IdleScreenRefreshRateTimeoutLuxThresholdPoint* getFirstPoint() const; 762 static IdleScreenRefreshRateTimeoutLuxThresholds read(xmlNode *root); 763 }; 764 765 class IdleScreenRefreshRateTimeoutLuxThresholdPoint { 766 private: 767 const std::optional<int64_t> lux_; 768 const std::optional<int64_t> timeout_; 769 public: 770 IdleScreenRefreshRateTimeoutLuxThresholdPoint(std::optional<int64_t> lux, std::optional<int64_t> timeout); 771 const int64_t& getLux() const; 772 bool hasLux() const; 773 const int64_t& getTimeout() const; 774 bool hasTimeout() const; 775 static IdleScreenRefreshRateTimeoutLuxThresholdPoint read(xmlNode *root); 776 }; 777 778 class DisplayConfiguration { 779 private: 780 const std::optional<std::string> name_; 781 const std::vector<DensityMapping> densityMapping_; 782 const std::vector<NitsMap> screenBrightnessMap_; 783 const std::optional<double> screenBrightnessDefault_; 784 const std::vector<ThermalThrottling> thermalThrottling_; 785 const std::vector<PowerThrottlingConfig> powerThrottlingConfig_; 786 const std::vector<LuxThrottling> luxThrottling_; 787 const std::vector<HighBrightnessMode> highBrightnessMode_; 788 const std::vector<HdrBrightnessConfig> hdrBrightnessConfig_; 789 const std::vector<DisplayQuirks> quirks_; 790 const std::vector<AutoBrightness> autoBrightness_; 791 const std::vector<RefreshRateConfigs> refreshRate_; 792 const std::optional<double> screenBrightnessRampFastDecrease_; 793 const std::optional<double> screenBrightnessRampFastIncrease_; 794 const std::optional<double> screenBrightnessRampSlowDecrease_; 795 const std::optional<double> screenBrightnessRampSlowIncrease_; 796 const std::optional<double> screenBrightnessRampSlowDecreaseIdle_; 797 const std::optional<double> screenBrightnessRampSlowIncreaseIdle_; 798 const std::optional<int64_t> screenBrightnessRampIncreaseMaxMillis_; 799 const std::optional<int64_t> screenBrightnessRampDecreaseMaxMillis_; 800 const std::optional<int64_t> screenBrightnessRampIncreaseMaxIdleMillis_; 801 const std::optional<int64_t> screenBrightnessRampDecreaseMaxIdleMillis_; 802 const std::vector<SensorDetails> lightSensor_; 803 const std::vector<SensorDetails> screenOffBrightnessSensor_; 804 const std::vector<SensorDetails> proxSensor_; 805 const std::vector<SensorDetails> tempSensor_; 806 const std::optional<int64_t> ambientLightHorizonLong_; 807 const std::optional<int64_t> ambientLightHorizonShort_; 808 const std::vector<Thresholds> displayBrightnessChangeThresholds_; 809 const std::vector<Thresholds> ambientBrightnessChangeThresholds_; 810 const std::vector<Thresholds> displayBrightnessChangeThresholdsIdle_; 811 const std::vector<Thresholds> ambientBrightnessChangeThresholdsIdle_; 812 const std::vector<IntegerArray> screenOffBrightnessSensorValueToLux_; 813 const std::vector<UsiVersion> usiVersion_; 814 const std::vector<EvenDimmerMode> evenDimmer_; 815 const std::optional<double> screenBrightnessCapForWearBedtimeMode_; 816 const std::vector<IdleScreenRefreshRateTimeout> idleScreenRefreshRateTimeout_; 817 const std::optional<bool> supportsVrr_; 818 const std::vector<FloatArray> dozeBrightnessSensorValueToBrightness_; 819 const std::optional<double> defaultDozeBrightness_; 820 public: 821 DisplayConfiguration(std::optional<std::string> name, std::vector<DensityMapping> densityMapping, std::vector<NitsMap> screenBrightnessMap, std::optional<double> screenBrightnessDefault, std::vector<ThermalThrottling> thermalThrottling, std::vector<PowerThrottlingConfig> powerThrottlingConfig, std::vector<LuxThrottling> luxThrottling, std::vector<HighBrightnessMode> highBrightnessMode, std::vector<HdrBrightnessConfig> hdrBrightnessConfig, std::vector<DisplayQuirks> quirks, std::vector<AutoBrightness> autoBrightness, std::vector<RefreshRateConfigs> refreshRate, std::optional<double> screenBrightnessRampFastDecrease, std::optional<double> screenBrightnessRampFastIncrease, std::optional<double> screenBrightnessRampSlowDecrease, std::optional<double> screenBrightnessRampSlowIncrease, std::optional<double> screenBrightnessRampSlowDecreaseIdle, std::optional<double> screenBrightnessRampSlowIncreaseIdle, std::optional<int64_t> screenBrightnessRampIncreaseMaxMillis, std::optional<int64_t> screenBrightnessRampDecreaseMaxMillis, std::optional<int64_t> screenBrightnessRampIncreaseMaxIdleMillis, std::optional<int64_t> screenBrightnessRampDecreaseMaxIdleMillis, std::vector<SensorDetails> lightSensor, std::vector<SensorDetails> screenOffBrightnessSensor, std::vector<SensorDetails> proxSensor, std::vector<SensorDetails> tempSensor, std::optional<int64_t> ambientLightHorizonLong, std::optional<int64_t> ambientLightHorizonShort, std::vector<Thresholds> displayBrightnessChangeThresholds, std::vector<Thresholds> ambientBrightnessChangeThresholds, std::vector<Thresholds> displayBrightnessChangeThresholdsIdle, std::vector<Thresholds> ambientBrightnessChangeThresholdsIdle, std::vector<IntegerArray> screenOffBrightnessSensorValueToLux, std::vector<UsiVersion> usiVersion, std::vector<EvenDimmerMode> evenDimmer, std::optional<double> screenBrightnessCapForWearBedtimeMode, std::vector<IdleScreenRefreshRateTimeout> idleScreenRefreshRateTimeout, std::optional<bool> supportsVrr, std::vector<FloatArray> dozeBrightnessSensorValueToBrightness, std::optional<double> defaultDozeBrightness); 822 const std::string& getName() const; 823 bool hasName() const; 824 const std::vector<DensityMapping>& getDensityMapping() const; 825 bool hasDensityMapping() const; 826 const DensityMapping* getFirstDensityMapping() const; 827 const std::vector<NitsMap>& getScreenBrightnessMap() const; 828 bool hasScreenBrightnessMap() const; 829 const NitsMap* getFirstScreenBrightnessMap() const; 830 const double& getScreenBrightnessDefault() const; 831 bool hasScreenBrightnessDefault() const; 832 const std::vector<ThermalThrottling>& getThermalThrottling() const; 833 bool hasThermalThrottling() const; 834 const ThermalThrottling* getFirstThermalThrottling() const; 835 const std::vector<PowerThrottlingConfig>& getPowerThrottlingConfig() const; 836 bool hasPowerThrottlingConfig() const; 837 const PowerThrottlingConfig* getFirstPowerThrottlingConfig() const; 838 const std::vector<LuxThrottling>& getLuxThrottling() const; 839 bool hasLuxThrottling() const; 840 const LuxThrottling* getFirstLuxThrottling() const; 841 const std::vector<HighBrightnessMode>& getHighBrightnessMode() const; 842 bool hasHighBrightnessMode() const; 843 const HighBrightnessMode* getFirstHighBrightnessMode() const; 844 const std::vector<HdrBrightnessConfig>& getHdrBrightnessConfig() const; 845 bool hasHdrBrightnessConfig() const; 846 const HdrBrightnessConfig* getFirstHdrBrightnessConfig() const; 847 const std::vector<DisplayQuirks>& getQuirks() const; 848 bool hasQuirks() const; 849 const DisplayQuirks* getFirstQuirks() const; 850 const std::vector<AutoBrightness>& getAutoBrightness() const; 851 bool hasAutoBrightness() const; 852 const AutoBrightness* getFirstAutoBrightness() const; 853 const std::vector<RefreshRateConfigs>& getRefreshRate() const; 854 bool hasRefreshRate() const; 855 const RefreshRateConfigs* getFirstRefreshRate() const; 856 const double& getScreenBrightnessRampFastDecrease() const; 857 bool hasScreenBrightnessRampFastDecrease() const; 858 const double& getScreenBrightnessRampFastIncrease() const; 859 bool hasScreenBrightnessRampFastIncrease() const; 860 const double& getScreenBrightnessRampSlowDecrease() const; 861 bool hasScreenBrightnessRampSlowDecrease() const; 862 const double& getScreenBrightnessRampSlowIncrease() const; 863 bool hasScreenBrightnessRampSlowIncrease() const; 864 const double& getScreenBrightnessRampSlowDecreaseIdle() const; 865 bool hasScreenBrightnessRampSlowDecreaseIdle() const; 866 const double& getScreenBrightnessRampSlowIncreaseIdle() const; 867 bool hasScreenBrightnessRampSlowIncreaseIdle() const; 868 const int64_t& getScreenBrightnessRampIncreaseMaxMillis() const; 869 bool hasScreenBrightnessRampIncreaseMaxMillis() const; 870 const int64_t& getScreenBrightnessRampDecreaseMaxMillis() const; 871 bool hasScreenBrightnessRampDecreaseMaxMillis() const; 872 const int64_t& getScreenBrightnessRampIncreaseMaxIdleMillis() const; 873 bool hasScreenBrightnessRampIncreaseMaxIdleMillis() const; 874 const int64_t& getScreenBrightnessRampDecreaseMaxIdleMillis() const; 875 bool hasScreenBrightnessRampDecreaseMaxIdleMillis() const; 876 const std::vector<SensorDetails>& getLightSensor() const; 877 bool hasLightSensor() const; 878 const SensorDetails* getFirstLightSensor() const; 879 const std::vector<SensorDetails>& getScreenOffBrightnessSensor() const; 880 bool hasScreenOffBrightnessSensor() const; 881 const SensorDetails* getFirstScreenOffBrightnessSensor() const; 882 const std::vector<SensorDetails>& getProxSensor() const; 883 bool hasProxSensor() const; 884 const SensorDetails* getFirstProxSensor() const; 885 const std::vector<SensorDetails>& getTempSensor() const; 886 bool hasTempSensor() const; 887 const SensorDetails* getFirstTempSensor() const; 888 const int64_t& getAmbientLightHorizonLong() const; 889 bool hasAmbientLightHorizonLong() const; 890 const int64_t& getAmbientLightHorizonShort() const; 891 bool hasAmbientLightHorizonShort() const; 892 const std::vector<Thresholds>& getDisplayBrightnessChangeThresholds() const; 893 bool hasDisplayBrightnessChangeThresholds() const; 894 const Thresholds* getFirstDisplayBrightnessChangeThresholds() const; 895 const std::vector<Thresholds>& getAmbientBrightnessChangeThresholds() const; 896 bool hasAmbientBrightnessChangeThresholds() const; 897 const Thresholds* getFirstAmbientBrightnessChangeThresholds() const; 898 const std::vector<Thresholds>& getDisplayBrightnessChangeThresholdsIdle() const; 899 bool hasDisplayBrightnessChangeThresholdsIdle() const; 900 const Thresholds* getFirstDisplayBrightnessChangeThresholdsIdle() const; 901 const std::vector<Thresholds>& getAmbientBrightnessChangeThresholdsIdle() const; 902 bool hasAmbientBrightnessChangeThresholdsIdle() const; 903 const Thresholds* getFirstAmbientBrightnessChangeThresholdsIdle() const; 904 const std::vector<IntegerArray>& getScreenOffBrightnessSensorValueToLux() const; 905 bool hasScreenOffBrightnessSensorValueToLux() const; 906 const IntegerArray* getFirstScreenOffBrightnessSensorValueToLux() const; 907 const std::vector<UsiVersion>& getUsiVersion() const; 908 bool hasUsiVersion() const; 909 const UsiVersion* getFirstUsiVersion() const; 910 const std::vector<EvenDimmerMode>& getEvenDimmer() const; 911 bool hasEvenDimmer() const; 912 const EvenDimmerMode* getFirstEvenDimmer() const; 913 const double& getScreenBrightnessCapForWearBedtimeMode() const; 914 bool hasScreenBrightnessCapForWearBedtimeMode() const; 915 const std::vector<IdleScreenRefreshRateTimeout>& getIdleScreenRefreshRateTimeout() const; 916 bool hasIdleScreenRefreshRateTimeout() const; 917 const IdleScreenRefreshRateTimeout* getFirstIdleScreenRefreshRateTimeout() const; 918 const bool& getSupportsVrr() const; 919 bool hasSupportsVrr() const; 920 const std::vector<FloatArray>& getDozeBrightnessSensorValueToBrightness() const; 921 bool hasDozeBrightnessSensorValueToBrightness() const; 922 const FloatArray* getFirstDozeBrightnessSensorValueToBrightness() const; 923 const double& getDefaultDozeBrightness() const; 924 bool hasDefaultDozeBrightness() const; 925 static DisplayConfiguration read(xmlNode *root); 926 }; 927 928 } // config 929 } // display 930 } // server 931 } // android 932 } // com 933 #endif // COM_ANDROID_SERVER_DISPLAY_CONFIG_H 934