// 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.hardware.thermal;

using zx;

/// This is somewhat of a placeholder protocol that's only useful for
/// connecting to the thermal driver's FIDL interface via Banjo.
@transport("Banjo")
@banjo_layout("ddk-protocol")
closed protocol Thermal {
    /// Pass a channel handle to the thermal driver to connect to its
    /// FIDL interface.
    strict Connect(resource struct {
        chan zx.Handle:CHANNEL;
    }) -> (struct {
        status zx.Status;
    });
};
