author  Edgar Simo <bobbens@gmail.com> 
Tue, 01 Jul 2008 16:19:54 +0000  
branch  gsoc2008_force_feedback 
changeset 2486  24dd8b8669fa 
parent 2485  67978eea6d10 
child 2487  4c8e25ef2d97 
permissions  rwrr 
2472
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1 
/* 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

2 
SDL  Simple DirectMedia Layer 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

3 
Copyright (C) 2008 Edgar Simo 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

4 

3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

5 
This library is free software; you can redistribute it and/or 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

6 
modify it under the terms of the GNU Lesser General Public 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

7 
License as published by the Free Software Foundation; either 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

8 
version 2.1 of the License, or (at your option) any later version. 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

9 

3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

10 
This library is distributed in the hope that it will be useful, 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

11 
but WITHOUT ANY WARRANTY; without even the implied warranty of 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

12 
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

13 
Lesser General Public License for more details. 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

14 

3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

15 
You should have received a copy of the GNU Lesser General Public 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

16 
License along with this library; if not, write to the Free Software 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

17 
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

18 

3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

19 
Sam Lantinga 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

20 
slouken@libsdl.org 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

21 
*/ 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

22 

3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

23 
/** 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

24 
* \file SDL_haptic.h 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

25 
* 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

26 
* Include file for SDL haptic subsystem 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

27 
*/ 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

28 

3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

29 
#ifndef _SDL_haptic_h 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

30 
#define _SDL_haptic_h 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

31 

3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

32 
#include "SDL_stdinc.h" 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

33 
#include "SDL_error.h" 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

34 

3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

35 
#include "begin_code.h" 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

36 
/* Set up for C function definitions, even when using C++ */ 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

37 
#ifdef __cplusplus 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

38 
/* *INDENTOFF* */ 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

