blob: e3fdbb709abbca5f456601bec8317368ef7197f4 [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;
PLAY_PAUSE = 4;
KEY_A = 5;
KEY_M = 6;
CAM_MUTE = 7;
MAX = 8;
};
/// 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.
-> OnNotify(ButtonType type, bool pressed);
};