// Copyright 2020 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.ui.policy;

/// Manipulates global policy for display backlight. Serves as the main "front
/// end" interface for usage by UX components; other protocols (such as
/// fuchsia.ui.scenic.Session and fuchsia.hardware.display.Controller) act as
/// implementation.
///
/// Global Scope. All displays, in all display controllers, are affected uniformly.
///
/// Effect Timing. This protocol does not guarantee a deadline by which the
/// minimum value is applied to a display; it is best effort.
///
/// Multiple clients. This protocol does not guarantee unique access to
/// manipulate display backlight functionality.
///
/// Reference. Related to fuchsia.hardware.display.Controller.
@discoverable
closed protocol DisplayBacklight {
    /// Submits a new minimum color channel value for display backlight.
    ///
    /// The valid range for a minimum value is [0, 255] (inclusive).  For a new
    /// minimum value M, each color channel's range will be limited to [M, 255].
    ///
    /// Flow control: The caller is allowed at most one in-flight
    /// |SetMinimumRgb| at at time. Subsequent calls must wait until the
    /// acknowledgment returns. Non-compliance results in channel closure.
    strict SetMinimumRgb(struct {
        minimum_rgb uint8;
    }) -> ();
};
