blob: 1c670d53d28096fb2b8f51eb472f8e2b08a42a4a [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module device.mojom;
struct GamepadQuaternion {
float x;
float y;
float z;
float w;
};
struct GamepadVector {
float x;
float y;
float z;
};
struct GamepadButton {
bool pressed;
bool touched;
double value;
};
struct GamepadPose {
GamepadQuaternion? orientation;
GamepadVector? position;
GamepadVector? angular_velocity;
GamepadVector? linear_velocity;
GamepadVector? angular_acceleration;
GamepadVector? linear_acceleration;
};
enum GamepadHand {
GamepadHandNone = 0,
GamepadHandLeft = 1,
GamepadHandRight = 2
};
struct Gamepad {
bool connected;
array<uint16> id;
uint64 timestamp;
array<double> axes;
array<GamepadButton> buttons;
array<uint16> mapping;
GamepadPose? pose;
GamepadHand hand;
uint32 display_id;
};
interface GamepadObserver {
GamepadConnected(int32 index, Gamepad gamepad);
GamepadDisconnected(int32 index, Gamepad gamepad);
};
// Asks the browser process to start polling, and return a shared memory
// handle that will hold the data from the hardware. See
// gamepad_shared_buffer.h for a description of how synchronization is
// handled. The number of Starts should match the number of Stops.
interface GamepadMonitor {
[Sync]
GamepadStartPolling() => (handle<shared_buffer> memory_handle);
[Sync]
GamepadStopPolling() => ();
SetObserver(GamepadObserver gamepad_observer);
};