blob: 8986302401737b115a5f7c18c0a420b1031ab9de [file] [log] [blame]
// Copyright 2023 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.fan;
using zx;
using fuchsia.thermal;
/// Fan: get and set `fan_level`
/// `fan_level`: 0 should be the lowest fan state, generally OFF.
/// Fan speed increases with `fan_level` and should
/// match the `fuchsia.thermal.ClientStateWatcher`
/// states for fans, where the states are defined
/// in thermal_config.json for each product.
/// Thus, the valid values of `fan_level` is
/// determined per product according to the
/// corresponding config json file.
closed protocol Fan {
/// Get the current fan level.
/// - response `status`
/// ZX_ERR_INTERNAL if `fan_level` is not available.
/// This generally means that `fan_level` has not
/// been initialized yet or something has gone
/// terribly wrong.
/// - response `fan_level` a uint32 field indicating the
/// current fan level. See fan level description above.
strict GetFanLevel() -> (struct {
status zx.Status;
fan_level uint32;
});
/// Set the fan level.
/// + request `fan_level` a uint32 field indicating the
/// requested fan level. See fan level description above.
/// - response `status`
/// ZX_ERR_OUT_OF_RANGE if the requested fan_level is not
/// valid.
strict SetFanLevel(struct {
fan_level uint32;
}) -> (struct {
status zx.Status;
});
};
@discoverable
closed protocol Device {
compose Fan;
/// Returns the client type to use for
/// `fuchsia.thermal.ClientStateConnector::Connect`.
strict GetClientType() -> (struct {
client_type fuchsia.thermal.ClientType;
});
};