/* Copyright (c) 2012 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. */ /* From ppb_gamepad.idl modified Thu Mar 1 11:41:21 2012. */ #ifndef PPAPI_C_PPB_GAMEPAD_H_ #define PPAPI_C_PPB_GAMEPAD_H_ #include "ppapi/c/pp_bool.h" #include "ppapi/c/pp_instance.h" #include "ppapi/c/pp_macros.h" #include "ppapi/c/pp_stdint.h" #define PPB_GAMEPAD_INTERFACE_1_0 "PPB_Gamepad;1.0" #define PPB_GAMEPAD_INTERFACE PPB_GAMEPAD_INTERFACE_1_0 /** * @file * This file defines the PPB_Gamepad interface, which * provides access to gamepad devices. */ /** * @addtogroup Structs * @{ */ /** * The data for one gamepad device. */ struct PP_GamepadSampleData { /** * Number of valid elements in the |axes| array. */ uint32_t axes_length; /** * Normalized values for the axes, indices valid up to |axes_length|-1. Axis * values range from -1..1, and are in order of "importance". */ float axes[16]; /** * Number of valid elements in the |buttons| array. */ uint32_t buttons_length; /** * Normalized values for the buttons, indices valid up to |buttons_length| * - 1. Button values range from 0..1, and are in order of importance. */ float buttons[32]; /** * Monotonically increasing value that is incremented when the data have * been updated. */ double timestamp; /** * Identifier for the type of device/manufacturer. */ uint16_t id[128]; /** * Is there a gamepad connected at this index? If this is false, no other * data in this structure is valid. */ PP_Bool connected; /* Padding to make the struct the same size between 64 and 32. */ char unused_pad_[4]; }; PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_GamepadSampleData, 472); /** * The data for all gamepads connected to the system. */ struct PP_GamepadsSampleData { /** * Number of valid elements in the |items| array. */ uint32_t length; /* Padding to make the struct the same size between 64 and 32. */ char unused_pad_[4]; /** * Data for an individual gamepad device connected to the system. */ struct PP_GamepadSampleData items[4]; }; PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_GamepadsSampleData, 1896); /** * @} */ /** * @addtogroup Interfaces * @{ */ /** * The PPB_Gamepad interface allows retrieving data from * gamepad/joystick devices that are connected to the system. */ struct PPB_Gamepad_1_0 { /** * Samples the current state of the connected gamepads. */ void (*Sample)(PP_Instance instance, struct PP_GamepadsSampleData* data); }; typedef struct PPB_Gamepad_1_0 PPB_Gamepad; /** * @} */ #endif /* PPAPI_C_PPB_GAMEPAD_H_ */