Commit | Line | Data |
---|---|---|
ef79bbde P |
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); |