blob: 8807219839e9306339303503385f9bbbbf6bb57f [file] [log] [blame]
// 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.
@available(added=7)
library fuchsia.power.profile;
/// System power profiles that may be returned by [Watcher.Watch].
type Profile = strict enum {
/// There is no active work in the system. On a system that supports it, the device may be put
/// into a lower-power or suspended state at any time.
IDLE = 1;
/// Some background activity is occurring that should prevent the system from dropping into a
/// non-running or suspended state (example: downloading an OTA, performing a backup, or
/// CPU-based hotword monitoring).
BACKGROUND_ACTIVE = 2;
/// The device is providing some user-visible experience such as running an app in the
/// foreground or streaming audio, or has recently received interaction from a user.
USER_ACTIVE = 3;
};
/// Protocol for observing changes to the system power profile.
@discoverable
closed protocol Watcher {
/// Watches for changes to the system power profile.
///
/// On a given connection, the first call will return immediately with the current system power
/// profile, while subsequent calls will only return a new `profile` as the system power profile
/// changes. This follows the
/// [hanging get](https://fuchsia.dev/fuchsia-src/concepts/api/fidl#hanging-get) pattern. Any
/// errors are considered fatal and will result in the channel being closed.
strict Watch() -> (struct {
profile Profile;
});
};