This repository has been archived by the owner on Feb 11, 2021. It is now read-only.
/
SDL_haptic.h
695 lines (643 loc) · 20.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
SDL - Simple DirectMedia Layer
Copyright (C) 2008 Edgar Simo
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Sam Lantinga
slouken@libsdl.org
*/
23
/** \file SDL_haptic.h */
24
/**
25
* \mainpage SDL_haptic
26
*
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
* The SDL Haptic subsystem allows you to control haptic (force feedback)
* devices.
*
* The basic usage is as follows:
* - Initialize the Subsystem (SDL_INIT_HAPTIC).
* - Open a Haptic Device.
* - SDL_HapticOpen(...) to open from index.
* - SDL_HapticOpenFromJoystick(...) to open from an existing joystick.
* - Create an effect (SDL_HapticEffect).
* - Upload the effect with SDL_HapticNewEffect(...).
* - Run the effect with SDL_HapticRunEffect(...).
* - (optional) Free the effect with SDL_HapticDestroyEffect(...).
* - Close the haptic device with SDL_HapticClose(...).
*
*
* Example:
*
* \code
* int test_haptic( SDL_Joystick * joystick ) {
* SDL_Haptic *haptic;
* SDL_HapticEffect effect;
* int effect_id;
*
* // Open the device
* haptic = SDL_HapticOpenFromJoystick( joystick );
* if (haptic == NULL) return -1; // Most likely joystick isn't haptic
*
* // See if it can do sine waves
* if ((SDL_HapticQueryEffects(haptic) & SDL_HAPTIC_SINE)==0) {
* SDL_HapticClose(haptic); // No sine effect
* return -1;
* }
*
* // Create the effect
* memset( &effect, 0, sizeof(SDL_HapticEffect) ); // 0 is safe default
* effect.type = SDL_HAPTIC_SINE;
* effect.periodic.period = 1000; // 1000 ms
* effect.periodic.magnitude = 20000; // 20000/32767 strength
* effect.periodic.length = 5000; // 5 seconds long
* effect.periodic.attack_length = 1000; // Takes 1 second to get max strength
* effect.periodic.fade_length = 1000; // Takes 1 second to fade away
*
* // Upload the effect
* effect_id = SDL_HapticNewEffect( haptic, &effect );
*
* // Test the effect
* SDL_HapticRunEffect( haptic, effect_id );
* SDL_Delay( 5000); // Wait for the effect to finish
*
* // We destroy the effect, although closing the device also does this
* SDL_HapticDestroyEffect( haptic, effect_id );
*
* // Close the device
* SDL_HapticClose(haptic);
*
* return 0; // Success
* }
* \endcode
*
* \author Edgar Simo Serra
87
88
89
90
91
92
93
*/
#ifndef _SDL_haptic_h
#define _SDL_haptic_h
#include "SDL_stdinc.h"
#include "SDL_error.h"
94
#include "SDL_joystick.h"
95
96
97
98
99
100
101
#include "begin_code.h"
/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus
/* *INDENT-OFF* */
extern "C" {
/* *INDENT-ON* */
102
#endif /* __cpluspuls */
103
104
105
106
107
108
109
110
111
112
/**
* \struct SDL_Haptic
*
* \brief The haptic structure used to identify an SDL haptic.
*
* \sa SDL_HapticOpen
* \sa SDL_HapticOpenFromJoystick
* \sa SDL_HapticClose
*/
113
114
115
116
struct _SDL_Haptic;
typedef struct _SDL_Haptic SDL_Haptic;
117
118
119
/*
* Different haptic features a device can have.
*/
120
121
122
123
124
125
126
/**
* \def SDL_HAPTIC_CONSTANT
*
* \brief Constant haptic effect.
*
* \sa SDL_HapticCondition
*/
127
#define SDL_HAPTIC_CONSTANT (1<<0) /* Constant effect supported */
128
129
130
131
132
133
134
/**
* \def SDL_HAPTIC_SINE
*
* \brief Periodic haptic effect that simulates sine waves.
*
* \sa SDL_HapticPeriodic
*/
135
#define SDL_HAPTIC_SINE (1<<1) /* Sine wave effect supported */
136
137
138
139
140
141
142
/**
* \def SDL_HAPTIC_SQUARE
*
* \brief Periodic haptic effect that simulates square waves.
*
* \sa SDL_HapticPeriodic
*/
143
#define SDL_HAPTIC_SQUARE (1<<2) /* Square wave effect supported */
144
145
146
147
148
149
150
/**
* \def SDL_HAPTIC_TRIANGLE
*
* \brief Periodic haptic effect that simulates triangular waves.
*
* \sa SDL_HapticPeriodic
*/
151
#define SDL_HAPTIC_TRIANGLE (1<<3) /* Triangle wave effect supported */
152
153
154
155
156
157
158
/**
* \def SDL_HAPTIC_SAWTOOTHUP
*
* \brief Periodic haptic effect that simulates saw tooth up waves.
*
* \sa SDL_HapticPeriodic
*/
159
#define SDL_HAPTIC_SAWTOOTHUP (1<<4) /* Sawtoothup wave effect supported */
160
161
162
163
164
165
166
/**
* \def SDL_HAPTIC_SAWTOOTHDOWN
*
* \brief Periodic haptic effect that simulates saw tooth down waves.
*
* \sa SDL_HapticPeriodic
*/
167
#define SDL_HAPTIC_SAWTOOTHDOWN (1<<5) /* Sawtoothdown wave effect supported */
168
169
170
171
172
173
174
/**
* \def SDL_HAPTIC_RAMP
*
* \brief Ramp haptic effect.
*
* \sa SDL_HapticRamp
*/
175
#define SDL_HAPTIC_RAMP (1<<6) /* Ramp effect supported */
176
177
178
179
180
181
182
183
/**
* \def SDL_HAPTIC_SPRING
*
* \brief Condition haptic effect that simulates a spring. Effect is based on the
* axes position.
*
* \sa SDL_HapticCondition
*/
184
#define SDL_HAPTIC_SPRING (1<<7) /* Spring effect supported - uses axes position */
185
186
187
188
189
190
191
192
/**
* \def SDL_HAPTIC_DAMPER
*
* \brief Condition haptic effect that simulates dampening. Effect is based on the
* axes velocity.
*
* \sa SDL_HapticCondition
*/
193
#define SDL_HAPTIC_DAMPER (1<<8) /* Damper effect supported - uses axes velocity */
194
195
196
197
198
199
200
201
/**
* \def SDL_HAPTIC_INERTIA
*
* \brief Condition haptic effect that simulates inertia. Effect is based on the axes
* acceleration.
*
* \sa SDL_HapticCondition
*/
202
#define SDL_HAPTIC_INERTIA (1<<9) /* Inertia effect supported - uses axes acceleration */
203
204
205
206
207
208
209
210
/**
* \def SDL_HAPTIC_FRICTION
*
* \brief Condition haptic effect that simulates friction. Effect is based on the axes
* movement.
*
* \sa SDL_HapticCondition
*/
211
#define SDL_HAPTIC_FRICTION (1<<10) /* Friction effect supported - uses axes movement */
212
213
214
215
216
/**
* \def SDL_HAPTIC_CUSTOM
*
* \brief User defined custom haptic effect. TODO.
*/
217
#define SDL_HAPTIC_CUSTOM (1<<11) /* Custom effect is supported */
218
/* These last two are features the device has, not effects */
219
220
221
222
223
224
225
/**
* \def SDL_HAPTIC_GAIN
*
* \brief Device supports setting the global gain.
*
* \sa SDL_HapticSetGain
*/
226
#define SDL_HAPTIC_GAIN (1<<12) /* Device can set global gain */
227
228
229
230
231
232
233
/**
* \def SDL_HAPTIC_AUTOCENTER
*
* \brief Device supports setting autocenter.
*
* \sa SDL_HapticSetAutocenter
*/
234
#define SDL_HAPTIC_AUTOCENTER (1<<13) /* Device can set autocenter */
235
236
237
238
239
240
241
/**
* \def SDL_HAPTIC_STATUS
*
* \brief Device can be queried for effect status.
*
* \sa SDL_HapticGetEffectStatus
*/
242
#define SDL_HAPTIC_STATUS (1<<14) /* Device can be queried for effect status */
243
244
245
246
/**
* \struct SDL_HapticConstant
247
*
248
* \brief A structure containing a template for a Constant effect.
249
*
250
* The struct is exclusive to the SDL_HAPTIC_CONSTANT effect.
251
*
252
253
* \sa SDL_HAPTIC_CONSTANT
* \sa SDL_HapticEffect
254
*/
255
256
typedef struct SDL_HapticConstant {
/* Header */
257
Uint16 type; /**< SDL_HAPTIC_CONSTANT */
258
259
260
Uint16 direction;
/* Replay */
261
262
Uint16 length; /**< Duration of the effect. */
Uint16 delay; /**< Delay before starting the effect. */
263
264
/* Trigger */
265
266
Uint16 button; /**< Button that triggers the effect. */
Uint16 interval; /**< How soon it can be triggered again after button. */
267
268
/* Constant */
269
Sint16 level; /**< Strength of the constant effect. */
270
271
/* Envelope */
272
273
274
275
Uint16 attack_length; /**< Duration of the attack. */
Uint16 attack_level; /**< Level at the start of the attack. */
Uint16 fade_length; /**< Duration of the fade. */
Uint16 fade_level; /**< Level at the end of the fade. */
276
} SDL_HapticConstant;
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
/**
* \struct SDL_HapticPeriodic
*
* \brief A structure containing a template for a Periodic effect.
*
* The struct handles the following effects:
* - SDL_HAPTIC_SINE
* - SDL_HAPTIC_SQUARE
* - SDL_HAPTIC_TRIANGLE
* - SDL_HAPTIC_SAWTOOTHUP
* - SDL_HAPTIC_SAWTOOTHDOWN
*
* \sa SDL_HAPTIC_SINE
* \sa SDL_HAPTIC_SQUARE
* \sa SDL_HAPTIC_TRIANGLE
* \sa SDL_HAPTIC_SAWTOOTHUP
* \sa SDL_HAPTIC_SAWTOOTHDOWN
* \sa SDL_HapticEffect
*/
296
297
typedef struct SDL_HapticPeriodic {
/* Header */
298
Uint16 type; /* SDL_HAPTIC_{SINE,SQUARE,TRIANGLE,SAWTOOTHUP,SAWTOOTHDOWN} */
299
300
301
Uint16 direction;
/* Replay */
302
303
Uint16 length; /**< Duration of the effect. */
Uint16 delay; /**< Delay before starting the effect. */
304
305
/* Trigger */
306
307
Uint16 button; /**< Button that triggers the effect. */
Uint16 interval; /**< How soon it can be triggered again after button. */
308
309
/* Periodic */
310
311
312
313
Uint16 period; /**< Period of the wave. */
Sint16 magnitude; /**< Peak value. */
Sint16 offset; /**< Mean value of the wave. */
Uint16 phase; /**< Horizontal shift. */
314
315
/* Envelope */
316
317
318
319
Uint16 attack_length; /**< Duration of the attack. */
Uint16 attack_level; /**< Level at the start of the attack. */
Uint16 fade_length; /**< Duration of the fade. */
Uint16 fade_level; /**< Level at the end of the fade. */
320
} SDL_HapticPeriodic;
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
/**
* \struct SDL_HapticCondition
*
* \brief A structure containing a template for a Condition effect.
*
* The struct handles the following effects:
* - SDL_HAPTIC_SPRING
* - SDL_HAPTIC_DAMPER
* - SDL_HAPTIC_INERTIA
* - SDL_HAPTIC_FRICTION
*
* \sa SDL_HAPTIC_SPRING
* \sa SDL_HAPTIC_DAMPER
* \sa SDL_HAPTIC_INERTIA
* \sa SDL_HAPTIC_FRICTION
* \sa SDL_HapticEffect
*/
338
339
typedef struct SDL_HapticCondition {
/* Header */
340
Uint16 type; /**< SDL_HAPTIC_{SPRING,DAMPER,INERTIA,FRICTION} */
341
342
343
Uint16 direction;
/* Replay */
344
345
Uint16 length; /**< Duration of the effect. */
Uint16 delay; /**< Delay before starting the effect. */
346
347
/* Trigger */
348
349
Uint16 button; /**< Button that triggers the effect. */
Uint16 interval; /**< How soon it can be triggered again after button. */
350
351
/* Condition */
352
353
354
355
356
357
Uint16 right_sat; /**< Level when joystick is to the right. */
Uint16 left_sat; /**< Level when joystick is to the left. */
Sint16 right_coeff; /**< How fast to increase the force towards the right. */
Sint16 left_coeff; /**< How fast to increase the force towards the left. */
Uint16 deadband; /**< Size of the dead zone. */
Sint16 center; /**< Position of the dead zone. */
358
} SDL_HapticCondition;
359
360
361
362
363
364
365
366
367
368
/**
* \struct SDL_HapticRamp
*
* \brief A structure containing a template for a Ramp effect.
*
* This struct is exclusively for the SDL_HAPTIC_RAMP effect.
*
* \sa SDL_HAPTIC_RAMP
* \sa SDL_HapticEffect
*/
369
370
typedef struct SDL_HapticRamp {
/* Header */
371
Uint16 type; /**< SDL_HAPTIC_RAMP */
372
373
374
Uint16 direction;
/* Replay */
375
376
Uint16 length; /**< Duration of the effect. */
Uint16 delay; /**< Delay before starting the effect. */
377
378
/* Trigger */
379
380
Uint16 button; /**< Button that triggers the effect. */
Uint16 interval; /**< How soon it can be triggered again after button. */
381
382
/* Ramp */
383
384
Sint16 start; /**< Beginning strength level. */
Sint16 end; /**< Ending strength level. */
385
386
/* Envelope */
387
388
389
390
Uint16 attack_length; /**< Duration of the attack. */
Uint16 attack_level; /**< Level at the start of the attack. */
Uint16 fade_length; /**< Duration of the fade. */
Uint16 fade_level; /**< Level at the end of the fade. */
391
} SDL_HapticRamp;
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
/*
* \union SDL_HapticEffect
*
* \brief The generic template for any haptic effect.
*
* All values max at 32767 (0x7fff). Signed values also can be negative.
* Time values unless specified otherwise are in milliseconds.
*
* Common parts:
*
* Replay:
* Uint16 length; Duration of effect.
* Uint16 delay; Delay before starting effect.
*
* Trigger:
* Uint16 button; Button that triggers effect.
* Uint16 interval; How soon before effect can be triggered again.
*
* Envelope:
* Uint16 attack_length; Duration of the attack.
* Uint16 attack_level; Level at the start of the attack.
* Uint16 fade_length; Duration of the fade out.
* Uint16 fade_level; Level at the end of the fade.
*
* \sa SDL_HapticConstant
* \sa SDL_HapticPeriodic
* \sa SDL_HapticCondition
* \sa SDL_HaptiRamp
*/
421
422
typedef union SDL_HapticEffect {
/* Common for all force feedback effects */
423
424
425
426
427
Uint16 type; /**< Effect type */
SDL_HapticConstant constant; /**< Constant effect */
SDL_HapticPeriodic periodic; /**< Periodic effect */
SDL_HapticCondition condition; /**< Condition effect */
SDL_HapticRamp ramp; /**< Ramp effect */
428
429
} SDL_HapticEffect;
430
431
432
/* Function prototypes */
/*
433
434
435
436
437
* \fn int SDL_NumHaptics(void)
*
* \brief Count the number of joysticks attached to the system.
*
* \return Number of haptic devices detected on the system.
438
439
440
441
*/
extern DECLSPEC int SDLCALL SDL_NumHaptics(void);
/*
442
443
444
* \fn const char * SDL_HapticName(int device_index)
*
* \brief Get the implementation dependent name of a Haptic device.
445
446
* This can be called before any joysticks are opened.
* If no name can be found, this function returns NULL.
447
448
449
450
451
*
* \param device_index Index of the device to get it's name.
* \return Name of the device or NULL on error.
*
* \sa SDL_NumHaptics
452
453
454
*/
extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index);
455
/*
456
457
458
* \fn SDL_Haptic * SDL_HapticOpen(int device_Index)
*
* \brief Opens a Haptic device for usage - the index passed as an
459
460
461
462
* argument refers to the N'th Haptic device on this system.
*
* This function returns a Haptic device identifier, or Null
* if an error occurred.
463
464
465
466
467
468
*
* \param device_index Index of the device to open.
* \return Device identifier or NULL on error.
*
* \sa SDL_HapticOpenFromJoystick
* \sa SDL_HapticClose
469
470
471
*/
extern DECLSPEC SDL_Haptic * SDL_HapticOpen(int device_index);
472
/*
473
474
475
476
477
478
479
* \fn int SDL_JoystickIsHaptic(SDL_Joystick * joysticke)
*
* \brief Checks to see if a joystick has haptic features.
*
* \param joystick Joystick to test for haptic capabilities.
* \return SDL_TRUE if the joystick is haptic, SDL_FALSE if it isn't
* or -1 if an error ocurred.
480
*
481
* \sa SDL_HapticOpenFromJoystick
482
483
484
485
*/
extern DECLSPEC int SDL_JoystickIsHaptic(SDL_Joystick * joystick);
/*
486
* \fn SDL_Haptic * SDL_HapticOpenFromJoystick(SDL_Joystick * joystick)
487
*
488
489
490
491
492
493
494
495
* \brief Opens a Haptic device for usage from a Joystick device. Still has
* to be closed seperately to the joystick.
*
* \param joystick Joystick to create a haptic device from.
* \return A valid haptic device identifier on success or NULL on error.
*
* \sa SDL_HapticOpen
* \sa SDL_HapticClose
496
497
498
*/
extern DECLSPEC SDL_Haptic * SDL_HapticOpenFromJoystick(SDL_Joystick * joystick);
499
/*
500
501
502
503
504
* \fn void SDL_HapticClose(SDL_Haptic * haptic)
*
* \brief Closes a Haptic device previously opened with SDL_HapticOpen.
*
* \param haptic Haptic device to close.
505
506
507
*/
extern DECLSPEC void SDL_HapticClose(SDL_Haptic * haptic);
508
/*
509
510
511
512
513
514
515
516
517
* \fn int SDL_HapticNumEffects(SDL_Haptic * haptic)
*
* \brief Returns the number of effects a haptic device can store.
*
* \param haptic The haptic device to query effect max.
* \return The number of effects the haptic device can store or
* -1 on error.
*
* \sa SDL_HapticQuery
518
519
520
521
*/
extern DECLSPEC int SDL_HapticNumEffects(SDL_Haptic * haptic);
/*
522
523
524
525
526
527
528
529
530
531
532
533
534
535
* \fn unsigned int SDL_HapticQueryEffects(SDL_Haptic * haptic)
*
* \brief Gets the haptic devices supported features in bitwise matter.
*
* Example:
* \code
* if (SDL_HapticQueryEffects(haptic) & SDL_HAPTIC_CONSTANT) {
* printf("We have constant haptic effect!");
* }
* \endcode
*
*
* \param haptic The haptic device to query.
* \return Haptic features in bitwise manner (OR'd).
536
*
537
538
* \sa SDL_HapticNumEffects
* \sa SDL_HapticEffectSupported
539
*/
540
extern DECLSPEC unsigned int SDL_HapticQuery(SDL_Haptic * haptic);
541
542
/*
543
* \fn int SDL_HapticEffectSupported
544
*
545
546
547
548
549
550
551
552
553
* \brief Checks to see if effect is supported by haptic.
*
* \param haptic Haptic device to check on.
* \param effect Effect to check to see if it is supported.
* \return SDL_TRUE if effect is supported, SDL_FALSE if it isn't or
* -1 on error.
*
* \sa SDL_HapticQuery
* \sa SDL_HapticNewEffect
554
555
556
*/
extern DECLSPEC int SDL_HapticEffectSupported(SDL_Haptic * haptic, SDL_HapticEffect * effect);
557
/*
558
559
560
* \fn int SDL_HapticNewEffect(SDL_Haptic * haptic, SDL_HapticEffect * effect)
*
* \brief Creates a new haptic effect on the device.
561
*
562
563
564
565
566
567
568
* \param haptic Haptic device to create the effect on.
* \param effect Properties of the effect to create.
* \return The id of the effect on success or -1 on error.
*
* \sa SDL_HapticUpdateEffect
* \sa SDL_HapticRunEffect
* \sa SDL_HapticDestroyEffect
569
570
571
*/
extern DECLSPEC int SDL_HapticNewEffect(SDL_Haptic * haptic, SDL_HapticEffect * effect);
572
/*
573
574
575
* \fn int SDL_HapticUpdateEffect(SDL_Haptic * haptic, int effect, SDL_HapticEffect * data)
*
* \brief Updates an effect. Can be used dynamically, although behaviour when
576
577
578
579
* dynamically changing direction may be strange. Specifically the effect
* may reupload itself and start playing from the start. You cannot change
* the type either when running UpdateEffect.
*
580
581
582
583
584
585
586
587
* \param haptic Haptic device that has the effect.
* \param effect Effect to update.
* \param data New effect properties to use.
* \return The id of the effect on success or -1 on error.
*
* \sa SDL_HapticNewEffect
* \sa SDL_HapticRunEffect
* \sa SDL_HapticDestroyEffect
588
589
590
*/
extern DECLSPEC int SDL_HapticUpdateEffect(SDL_Haptic * haptic, int effect, SDL_HapticEffect * data);
591
/*
592
* \fn int SDL_HapticRunEffects(SDL_Haptic * haptic, int effect)
593
*
594
595
596
597
598
599
600
601
602
* \brief Runs the haptic effect on it's assosciated haptic device.
*
* \param haptic Haptic device to run the effect on.
* \param effect Identifier of the haptic effect to run.
* \return 0 on success or -1 on error.
*
* \sa SDL_HapticStopEffect
* \sa SDL_HapticDestroyEffect
* \sa SDL_HapticGetEffectStatus
603
604
605
606
*/
extern DECLSPEC int SDL_HapticRunEffect(SDL_Haptic * haptic, int effect);
/*
607
608
609
* \fn int SDL_HapticStopEffect(SDL_Haptic * haptic, int effect)
*
* \brief Stops the haptic effect on it's assosciated haptic device.
610
*
611
612
613
614
615
616
* \param haptic Haptic device to stop the effect on.
* \praam effect Identifier of the effect to stop.
* \return 0 on success or -1 on error.
*
* \sa SDL_HapticRunEffect
* \sa SDL_HapticDestroyEffect
617
618
619
620
*/
extern DECLSPEC int SDL_HapticStopEffect(SDL_Haptic * haptic, int effect);
/*
621
622
623
624
625
626
627
628
629
630
* \fn void SDL_HapticDestroyEffect(SDL_Haptic * haptic, int effect)
*
* \brief Destroys a haptic effect on the device. This will stop the effect
* if it's running. Effects are automatically destroyed when the device is
* closed.
*
* \param haptic Device to destroy the effect on.
* \param effect Identifier of the effect to destroy.
*
* \sa SDL_HapticNewEffect
631
632
633
*/
extern DECLSPEC void SDL_HapticDestroyEffect(SDL_Haptic * haptic, int effect);
634
/*
635
636
637
* \fn int SDL_HapticGetEffectStatus(SDL_Haptic *haptic, int effect)
*
* \brief Gets the status of the current effect on the haptic device.
638
*
639
640
641
642
643
644
645
646
647
* Device must support the SDL_HAPTIC_STATUS feature.
*
* \param haptic Haptic device to query the effect status on.
* \param effect Identifier of the effect to query it's status.
* \return 0 if it isn't playing, SDL_HAPTIC_PLAYING if it is playing
* or -1 on error.
*
* \sa SDL_HapticRunEffect
* \sa SDL_HapticStopEffect
648
649
650
*/
extern DECLSPEC int SDL_HapticGetEffectStatus(SDL_Haptic *haptic, int effect);
651
/*
652
653
654
* \fn int SDL_HapticSetGain(SDL_Haptic * haptic, int gain)
*
* \brief Sets the global gain of the device. Gain should be between 0 and 100.
655
*
656
657
658
659
660
661
662
* Device must support the SDL_HAPTIC_GAIN feature.
*
* \param haptic Haptic device to set the gain on.
* \param gain Value to set the gain to, should be between 0 and 100.
* \return 0 on success or -1 on error.
*
* \sa SDL_HapticQuery
663
664
665
*/
extern DECLSPEC int SDL_HapticSetGain(SDL_Haptic * haptic, int gain);
666
/*
667
668
669
* \fn int SDL_HapticSetAutocenter(SDL_Haptic * haptic, int autocenter)
*
* \brief Sets the global autocenter of the device. Autocenter should be between
670
671
* 0 and 100. Setting it to 0 will disable autocentering.
*
672
673
674
675
676
677
678
* Device must support the SDL_HAPTIC_AUTOCENTER feature.
*
* \param haptic Haptic device to set autocentering on.
* \param autocenter Value to set autocenter to, 0 disables autocentering.
* \return 0 on success or -1 on error.
*
* \sa SDL_HapticQuery
679
680
681
*/
extern DECLSPEC int SDL_HapticSetAutocenter(SDL_Haptic * haptic, int autocenter);
682
683
684
685
686
687
688
689
690
691
692
693
/* Ends C function definitions when using C++ */
#ifdef __cplusplus
/* *INDENT-OFF* */
}
/* *INDENT-ON* */
#endif
#include "close_code.h"
#endif /* _SDL_haptic_h */
/* vi: set ts=4 sw=4 expandtab: */