39 
extern "C" { 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

40 
/* *INDENTON* */ 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

41 
#endif 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

42 

3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

43 
/* The haptic structure used to identify an SDL haptic */ 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

44 
struct _SDL_Haptic; 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

45 
typedef struct _SDL_Haptic SDL_Haptic; 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

46 

3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

47 

3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

48 
/* Different effects that can be generated */ 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

49 
#define SDL_HAPTIC_CONSTANT (1<<0) 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

50 
#define SDL_HAPTIC_PERIODIC (1<<1) 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

51 
#define SDL_HAPTIC_RAMP (1<<2) 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

52 
#define SDL_HAPTIC_SPRING (1<<3) 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

53 
#define SDL_HAPTIC_FRICTION (1<<4) 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

54 
#define SDL_HAPTIC_DAMPER (1<<5) 
2482
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

55 
#define SDL_HAPTIC_INERTIA (1<<6) 
2486
24dd8b8669fa
Added SDL_HAPTIC_CUSTOM (not supported on linux).
Edgar Simo <bobbens@gmail.com>
parents:
2485
diff
changeset

56 
#define SDL_HAPTIC_CUSTOM (1<<7) 
24dd8b8669fa
Added SDL_HAPTIC_CUSTOM (not supported on linux).
Edgar Simo <bobbens@gmail.com>
parents:
2485
diff
changeset

57 
#define SDL_HAPTIC_GAIN (1<<8) 
24dd8b8669fa
Added SDL_HAPTIC_CUSTOM (not supported on linux).
Edgar Simo <bobbens@gmail.com>
parents:
2485
diff
changeset

58 
#define SDL_HAPTIC_AUTOCENTER (1<<9) 
2472
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

59 

2486
24dd8b8669fa
Added SDL_HAPTIC_CUSTOM (not supported on linux).
Edgar Simo <bobbens@gmail.com>
parents:
2485
diff
changeset

60 

24dd8b8669fa
Added SDL_HAPTIC_CUSTOM (not supported on linux).
Edgar Simo <bobbens@gmail.com>
parents:
2485
diff
changeset

61 
/* 
24dd8b8669fa
Added SDL_HAPTIC_CUSTOM (not supported on linux).
Edgar Simo <bobbens@gmail.com>
parents:
2485
diff
changeset

62 
* Different waveforms a SDL_HAPTIC_PERIODIC effect can have. 
24dd8b8669fa
Added SDL_HAPTIC_CUSTOM (not supported on linux).
Edgar Simo <bobbens@gmail.com>
parents:
2485
diff
changeset

63 
*/ 
2481  64 
typedef enum SDL_waveform { 
65 
SDL_WAVEFORM_SINE, 

66 
SDL_WAVEFORM_SQUARE, 

67 
SDL_WAVEFORM_TRIANGLE, 

68 
SDL_WAVEFORM_SAWTOOTHUP, 

2486
24dd8b8669fa
Added SDL_HAPTIC_CUSTOM (not supported on linux).
Edgar Simo <bobbens@gmail.com>
parents:
2485
diff
changeset

69 
SDL_WAVEFORM_SAWTOOTHDOWN, 
24dd8b8669fa
Added SDL_HAPTIC_CUSTOM (not supported on linux).
Edgar Simo <bobbens@gmail.com>
parents:
2485
diff
changeset

70 
SDL_WAVEFORM_CUSTOM 
2481  71 
} SDL_waveform; 
72 

73 

74 
/* 

75 
* All values max at 32767 (0x7fff). Signed values also can be negative. 

76 
* Time values unless specified otherwise are in milliseconds. 

77 
* 

78 
* Common parts: 

79 
* 

80 
* Replay: 

81 
* Uint16 length; Duration of effect. 

82 
* Uint16 delay; Delay before starting effect. 

83 
* 

84 
* Trigger: 

85 
* Uint16 button; Button that triggers effect. 

86 
* Uint16 interval; How soon before effect can be triggered again. 

87 
* 

88 
* Envelope: 

89 
* Uint16 attack_length; Duration of the attack. 

90 
* Uint16 attack_level; Level at the start of the attack. 

91 
* Uint16 fade_length; Duration of the fade out. 

92 
* Uint16 fade_level; Level at the end of the fade. 

93 
*/ 

2477
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

94 
typedef struct SDL_HapticConstant { 
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

95 
/* Header */ 
2481  96 
Uint16 type; /* SDL_HAPTIC_CONSTANT */ 
2480  97 
Uint16 direction; 
98 

99 
/* Replay */ 

2477
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

100 
Uint16 length; 
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

101 
Uint16 delay; 
2480  102 

103 
/* Trigger */ 

104 
Uint16 button; 

105 
Uint16 interval; 

106 

107 
/* Constant */ 

2481  108 
Sint16 level; /* Strength of the constant effect. */ 
2480  109 

110 
/* Envelope */ 

111 
Uint16 attack_length; 

112 
Uint16 attack_level; 

113 
Uint16 fade_length; 

114 
Uint16 fade_level; 

115 
} SDL_HapticConstant; 

116 
typedef struct SDL_HapticPeriodic { 

117 
/* Header */ 

2481  118 
Uint16 type; /* SDL_HAPTIC_PERIODIC */ 
2477
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

119 
Uint16 direction; 
2480  120 

121 
/* Replay */ 

122 
Uint16 length; 

123 
Uint16 delay; 

124 

125 
/* Trigger */ 

126 
Uint16 button; 

127 
Uint16 interval; 

128 

129 
/* Periodic */ 

2481  130 
SDL_waveform waveform; /* Type of effect */ 
131 
Uint16 period; /* Period of the wave */ 

132 
Sint16 magnitude; /* Peak value */ 

133 
Sint16 offset; /* Mean value of the wave */ 

134 
Uint16 phase; /* Horizontal shift */ 

2480  135 

136 
/* Envelope */ 

137 
Uint16 attack_length; 

138 
Uint16 attack_level; 

139 
Uint16 fade_length; 

140 
Uint16 fade_level; 

141 
} SDL_HapticPeriodic; 

2482
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

142 
typedef struct SDL_HapticCondition { 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

143 
/* Header */ 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

144 
Uint16 type; /* SDL_HAPTIC_{SPRING,DAMPER,INERTIA,FRICTION} */ 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

145 
Uint16 direction; 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

146 

b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

147 
/* Replay */ 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

148 
Uint16 length; 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

149 
Uint16 delay; 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

150 

b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

151 
/* Trigger */ 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

152 
Uint16 button; 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

153 
Uint16 interval; 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

154 

b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

155 
/* Condition */ 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

156 
Uint16 right_sat; /* Level when joystick is to the right. */ 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

157 
Uint16 left_sat; /* Level when joystick is to the left */ 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

158 
Sint16 right_coeff; /* How fast to increase the force towards the right */ 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

159 
Sint16 left_coeff; /* How fast to increase the force towards the left */ 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

160 
Uint16 deadband; /* Size of the dead zone */ 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

161 
Sint16 center; /* Position of the dead zone */ 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

162 
} SDL_HapticCondition; 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

163 
typedef struct SDL_HapticRamp { 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

164 
/* Header */ 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

165 
Uint16 type; /* SDL_HAPTIC_RAMP */ 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

166 
Uint16 direction; 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

167 

b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

168 
/* Replay */ 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

169 
Uint16 length; 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

170 
Uint16 delay; 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

171 

b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

172 
/* Trigger */ 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

173 
Uint16 button; 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

174 
Uint16 interval; 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

175 

b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

176 
/* Ramp */ 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

177 
Sint16 start; 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

178 
Sint16 end; 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

179 

b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

180 
/* Envelope */ 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

181 
Uint16 attack_length; 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

182 
Uint16 attack_level; 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

183 
Uint16 fade_length; 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

184 
Uint16 fade_level; 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

185 
} SDL_HapticRamp; 
2477
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

186 

97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

187 
typedef union SDL_HapticEffect { 
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

188 
/* Common for all force feedback effects */ 
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

189 
Uint16 type; /* Effect type */ 
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

190 
SDL_HapticConstant constant; /* Constant effect */ 
2480  191 
SDL_HapticPeriodic periodic; /* Periodic effect */ 
2482
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

192 
SDL_HapticCondition condition; /* Condition effect */ 
b51ad78812d5
Removed the linux only SDL_HAPTIC_RUMBLE (use PERIODIC instead).
Edgar Simo <bobbens@gmail.com>
parents:
2481
diff
changeset

193 
SDL_HapticRamp ramp; /* Ramp effect */ 
2477
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

194 
} SDL_HapticEffect; 
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

195 

2472
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

196 

3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

197 
/* Function prototypes */ 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

198 
/* 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

199 
* Count the number of joysticks attached to the system 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

200 
*/ 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

201 
extern DECLSPEC int SDLCALL SDL_NumHaptics(void); 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

202 

3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

203 
/* 
2476
242d8a668ebb
* Implemented opening and closing of haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2472
diff
changeset

204 
* Get the implementation dependent name of a Haptic device. 
2472
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

205 
* This can be called before any joysticks are opened. 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

206 
* If no name can be found, this function returns NULL. 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

207 
*/ 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

208 
extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index); 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

