// Copyright 2021 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.hardware.audio;

type HealthState = table {
    /// Driver is currently healthy.
    /// No health information is provided if this field is not included.
    /// This allows drivers to signal their health state in scenarios where they have not enough
    /// capabilities or resources to recover on their own, for instance not able to power down the
    /// hardware via a GPIO or control over the power subsystem.
    ///
    /// Optional.
    1: healthy bool;
};

closed protocol Health {
    /// Retrieves top level health state.
    /// A driver not responding promptly can be used as an indication of an unhealthy driver.
    strict GetHealthState() -> (struct {
        state HealthState;
    });
};
