|  | // Copyright 2019 The Fuchsia Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | library fuchsia.settings; | 
|  |  | 
|  | using fuchsia.ui.types; | 
|  |  | 
|  | /// Settings related to display. | 
|  | /// | 
|  | /// Supported SettingsEpitaph enums: | 
|  | /// REQUEST_NOT_SUPPORTED, INTERNAL_SERVICE_ERROR, PERSISTENT_STORAGE_ERROR | 
|  | [Discoverable] | 
|  | protocol Display { | 
|  | /// Gets the current [DisplaySettings]. Returns immediately on first call; | 
|  | /// subsequent calls return when the value changes. | 
|  | /// | 
|  | /// If this call fails, it is considered a fatal error and the channel | 
|  | /// will be closed. | 
|  | [Transitional = "Deprecated in favor of Watch"] | 
|  | Watch2() -> (DisplaySettings settings); | 
|  |  | 
|  | /// Gets the current [DisplaySettings]. Returns immediately on first call; | 
|  | /// subsequent calls return when the value changes. | 
|  | /// | 
|  | /// If this call fails, it is considered a fatal error and the channel | 
|  | /// will be closed. | 
|  | [Transitional = "Future replacement for Watch2"] | 
|  | Watch() -> (DisplaySettings settings); | 
|  |  | 
|  | /// Obtains the current data from the light sensor. Returns immediately on | 
|  | /// first call; subsequent calls return when the light sensor value changes | 
|  | ///  by a certain amount measured in lux. | 
|  | /// | 
|  | /// If this call fails, it is considered a fatal error and the channel | 
|  | /// will be closed. | 
|  | [Transitional = "Deprecated in favor of WatchLightSensor"] | 
|  | WatchLightSensor2(float32 delta) -> (LightSensorData light_sensor_data); | 
|  |  | 
|  | /// Obtains the current data from the light sensor. Returns immediately on | 
|  | /// first call; subsequent calls return when the light sensor value changes | 
|  | ///  by a certain amount measured in lux. | 
|  | /// | 
|  | /// If this call fails, it is considered a fatal error and the channel | 
|  | /// will be closed. | 
|  | [Transitional = "Future replacement for WatchLightSensor2"] | 
|  | WatchLightSensor(float32 delta) -> (LightSensorData light_sensor_data); | 
|  |  | 
|  | /// Sets display settings. Any field not explicitly set in the table performs a | 
|  | /// no-op, and will not make any changes. | 
|  | Set(DisplaySettings settings) -> () error Error; | 
|  | }; | 
|  |  | 
|  | /// DisplaySettings are used to determine the output state of the display. | 
|  | /// The display can be toggled between two modes, auto-brightness on and | 
|  | /// auto-brightness off. When auto-brightness is on a manual offset to the | 
|  | /// total output brightness can be applied by setting `user_brightness_offset`. | 
|  | /// When auto-brightness is off the display brightness is set manually by | 
|  | /// setting brightness_value. All values can be set at any time to persist | 
|  | /// settings for either mode. | 
|  | table DisplaySettings { | 
|  | /// Auto brightness enabled | 
|  | 1: bool auto_brightness; | 
|  | /// Manually set brightness value [0.0 - 1.0] | 
|  | 2: float32 brightness_value; | 
|  | /// User defined offset to the total auto brightness output [-1.0 - 1.0] | 
|  | 3: float32 user_brightness_offset; | 
|  | /// The low light mode state of the device. | 
|  | 4: LowLightMode low_light_mode; | 
|  | /// Whether the screen is enabled. | 
|  | 5: bool screen_enabled; | 
|  | /// Theme to be used for the device's user interface. | 
|  | 6: Theme theme; | 
|  | }; | 
|  |  | 
|  | table LightSensorData { | 
|  | /// Brightness from the light sensor measured in lux. | 
|  | 1: float32 illuminance_lux; | 
|  |  | 
|  | /// Color measured by light sensor in rgb. | 
|  | 2: fuchsia.ui.types.ColorRgb color; | 
|  | }; | 
|  |  | 
|  | table Theme { | 
|  | // theme_type will be absent if no theme has been set. | 
|  | 1: ThemeType theme_type; | 
|  | }; | 
|  |  | 
|  | enum LowLightMode { | 
|  | /// Device should not be in low-light mode. | 
|  | DISABLE = 0; | 
|  | /// Device should not be in low-light mode and should transition | 
|  | /// out of it immediately. | 
|  | DISABLE_IMMEDIATELY = 1; | 
|  | /// Device should be in low-light mode. | 
|  | ENABLE = 2; | 
|  | }; | 
|  |  | 
|  | enum ThemeType { | 
|  | DEFAULT = 0; | 
|  | LIGHT = 1; | 
|  | DARK = 2; | 
|  | /// Product can choose a theme based on ambient cues. | 
|  | AUTO = 3; | 
|  | }; |