// 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 id; uint64 timestamp; array axes; array buttons; array 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 memory_handle); [Sync] GamepadStopPolling() => (); SetObserver(GamepadObserver gamepad_observer); };