209 

2476
242d8a668ebb
* Implemented opening and closing of haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2472
diff
changeset

210 
/* 
242d8a668ebb
* Implemented opening and closing of haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2472
diff
changeset

211 
* Opens a Haptic device for usage  the index passed as an 
242d8a668ebb
* Implemented opening and closing of haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2472
diff
changeset

212 
* argument refers to the N'th Haptic device on this system. 
242d8a668ebb
* Implemented opening and closing of haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2472
diff
changeset

213 
* 
242d8a668ebb
* Implemented opening and closing of haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2472
diff
changeset

214 
* This function returns a Haptic device identifier, or Null 
242d8a668ebb
* Implemented opening and closing of haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2472
diff
changeset

215 
* if an error occurred. 
242d8a668ebb
* Implemented opening and closing of haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2472
diff
changeset

216 
*/ 
242d8a668ebb
* Implemented opening and closing of haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2472
diff
changeset

217 
extern DECLSPEC SDL_Haptic * SDL_HapticOpen(int device_index); 
242d8a668ebb
* Implemented opening and closing of haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2472
diff
changeset

218 

242d8a668ebb
* Implemented opening and closing of haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2472
diff
changeset

219 
/* 
242d8a668ebb
* Implemented opening and closing of haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2472
diff
changeset

220 
* Closes a Haptic device previously opened with SDL_HapticOpen. 
242d8a668ebb
* Implemented opening and closing of haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2472
diff
changeset

221 
*/ 
242d8a668ebb
* Implemented opening and closing of haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2472
diff
changeset

222 
extern DECLSPEC void SDL_HapticClose(SDL_Haptic * haptic); 
242d8a668ebb
* Implemented opening and closing of haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2472
diff
changeset

223 

2477
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

224 
/* 
2478
4fd783e0f34b
Added query functions for haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2477
diff
changeset

225 
* Returns the number of effects a haptic device can store. 
4fd783e0f34b
Added query functions for haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2477
diff
changeset

226 
*/ 
4fd783e0f34b
Added query functions for haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2477
diff
changeset

227 
extern DECLSPEC int SDL_HapticNumEffects(SDL_Haptic * haptic); 
4fd783e0f34b
Added query functions for haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2477
diff
changeset

228 

4fd783e0f34b
Added query functions for haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2477
diff
changeset

229 
/* 
4fd783e0f34b
Added query functions for haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2477
diff
changeset

230 
* Returns the supported effects. Individual effects can be queried by 
4fd783e0f34b
Added query functions for haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2477
diff
changeset

231 
* bitwise operators. 
4fd783e0f34b
Added query functions for haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2477
diff
changeset

232 
* 
4fd783e0f34b
Added query functions for haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2477
diff
changeset

233 
* Example: (SDL_HapticQueryEffects(haptic) & SDL_HAPTIC_CONSTANT) 
4fd783e0f34b
Added query functions for haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2477
diff
changeset

234 
*/ 
4fd783e0f34b
Added query functions for haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2477
diff
changeset

