// Copyright 2018 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.device.display;

/// An interface for accessing and modifying display state.
[Discoverable]
protocol Manager {
    /// Retrieves the current brightness of the display. The brightness is
    /// specified as a percentage of the maximum brightness.
    GetBrightness() -> (bool success, float64 brightness);

    /// Sets the brightness of the display. The brightness is specified a
    /// percentage of the maximum brightness.
    SetBrightness(float64 brightness) -> (bool success);
};
