// Copyright 2025 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.

/// The `fuchsia.hardware.google.nanohub` library defines the display protocol for
/// interacting with a display driver connected to a microcontroller unit (MCU).
/// This interface targets a specific piece of hardware, and may be revised in the future,
/// and aims to be an exact translation of an existing API.
///
/// This protocol provides methods to:
/// - Query the current operational mode and state of the display.
/// - Retrieve synchronization information, including brightness levels for
///   different modes.
/// - Select the active display from a predefined set of options.
@available(added=HEAD)
library fuchsia.hardware.google.nanohub;