235 
extern DECLSPEC unsigned int SDL_HapticQueryEffects(SDL_Haptic * haptic); 
4fd783e0f34b
Added query functions for haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2477
diff
changeset

236 

4fd783e0f34b
Added query functions for haptic devices.
Edgar Simo <bobbens@gmail.com>
parents:
2477
diff
changeset

237 
/* 
2486
24dd8b8669fa
Added SDL_HAPTIC_CUSTOM (not supported on linux).
Edgar Simo <bobbens@gmail.com>
parents:
2485
diff
changeset

238 
* Checks to see if effect is supported by haptic. 
24dd8b8669fa
Added SDL_HAPTIC_CUSTOM (not supported on linux).
Edgar Simo <bobbens@gmail.com>
parents:
2485
diff
changeset

239 
* 
24dd8b8669fa
Added SDL_HAPTIC_CUSTOM (not supported on linux).
Edgar Simo <bobbens@gmail.com>
parents:
2485
diff
changeset

240 
* Returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't and 1 
24dd8b8669fa
Added SDL_HAPTIC_CUSTOM (not supported on linux).
Edgar Simo <bobbens@gmail.com>
parents:
2485
diff
changeset

241 
* on error. 
24dd8b8669fa
Added SDL_HAPTIC_CUSTOM (not supported on linux).
Edgar Simo <bobbens@gmail.com>
parents:
2485
diff
changeset

242 
*/ 
24dd8b8669fa
Added SDL_HAPTIC_CUSTOM (not supported on linux).
Edgar Simo <bobbens@gmail.com>
parents:
2485
diff
changeset

243 
extern DECLSPEC int SDL_HapticEffectSupported(SDL_Haptic * haptic, SDL_HapticEffect * effect); 
24dd8b8669fa
Added SDL_HAPTIC_CUSTOM (not supported on linux).
Edgar Simo <bobbens@gmail.com>
parents:
2485
diff
changeset

244 

24dd8b8669fa
Added SDL_HAPTIC_CUSTOM (not supported on linux).
Edgar Simo <bobbens@gmail.com>
parents:
2485
diff
changeset

245 
/* 
2477
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

246 
* Creates a new haptic effect on the device. 
2483
9d52368ebcf5
Setting effects memory to 0.
Edgar Simo <bobbens@gmail.com>
parents:
2482
diff
changeset

247 
* 
9d52368ebcf5
Setting effects memory to 0.
Edgar Simo <bobbens@gmail.com>
parents:
2482
diff
changeset

248 
* Returns the id of the effect on success, 1 on failure. 
2477
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

249 
*/ 
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

250 
extern DECLSPEC int SDL_HapticNewEffect(SDL_Haptic * haptic, SDL_HapticEffect * effect); 
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

251 

97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

252 
/* 
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

253 
* Runs the haptic effect on it's assosciated haptic device. 
2483
9d52368ebcf5
Setting effects memory to 0.
Edgar Simo <bobbens@gmail.com>
parents:
2482
diff
changeset

254 
* 
9d52368ebcf5
Setting effects memory to 0.
Edgar Simo <bobbens@gmail.com>
parents:
2482
diff
changeset

255 
* Returns 0 on success or 1 on failure. 
2477
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

256 
*/ 
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

257 
extern DECLSPEC int SDL_HapticRunEffect(SDL_Haptic * haptic, int effect); 
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

258 

97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

259 
/* 
2485
67978eea6d10
Added SDL_HapticStopEffect().
Edgar Simo <bobbens@gmail.com>
parents:
2484
diff
changeset

260 
* Stops the haptic effect on it's assosciated haptic device. 
67978eea6d10
Added SDL_HapticStopEffect().
Edgar Simo <bobbens@gmail.com>
parents:
2484
diff
changeset

261 
* 
67978eea6d10
Added SDL_HapticStopEffect().
Edgar Simo <bobbens@gmail.com>
parents:
2484
diff
changeset

262 
* Returns 0 on success or 1 on failure. 
67978eea6d10
Added SDL_HapticStopEffect().
Edgar Simo <bobbens@gmail.com>
parents:
2484
diff
changeset

263 
*/ 
67978eea6d10
Added SDL_HapticStopEffect().
Edgar Simo <bobbens@gmail.com>
parents:
2484
diff
changeset

