blob: e89c78f7891328fffc1ae5d572d0e98d6745d6ff [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.
library fuchsia.power.button;
/// Action to perform when power button is pressed.
type Action = flexible enum {
/// Do nothing.
IGNORE = 0;
/// Shutdown the system.
SHUTDOWN = 1;
};
type PowerButtonEvent = flexible enum {
/// Button Pressed.
PRESS = 0;
};
/// Protocol to manage the power button monitor.
/// This protocol allows applications to configure the action performed when the
/// power button is pressed.
/// It is intended for board-specific components that need to use the power
/// button for their own purposes (e.g. as a physical presence check).
@discoverable
closed protocol Monitor {
/// Get the current action for the power button.
/// Always returns immediately, never fails.
strict GetAction() -> (struct {
action Action;
});
/// Set the action that will be performed when the power button is pressed.
/// Always returns immediately, never fails.
strict SetAction(struct {
action Action;
}) -> ();
/// Send a message to the client when the power button is pressed or released.
strict -> OnButtonEvent(struct {
event PowerButtonEvent;
});
};