blob: ed2d3dc04e31cfbbcbd068deb75ae736d1587602 [file] [log] [blame]
// 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.buttons;
using zx;
/// ButtonType should the same as BUTTONS_ID_... in metadata/buttons.h
enum ButtonType : uint8 {
VOLUME_UP = 0;
VOLUME_DOWN = 1;
RESET = 2;
MUTE = 3;
MAX = 4;
};
/// Protocol for other devices to get the state of buttons and register for
/// notifications of state change.
[Discoverable]
protocol Buttons {
/// Gets the state of the button requested.
/// |type| : Button type.
/// @Returns: |pressed| : True if button is pressed.
GetState(ButtonType type) -> (bool pressed);
/// Registers to receive notifications of a state change for some buttons.
/// |types| : Bitmask which indicates the interested buttons. 0 means not
/// interested, 1 means interested. Bit position corresponds to
/// ButtonType, e.g. (1 << VOLUME_UP) means notify only when
/// the state of the VOLUME_UP button changes. Types not listed
/// in subsequent calls are removed.
/// @Returns: |status| : ZX_OK if succeeds.
RegisterNotify(uint8 types) -> () error zx.status;
/// Notify event. Called when state of previously registered button changes.
/// |type| : Button type.
/// |pressed| : True if button is pressed.
-> Notify(ButtonType type, bool pressed);
};