264 
extern DECLSPEC int SDL_HapticStopEffect(SDL_Haptic * haptic, int effect); 
67978eea6d10
Added SDL_HapticStopEffect().
Edgar Simo <bobbens@gmail.com>
parents:
2484
diff
changeset

265 

67978eea6d10
Added SDL_HapticStopEffect().
Edgar Simo <bobbens@gmail.com>
parents:
2484
diff
changeset

266 
/* 
67978eea6d10
Added SDL_HapticStopEffect().
Edgar Simo <bobbens@gmail.com>
parents:
2484
diff
changeset

267 
* Destroys a haptic effect on the device. This will stop the effect if it's 
67978eea6d10
Added SDL_HapticStopEffect().
Edgar Simo <bobbens@gmail.com>
parents:
2484
diff
changeset

268 
* running. 
2477
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

269 
*/ 
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

270 
extern DECLSPEC void SDL_HapticDestroyEffect(SDL_Haptic * haptic, int effect); 
97f75ea43a93
Starting to add infrastructure to handle haptic effects.
Edgar Simo <bobbens@gmail.com>
parents:
2476
diff
changeset

271 

2483
9d52368ebcf5
Setting effects memory to 0.
Edgar Simo <bobbens@gmail.com>
parents:
2482
diff
changeset

272 
/* 
9d52368ebcf5
Setting effects memory to 0.
Edgar Simo <bobbens@gmail.com>
parents:
2482
diff
changeset

273 
* Sets the global gain of the device. Gain should be between 0 and 100. 
9d52368ebcf5
Setting effects memory to 0.
Edgar Simo <bobbens@gmail.com>
parents:
2482
diff
changeset

274 
* 
9d52368ebcf5
Setting effects memory to 0.
Edgar Simo <bobbens@gmail.com>
parents:
2482
diff
changeset

275 
* Returns 0 on success or 1 on failure. 
9d52368ebcf5
Setting effects memory to 0.
Edgar Simo <bobbens@gmail.com>
parents:
2482
diff
changeset

276 
*/ 
9d52368ebcf5
Setting effects memory to 0.
Edgar Simo <bobbens@gmail.com>
parents:
2482
diff
changeset

277 
extern DECLSPEC int SDL_HapticSetGain(SDL_Haptic * haptic, int gain); 
9d52368ebcf5
Setting effects memory to 0.
Edgar Simo <bobbens@gmail.com>
parents:
2482
diff
changeset

278 

2484
666472fd4cb0
HapticSetGain checks to see if device supports it.
Edgar Simo <bobbens@gmail.com>
parents:
2483
diff
changeset

279 
/* 
666472fd4cb0
HapticSetGain checks to see if device supports it.
Edgar Simo <bobbens@gmail.com>
parents:
2483
diff
changeset

280 
* Sets the global autocenter of the device. Autocenter should be between 
666472fd4cb0
HapticSetGain checks to see if device supports it.
Edgar Simo <bobbens@gmail.com>
parents:
2483
diff
changeset

281 
* 0 and 100. Setting it to 0 will disable autocentering. 
666472fd4cb0
HapticSetGain checks to see if device supports it.
Edgar Simo <bobbens@gmail.com>
parents:
2483
diff
changeset

282 
* 
666472fd4cb0
HapticSetGain checks to see if device supports it.
Edgar Simo <bobbens@gmail.com>
parents:
2483
diff
changeset

283 
* Returns 0 on success or 1 on failure. 
666472fd4cb0
HapticSetGain checks to see if device supports it.
Edgar Simo <bobbens@gmail.com>
parents:
2483
diff
changeset

284 
*/ 
666472fd4cb0
HapticSetGain checks to see if device supports it.
Edgar Simo <bobbens@gmail.com>
parents:
2483
diff
changeset

285 
extern DECLSPEC int SDL_HapticSetAutocenter(SDL_Haptic * haptic, int autocenter); 
666472fd4cb0
HapticSetGain checks to see if device supports it.
Edgar Simo <bobbens@gmail.com>
parents:
2483
diff
changeset

286 

2472
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

287 

3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

288 
/* Ends C function definitions when using C++ */ 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

289 
#ifdef __cplusplus 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

290 
/* *INDENTOFF* */ 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

291 
} 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

292 
/* *INDENTON* */ 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

293 
#endif 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

294 
#include "close_code.h" 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

295 

3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

296 
#endif /* _SDL_haptic_h */ 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

297 

3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

298 
/* vi: set ts=4 sw=4 expandtab: */ 
3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

299 

3f73c88c9abb
First commit of the SDL_haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

300 