src/haptic/SDL_syshaptic.h
author Sam Lantinga <slouken@libsdl.org>
Tue, 15 Dec 2009 08:11:06 +0000
changeset 3565 f43c8f688f77
parent 2713 0906692aa6a4
child 5360 220d3af9121f
permissions -rw-r--r--
Fixed bug #906

Added better error reporting for OpenGL context creation failing.
     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 struct.
    42  */
    43 struct _SDL_Haptic
    44 {
    45     Uint8 index;                /* Stores index it is attached to */
    46 
    47     struct haptic_effect *effects;      /* Allocated effects */
    48     int neffects;               /* Maximum amount of effects */
    49     int nplaying;               /* Maximum amount of effects to play at the same time */
    50     unsigned int supported;     /* Supported effects */
    51     int naxes;                  /* Number of axes on the device. */
    52 
    53     struct haptic_hwdata *hwdata;       /* Driver dependent */
    54     int ref_count;              /* Count for multiple opens */
    55 };
    56 
    57 /* 
    58  * Scans the system for haptic devices.
    59  *
    60  * Returns 0 on success, -1 on error.
    61  */
    62 extern int SDL_SYS_HapticInit(void);
    63 
    64 /*
    65  * Gets the device dependent name of the haptic device
    66  */
    67 extern const char *SDL_SYS_HapticName(int index);
    68 
    69 /*
    70  * Opens the haptic device for usage.  The haptic device should have
    71  * the index value set previously.
    72  *
    73  * Returns 0 on success, -1 on error.
    74  */
    75 extern int SDL_SYS_HapticOpen(SDL_Haptic * haptic);
    76 
    77 /*
    78  * Returns the index of the haptic core pointer or -1 if none is found.
    79  */
    80 int SDL_SYS_HapticMouse(void);
    81 
    82 /*
    83  * Checks to see if the joystick has haptic capabilities.
    84  *
    85  * Returns >0 if haptic capabilities are detected, 0 if haptic
    86  * capabilities aren't detected and -1 on error.
    87  */
    88 extern int SDL_SYS_JoystickIsHaptic(SDL_Joystick * joystick);
    89 
    90 /*
    91  * Opens the haptic device for usage using the same device as
    92  * the joystick.
    93  *
    94  * Returns 0 on success, -1 on error.
    95  */
    96 extern int SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic,
    97                                           SDL_Joystick * joystick);
    98 /*
    99  * Checks to see if haptic device and joystick device are the same.
   100  *
   101  * Returns 1 if they are the same, 0 if they aren't.
   102  */
   103 extern int SDL_SYS_JoystickSameHaptic(SDL_Haptic * haptic,
   104                                       SDL_Joystick * joystick);
   105 
   106 /*
   107  * Closes a haptic device after usage.
   108  */
   109 extern void SDL_SYS_HapticClose(SDL_Haptic * haptic);
   110 
   111 /*
   112  * Performs a cleanup on the haptic subsystem.
   113  */
   114 extern void SDL_SYS_HapticQuit(void);
   115 
   116 /*
   117  * Creates a new haptic effect on the haptic device using base
   118  * as a template for the effect.
   119  *
   120  * Returns 0 on success, -1 on error.
   121  */
   122 extern int SDL_SYS_HapticNewEffect(SDL_Haptic * haptic,
   123                                    struct haptic_effect *effect,
   124                                    SDL_HapticEffect * base);
   125 
   126 /*
   127  * Updates the haptic effect on the haptic device using data
   128  * as a template.
   129  *
   130  * Returns 0 on success, -1 on error.
   131  */
   132 extern int SDL_SYS_HapticUpdateEffect(SDL_Haptic * haptic,
   133                                       struct haptic_effect *effect,
   134                                       SDL_HapticEffect * data);
   135 
   136 /*
   137  * Runs the effect on the haptic device.
   138  *
   139  * Returns 0 on success, -1 on error.
   140  */
   141 extern int SDL_SYS_HapticRunEffect(SDL_Haptic * haptic,
   142                                    struct haptic_effect *effect,
   143                                    Uint32 iterations);
   144 
   145 /*
   146  * Stops the effect on the haptic device.
   147  *
   148  * Returns 0 on success, -1 on error.
   149  */
   150 extern int SDL_SYS_HapticStopEffect(SDL_Haptic * haptic,
   151                                     struct haptic_effect *effect);
   152 
   153 /*
   154  * Cleanups up the effect on the haptic device.
   155  */
   156 extern void SDL_SYS_HapticDestroyEffect(SDL_Haptic * haptic,
   157                                         struct haptic_effect *effect);
   158 
   159 /*
   160  * Queries the device for the status of effect.
   161  *
   162  * Returns 0 if device is stopped, >0 if device is playing and
   163  * -1 on error.
   164  */
   165 extern int SDL_SYS_HapticGetEffectStatus(SDL_Haptic * haptic,
   166                                          struct haptic_effect *effect);
   167 
   168 /*
   169  * Sets the global gain of the haptic device.
   170  *
   171  * Returns 0 on success, -1 on error.
   172  */
   173 extern int SDL_SYS_HapticSetGain(SDL_Haptic * haptic, int gain);
   174 
   175 /*
   176  * Sets the autocenter feature of the haptic device.
   177  *
   178  * Returns 0 on success, -1 on error.
   179  */
   180 extern int SDL_SYS_HapticSetAutocenter(SDL_Haptic * haptic, int autocenter);
   181 
   182 /*
   183  * Pauses the haptic device.
   184  *
   185  * Returns 0 on success, -1 on error.
   186  */
   187 extern int SDL_SYS_HapticPause(SDL_Haptic * haptic);
   188 
   189 /*
   190  * Unpauses the haptic device.
   191  *
   192  * Returns 0 on success, -1 on error.
   193  */
   194 extern int SDL_SYS_HapticUnpause(SDL_Haptic * haptic);
   195 
   196 /*
   197  * Stops all the currently playing haptic effects on the device.
   198  *
   199  * Returns 0 on success, -1 on error.
   200  */
   201 extern int SDL_SYS_HapticStopAll(SDL_Haptic * haptic);