src/haptic/SDL_syshaptic.h
author Edgar Simo <bobbens@gmail.com>
Thu, 10 Jul 2008 08:38:08 +0000
branchgsoc2008_force_feedback
changeset 2512 ef147ee4896c
parent 2495 66c02abeef0e
child 2515 030fc4375e63
permissions -rw-r--r--
Improved some ioctl handling.
Implemented SDL_MouseIsHaptic and SDL_HapticOpenFromMouse.
More code comments.
     1 /*
     2     SDL - Simple DirectMedia Layer
     3     Copyright (C) 2008 Edgar Simo
     4 
     5     This library is free software; you can redistribute it and/or
     6     modify it under the terms of the GNU Lesser General Public
     7     License as published by the Free Software Foundation; either
     8     version 2.1 of the License, or (at your option) any later version.
     9 
    10     This library is distributed in the hope that it will be useful,
    11     but WITHOUT ANY WARRANTY; without even the implied warranty of
    12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    13     Lesser General Public License for more details.
    14 
    15     You should have received a copy of the GNU Lesser General Public
    16     License along with this library; if not, write to the Free Software
    17     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
    18 
    19     Sam Lantinga
    20     slouken@libsdl.org
    21 */
    22 
    23 #include "SDL_config.h"
    24 
    25 #include "SDL_haptic.h"
    26 
    27 
    28 /*
    29  * Number of haptic devices on the system.
    30  */
    31 extern Uint8 SDL_numhaptics;
    32 
    33 
    34 struct haptic_effect
    35 {
    36    SDL_HapticEffect effect; /* The current event */
    37    struct haptic_hweffect *hweffect; /* The hardware behind the event */
    38 };
    39 
    40 /*
    41  * The real SDL_Haptic event.
    42  */
    43 struct _SDL_Haptic
    44 {  
    45    Uint8 index; /* Stores index it is attached to */
    46    const char* name; /* Stores the name of the device */
    47 
    48    struct haptic_effect *effects; /* Allocated effects */
    49    int neffects; /* Maximum amount of effects */
    50    unsigned int supported; /* Supported effects */
    51 
    52    struct haptic_hwdata *hwdata; /* Driver dependent */
    53    int ref_count; /* Count for multiple opens */
    54 };
    55 
    56 /* 
    57  * Scans the system for haptic devices.
    58  *
    59  * Returns 0 on success, -1 on error.
    60  */
    61 extern int SDL_SYS_HapticInit(void);
    62 
    63 /*
    64  * Gets the device dependent name of the haptic device
    65  */
    66 extern const char * SDL_SYS_HapticName(int index);
    67 
    68 /*
    69  * Opens the haptic device for usage.  The haptic device should have
    70  * the index value set previously.
    71  *
    72  * Returns 0 on success, -1 on error.
    73  */
    74 extern int SDL_SYS_HapticOpen(SDL_Haptic * haptic);
    75 
    76 /*
    77  * Returns the index of the haptic core pointer or -1 if none is found.
    78  */
    79 int SDL_SYS_HapticMouse(void);
    80 
    81 /*
    82  * Checks to see if the joystick has haptic capabilities.
    83  *
    84  * Returns >0 if haptic capabilities are detected, 0 if haptic
    85  * capabilities aren't detected and -1 on error.
    86  */
    87 extern int SDL_JoystickIsHaptic(SDL_Joystick * joystick);
    88 
    89 /*
    90  * Opens the haptic device for usage using the same device as
    91  * the joystick.
    92  *
    93  * Returns 0 on success, -1 on error.
    94  */
    95 extern int SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic,
    96                                           SDL_Joystick * joystick);
    97 /*
    98  * Checks to see if haptic device and joystick device are the same.
    99  *
   100  * Returns 1 if they are the same, 0 if they aren't.
   101  */
   102 extern int SDL_SYS_JoystickSameHaptic(SDL_Haptic * haptic,
   103                                       SDL_Joystick * joystick);
   104 
   105 /*
   106  * Closes a haptic device after usage.
   107  */
   108 extern void SDL_SYS_HapticClose(SDL_Haptic * haptic);
   109 
   110 /*
   111  * Performs a cleanup on the haptic subsystem.
   112  */
   113 extern void SDL_SYS_HapticQuit(void);
   114 
   115 /*
   116  * Creates a new haptic effect on the haptic device using base
   117  * as a template for the effect.
   118  *
   119  * Returns 0 on success, -1 on error.
   120  */
   121 extern int SDL_SYS_HapticNewEffect(SDL_Haptic * haptic,
   122                                  struct haptic_effect * effect,
   123                                  SDL_HapticEffect * base);
   124 
   125 /*
   126  * Updates the haptic effect on the haptic device using data
   127  * as a template.
   128  *
   129  * Returns 0 on success, -1 on error.
   130  */
   131 extern int SDL_SYS_HapticUpdateEffect(SDL_Haptic * haptic,
   132                                       struct haptic_effect * effect,
   133                                       SDL_HapticEffect * data);
   134 
   135 /*
   136  * Runs the effect on the haptic device.
   137  *
   138  * Returns 0 on success, -1 on error.
   139  */
   140 extern int SDL_SYS_HapticRunEffect(SDL_Haptic * haptic,
   141                                    struct haptic_effect * effect);
   142 
   143 /*
   144  * Stops the effect on the haptic device.
   145  *
   146  * Returns 0 on success, -1 on error.
   147  */
   148 extern int SDL_SYS_HapticStopEffect(SDL_Haptic * haptic,
   149                                     struct haptic_effect * effect);
   150 
   151 /*
   152  * Cleanups up the effect on the haptic device.
   153  */
   154 extern void SDL_SYS_HapticDestroyEffect(SDL_Haptic * haptic,
   155                                         struct haptic_effect * effect);
   156 
   157 /*
   158  * Queries the device for the status of effect.
   159  *
   160  * Returns 0 if device is stopped, >0 if device is playing and
   161  * -1 on error.
   162  */
   163 extern int SDL_SYS_HapticGetEffectStatus(SDL_Haptic * haptic,
   164                                          struct haptic_effect * effect);
   165 
   166 /*
   167  * Sets the global gain of the haptic device.
   168  *
   169  * Returns 0 on success, -1 on error.
   170  */
   171 extern int SDL_SYS_HapticSetGain(SDL_Haptic * haptic, int gain);
   172 
   173 /*
   174  * Sets the autocenter feature of the haptic device.
   175  *
   176  * Returns 0 on success, -1 on error.
   177  */
   178 extern int SDL_SYS_HapticSetAutocenter(SDL_Haptic * haptic,
   179                                        int autocenter);
   180 
   181