include/SDL_haptic.h
author Edgar Simo <bobbens@gmail.com>
Mon, 30 Jun 2008 16:48:16 +0000
branchgsoc2008_force_feedback
changeset 2477 97f75ea43a93
parent 2476 242d8a668ebb
child 2478 4fd783e0f34b
permissions -rw-r--r--
Starting to add infrastructure to handle haptic effects.
     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 /**
    24  * \file SDL_haptic.h
    25  *
    26  * Include file for SDL haptic subsystem
    27  */
    28 
    29 #ifndef _SDL_haptic_h
    30 #define _SDL_haptic_h
    31 
    32 #include "SDL_stdinc.h"
    33 #include "SDL_error.h"
    34 
    35 #include "begin_code.h"
    36 /* Set up for C function definitions, even when using C++ */
    37 #ifdef __cplusplus
    38 /* *INDENT-OFF* */
    39 extern "C" {
    40    /* *INDENT-ON* */                                                         
    41 #endif
    42 
    43 /* The haptic structure used to identify an SDL haptic */
    44 struct _SDL_Haptic;                                                     
    45 typedef struct _SDL_Haptic SDL_Haptic;
    46 
    47 
    48 /* Different effects that can be generated */
    49 #define SDL_HAPTIC_CONSTANT   (1<<0)
    50 #define SDL_HAPTIC_PERIODIC   (1<<1)
    51 #define SDL_HAPTIC_RAMP       (1<<2)
    52 #define SDL_HAPTIC_SPRING     (1<<3)
    53 #define SDL_HAPTIC_FRICTION   (1<<4)
    54 #define SDL_HAPTIC_DAMPER     (1<<5)
    55 #define SDL_HAPTIC_RUMBLE     (1<<6)
    56 #define SDL_HAPTIC_INERTIA    (1<<7)
    57 #define SDL_HAPTIC_GAIN       (1<<8)
    58 #define SDL_HAPTIC_AUTOCENTER (1<<9)
    59 
    60 typedef struct SDL_HapticConstant {
    61    /* Header */
    62    Uint16 type;
    63    Uint16 length;
    64    Uint16 delay;
    65    Uint16 direction;
    66 } SDL_HapticConstant;
    67 
    68 typedef union SDL_HapticEffect {
    69    /* Common for all force feedback effects */
    70    Uint16 type; /* Effect type */
    71    SDL_HapticConstant constant; /* Constant effect */
    72 } SDL_HapticEffect;
    73 
    74 
    75 /* Function prototypes */
    76 /*
    77  * Count the number of joysticks attached to the system
    78  */
    79 extern DECLSPEC int SDLCALL SDL_NumHaptics(void);
    80 
    81 /*
    82  * Get the implementation dependent name of a Haptic device.
    83  * This can be called before any joysticks are opened.
    84  * If no name can be found, this function returns NULL.
    85  */
    86 extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index);
    87 
    88 /*
    89  * Opens a Haptic device for usage - the index passed as an
    90  * argument refers to the N'th Haptic device on this system.
    91  *
    92  * This function returns a Haptic device identifier, or Null
    93  * if an error occurred.
    94  */
    95 extern DECLSPEC SDL_Haptic * SDL_HapticOpen(int device_index);
    96 
    97 /* 
    98  * Closes a Haptic device previously opened with SDL_HapticOpen.
    99  */
   100 extern DECLSPEC void SDL_HapticClose(SDL_Haptic * haptic);
   101 
   102 /*
   103  * Creates a new haptic effect on the device.
   104  */
   105 extern DECLSPEC int SDL_HapticNewEffect(SDL_Haptic * haptic, SDL_HapticEffect * effect);
   106 
   107 /*
   108  * Runs the haptic effect on it's assosciated haptic device.
   109  */
   110 extern DECLSPEC int SDL_HapticRunEffect(SDL_Haptic * haptic, int effect);
   111 
   112 /*
   113  * Destroys a haptic effect on the device.
   114  */
   115 extern DECLSPEC void SDL_HapticDestroyEffect(SDL_Haptic * haptic, int effect);
   116 
   117 
   118 /* Ends C function definitions when using C++ */
   119 #ifdef __cplusplus
   120 /* *INDENT-OFF* */
   121 }
   122 /* *INDENT-ON* */
   123 #endif
   124 #include "close_code.h"
   125 
   126 #endif /* _SDL_haptic_h */
   127 
   128 /* vi: set ts=4 sw=4 expandtab: */
   129 
   130