author  Edgar Simo <bobbens@gmail.com> 
Fri, 18 Jul 2008 08:06:57 +0000  
branch  gsoc2008_force_feedback 
changeset 2529  e1d5d16e88a8 
parent 2528  50414589501e 
child 2530  22ce87690b41 
permissions  rwrr 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

2 
SDL  Simple DirectMedia Layer 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

3 
Copyright (C) 2008 Edgar Simo 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

4 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

5 
This library is free software; you can redistribute it and/or 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

6 
modify it under the terms of the GNU Lesser General Public 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

7 
License as published by the Free Software Foundation; either 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

8 
version 2.1 of the License, or (at your option) any later version. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

9 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

10 
This library is distributed in the hope that it will be useful, 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

11 
but WITHOUT ANY WARRANTY; without even the implied warranty of 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

12 
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

13 
Lesser General Public License for more details. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

14 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

15 
You should have received a copy of the GNU Lesser General Public 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

16 
License along with this library; if not, write to the Free Software 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

17 
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

18 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

19 
Sam Lantinga 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

20 
slouken@libsdl.org 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

21 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

22 
#include "SDL_config.h" 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

23 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

24 
#ifdef SDL_HAPTIC_IOKIT 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

25 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

26 
#include "SDL_haptic.h" 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

27 
#include "../SDL_syshaptic.h" 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

28 
#include "SDL_joystick.h" 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

29 
#include "../../joystick/SDL_sysjoystick.h" /* For the real SDL_Joystick */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

30 
/*#include "../../joystick/dawrin/SDL_sysjoystick_c.h"*/ /* For joystick hwdata */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

31 

2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

32 
#include <IOKit/IOKitLib.h> 
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

33 
#include <IOKit/hid/IOHIDKeys.h> 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

34 
#include <ForceFeedback/ForceFeedback.h> 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

35 
#include <ForceFeedback/ForceFeedbackConstants.h> 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

36 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

37 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

38 
#define MAX_HAPTICS 32 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

39 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

40 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

41 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

42 
* List of available haptic devices. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

43 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

44 
static struct 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

45 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

46 
io_service_t dev; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

47 
SDL_Haptic *haptic; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

48 
} SDL_hapticlist[MAX_HAPTICS]; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

49 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

50 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

51 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

52 
* Haptic system hardware data. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

53 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

54 
struct haptic_hwdata 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

55 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

56 
FFDeviceObjectReference device; /* Hardware device. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

57 
}; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

58 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

59 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

60 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

61 
* Haptic system effect data. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

62 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

63 
struct haptic_hweffect 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

64 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

65 
FFEffectObjectReference ref; /* Reference. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

66 
struct FFEFFECT effect; /* Hardware effect. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

67 
}; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

68 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

69 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

70 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

71 
* Initializes the haptic subsystem. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

72 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

73 
int 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

74 
SDL_SYS_HapticInit(void) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

75 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

76 
int numhaptics; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

77 
IOReturn result; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

78 
io_iterator_t iter; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

79 
CFDictionaryRef match; 
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

80 
io_service_t device; 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

81 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

82 
/* Get HID devices. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

83 
match = IOServiceMatching(kIOHIDDeviceKey); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

84 
if (match == NULL) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

85 
SDL_SetError("Haptic: Failed to get IOServiceMatching."); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

86 
return 1; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

87 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

88 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

89 
/* Now search I/O Registry for matching devices. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

90 
result = IOServiceGetMatchingServices(kIOMasterPortDefault, match, &iter); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

91 
if (result != kIOReturnSuccess) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

92 
SDL_SetError("Haptic: Couldn't create a HID object iterator."); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

93 
return 1; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

94 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

95 
/* IOServiceGetMatchingServices consumes dictionary. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

96 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

97 
numhaptics = 0; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

98 
while ((device = IOIteratorNext(iter)) != IO_OBJECT_NULL) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

99 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

100 
/* Check for force feedback. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

101 
if (FFIsForceFeedback(device) == FF_OK) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

102 
SDL_hapticlist[numhaptics].dev = device; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

103 
SDL_hapticlist[numhaptics].haptic = NULL; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

104 
numhaptics++; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

105 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

106 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

107 
/* Reached haptic limit. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

108 
if (numhaptics >= MAX_HAPTICS) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

109 
break; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

110 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

111 
IOObjectRelease(iter); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

112 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

113 
return numhaptics; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

114 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

115 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

116 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

117 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

118 
* Return the name of a haptic device, does not need to be opened. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

119 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

120 
const char * 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

121 
SDL_SYS_HapticName(int index) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

122 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

123 
return NULL; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

124 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

125 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

126 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

127 
#define FF_TEST(ff, s) \ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

128 
if (features.supportedEffects & ff) supported = s 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

129 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

130 
* Gets supported features. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

131 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

132 
static unsigned int 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

133 
GetSupportedFeatures(FFDeviceObjectReference device, 
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

134 
int *neffects, int *nplaying, int *naxes) 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

135 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

136 
HRESULT ret; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

137 
FFCAPABILITIES features; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

138 
unsigned int supported; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

139 
Uint32 val; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

140 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

141 
ret = FFDeviceGetForceFeedbackCapabilities(device, &features); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

142 
if (ret != FF_OK) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

143 
SDL_SetError("Haptic: Unable to get device's supported features."); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

144 
return 0; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

145 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

146 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

147 
supported = 0; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

148 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

149 
/* Get maximum effects. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

150 
*neffects = features.storageCapacity; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

151 
*nplaying = features.playbackCapacity; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

152 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

153 
/* Test for effects. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

154 
FF_TEST(FFCAP_ET_CONSTANTFORCE, SDL_HAPTIC_CONSTANT); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

155 
FF_TEST(FFCAP_ET_RAMPFORCE, SDL_HAPTIC_RAMP); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

156 
FF_TEST(FFCAP_ET_SQUARE, SDL_HAPTIC_SQUARE); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

157 
FF_TEST(FFCAP_ET_SINE, SDL_HAPTIC_SINE); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

158 
FF_TEST(FFCAP_ET_TRIANGLE, SDL_HAPTIC_TRIANGLE); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

159 
FF_TEST(FFCAP_ET_SAWTOOTHUP, SDL_HAPTIC_SAWTOOTHUP); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

160 
FF_TEST(FFCAP_ET_SAWTOOTHDOWN, SDL_HAPTIC_SAWTOOTHDOWN); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

161 
FF_TEST(FFCAP_ET_SPRING, SDL_HAPTIC_SPRING); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

162 
FF_TEST(FFCAP_ET_DAMPER, SDL_HAPTIC_DAMPER); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

163 
FF_TEST(FFCAP_ET_INERTIA, SDL_HAPTIC_INERTIA); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

164 
FF_TEST(FFCAP_ET_FRICTION, SDL_HAPTIC_FRICTION); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

165 
FF_TEST(FFCAP_ET_CUSTOMFORCE, SDL_HAPTIC_CUSTOM); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

166 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

167 
/* Check if supports gain. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

168 
ret = FFDeviceGetForceFeedbackProperty(device, FFPROP_FFGAIN, 
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

169 
&val, sizeof(val)); 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

170 
if (ret == FF_OK) supported = SDL_HAPTIC_GAIN; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

171 
else if (ret != FFERR_UNSUPPORTED) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

172 
SDL_SetError("Haptic: Unable to get if device supports gain."); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

173 
return 0; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

174 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

175 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

176 
/* Checks if supports autocenter. */ 
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

177 
ret = FFDeviceGetForceFeedbackProperty(device, FFPROP_AUTOCENTER, 
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

178 
&val, sizeof(val)); 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

179 
if (ret == FF_OK) supported = SDL_HAPTIC_AUTOCENTER; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

180 
else if (ret != FFERR_UNSUPPORTED) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

181 
SDL_SetError("Haptic: Unable to get if device supports autocenter."); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

182 
return 0; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

183 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

184 

2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

185 
/* Check for axes, we have an artificial limit on axes */ 
2528  186 
*naxes = ((features.numFfAxes) > 3) ? 
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

187 
3 : features.numFfAxes; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

188 

2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

189 
/* Always supported features. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

190 
supported = SDL_HAPTIC_STATUS; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

191 
return supported; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

192 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

193 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

194 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

195 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

196 
* Opens the haptic device from the file descriptor. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

197 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

198 
static int 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

199 
SDL_SYS_HapticOpenFromService(SDL_Haptic * haptic, io_service_t service) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

200 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

201 
/* Allocate the hwdata */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

202 
haptic>hwdata = (struct haptic_hwdata *) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

203 
SDL_malloc(sizeof(*haptic>hwdata)); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

204 
if (haptic>hwdata == NULL) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

205 
SDL_OutOfMemory(); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

206 
goto creat_err; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

207 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

208 
SDL_memset(haptic>hwdata, 0, sizeof(*haptic>hwdata)); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

209 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

210 
/* Open the device */ 
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

211 
if (FFCreateDevice( service, &haptic>hwdata>device ) != FF_OK) { 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

212 
SDL_SetError("Haptic: Unable to create device from service."); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

213 
goto creat_err; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

214 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

215 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

216 
/* Get supported features. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

217 
haptic>supported = GetSupportedFeatures(haptic>hwdata>device, 
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

218 
&haptic>neffects, &haptic>nplaying, 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

219 
&haptic>naxes); 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

220 
if (haptic>supported == 0) { /* Error since device supports nothing. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

221 
goto open_err; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

222 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

223 
haptic>effects = (struct haptic_effect *) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

224 
SDL_malloc(sizeof(struct haptic_effect) * haptic>neffects); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

225 
if (haptic>effects == NULL) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

226 
SDL_OutOfMemory(); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

227 
goto open_err; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

228 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

229 
/* Clear the memory */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

230 
SDL_memset(haptic>effects, 0, 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

231 
sizeof(struct haptic_effect) * haptic>neffects); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

232 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

233 
return 0; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

234 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

235 
/* Error handling */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

236 
open_err: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

237 
FFReleaseDevice(haptic>hwdata>device); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

238 
creat_err: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

239 
if (haptic>hwdata != NULL) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

240 
free(haptic>hwdata); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

241 
haptic>hwdata = NULL; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

242 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

243 
return 1; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

244 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

245 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

246 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

247 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

248 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

249 
* Opens a haptic device for usage. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

250 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

251 
int 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

252 
SDL_SYS_HapticOpen(SDL_Haptic * haptic) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

253 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

254 
return SDL_SYS_HapticOpenFromService(haptic, 
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

255 
SDL_hapticlist[haptic>index].dev); 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

256 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

257 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

258 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

259 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

260 
* Opens a haptic device from first mouse it finds for usage. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

261 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

262 
int 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

263 
SDL_SYS_HapticMouse(void) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

264 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

265 
return 1; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

266 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

267 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

268 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

269 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

270 
* Checks to see if a joystick has haptic features. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

271 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

272 
int 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

273 
SDL_SYS_JoystickIsHaptic(SDL_Joystick * joystick) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

274 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

275 
return SDL_FALSE; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

276 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

277 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

278 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

279 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

280 
* Checks to see if the haptic device and joystick and in reality the same. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

281 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

282 
int 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

283 
SDL_SYS_JoystickSameHaptic(SDL_Haptic * haptic, SDL_Joystick * joystick) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

284 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

285 
return 0; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

286 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

287 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

288 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

289 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

290 
* Opens a SDL_Haptic from a SDL_Joystick. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

291 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

292 
int 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

293 
SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic, SDL_Joystick * joystick) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

294 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

295 
return 1; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

296 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

297 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

298 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

299 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

300 
* Closes the haptic device. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

301 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

302 
void 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

303 
SDL_SYS_HapticClose(SDL_Haptic * haptic) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

304 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

305 
int i; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

306 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

307 
if (haptic>hwdata) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

308 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

309 
/* Clean up */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

310 
FFReleaseDevice(haptic>hwdata>device); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

311 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

312 
/* Free */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

313 
SDL_free(haptic>hwdata); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

314 
haptic>hwdata = NULL; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

315 
for (i=0; i<haptic>neffects; i++) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

316 
if (haptic>effects[i].hweffect != NULL) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

317 
SDL_free(haptic>effects[i].hweffect>effect.lpvTypeSpecificParams); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

318 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

319 
SDL_free(haptic>effects); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

320 
haptic>neffects = 0; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

321 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

322 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

323 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

324 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

325 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

326 
* Clean up after system specific haptic stuff 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

327 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

328 
void 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

329 
SDL_SYS_HapticQuit(void) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

330 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

331 
int i; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

332 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

333 
for (i=0; i < SDL_numhaptics; i++) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

334 
IOObjectRelease(SDL_hapticlist[i].dev); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

335 
/* TODO free effects. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

336 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

337 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

338 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

339 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

340 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

341 
* Sets the direction. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

342 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

343 
static int 
2529
e1d5d16e88a8
Can't believe I missed this typo.
Edgar Simo <bobbens@gmail.com>
parents:
2528
diff
changeset

344 
SDL_SYS_SetDirection( FFEFFECT * effect, SDL_HapticDirection *dir, int naxes ) 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

345 
{ 
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

346 
LONG *rglDir; 
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

347 

924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

348 
/* Handle no axes a part. */ 
2528  349 
if (naxes == 0) { 
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

350 
effect>rglDirection = NULL; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

351 
return 0; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

352 
} 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

353 

924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

354 
/* Has axes. */ 
2529
e1d5d16e88a8
Can't believe I missed this typo.
Edgar Simo <bobbens@gmail.com>
parents:
2528
diff
changeset

355 
rglDir = SDL_malloc( sizeof(LONG) * naxes ); 
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

356 
if (rglDir == NULL) { 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

357 
SDL_OutOfMemory(); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

358 
return 1; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

359 
} 
2529
e1d5d16e88a8
Can't believe I missed this typo.
Edgar Simo <bobbens@gmail.com>
parents:
2528
diff
changeset

360 
SDL_memset( rglDir, 0, sizeof(LONG) * naxes ); 
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

361 
effect>rglDirection = rglDir; 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

362 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

363 
switch (dir>type) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

364 
case SDL_HAPTIC_POLAR: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

365 
effect>dwFlags = FFEFF_POLAR; 
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

366 
rglDir[0] = dir>dir[0]; 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

367 
return 0; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

368 
case SDL_HAPTIC_CARTESIAN: 
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

369 
effect>dwFlags = FFEFF_CARTESIAN; 
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

370 
rglDir[0] = dir>dir[0]; 
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

371 
rglDir[1] = dir>dir[1]; 
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

372 
rglDir[2] = dir>dir[2]; 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

373 
return 0; 
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

374 
case SDL_HAPTIC_SPHERICAL: 
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

375 
effect>dwFlags = FFEFF_SPHERICAL; 
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

376 
rglDir[0] = dir>dir[0]; 
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

377 
rglDir[1] = dir>dir[1]; 
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

378 
rglDir[2] = dir>dir[2]; 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

379 
return 0; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

380 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

381 
default: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

382 
SDL_SetError("Haptic: Unknown direction type."); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

383 
return 1; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

384 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

385 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

386 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

387 
#define CONVERT(x) (((x)*10000) / 0xFFFF ) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

388 
/* 
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

389 
* Creates the FFEFFECT from a SDL_HapticEffect. 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

390 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

391 
static int 
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

392 
SDL_SYS_ToFFEFFECT( SDL_Haptic * haptic, FFEFFECT * dest, SDL_HapticEffect * src ) 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

393 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

394 
FFCONSTANTFORCE *constant; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

395 
FFPERIODIC *periodic; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

396 
FFCONDITION *condition; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

397 
FFRAMPFORCE *ramp; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

398 
FFCUSTOMFORCE *custom; 
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

399 
FFENVELOPE *envelope; 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

400 
SDL_HapticConstant *hap_constant; 
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

401 
SDL_HapticPeriodic *hap_periodic; 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

402 
SDL_HapticCondition *hap_condition; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

403 
SDL_HapticRamp *hap_ramp; 
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

404 
DWORD *axes; 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

405 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

406 
/* Set global stuff. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

407 
SDL_memset(dest, 0, sizeof(FFEFFECT)); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

408 
dest>dwSize = sizeof(FFEFFECT); /* Set the structure size. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

409 
dest>dwSamplePeriod = 0; /* Not used by us. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

410 
dest>dwGain = 10000; /* Gain is set globally, not locally. */ 
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

411 

0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

412 
/* Envelope. */ 
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

413 
envelope = SDL_malloc( sizeof(FFENVELOPE) ); 
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

414 
if (envelope == NULL) { 
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

415 
SDL_OutOfMemory(); 
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

416 
return 1; 
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

417 
} 
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

418 
SDL_memset(envelope, 0, sizeof(FFENVELOPE)); 
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

419 
dest>lpEnvelope = envelope; 
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

420 
envelope>dwSize = sizeof(FFENVELOPE); /* Always should be this. */ 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

421 

2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

422 
/* Axes. */ 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

423 
dest>cAxes = haptic>naxes; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

424 
if (dest>cAxes > 0) { 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

425 
axes = SDL_malloc(sizeof(DWORD) * dest>cAxes); 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

426 
if (axes == NULL) { 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

427 
SDL_OutOfMemory(); 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

428 
return 1; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

429 
} 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

430 
axes[0] = FFJOFS_X; /* Always at least one axis. */ 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

431 
if (dest>cAxes > 1) { 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

432 
axes[1] = FFJOFS_Y; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

433 
} 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

434 
if (dest>cAxes > 2) { 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

435 
axes[2] = FFJOFS_Z; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

436 
} 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

437 
dest>rgdwAxes = axes; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

438 
} 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

439 

924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

440 

2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

441 
switch (src>type) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

442 
case SDL_HAPTIC_CONSTANT: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

443 
hap_constant = &src>constant; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

444 
constant = SDL_malloc( sizeof(FFCONSTANTFORCE) ); 
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

445 
if (constant == NULL) { 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

446 
SDL_OutOfMemory(); 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

447 
return 1; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

448 
} 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

449 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

450 
/* Specifics */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

451 
constant>lMagnitude = CONVERT(hap_constant>level); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

452 
dest>cbTypeSpecificParams = sizeof(FFCONSTANTFORCE); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

453 
dest>lpvTypeSpecificParams = constant; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

454 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

455 
/* Generics */ 
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

456 
dest>dwDuration = hap_constant>length * 1000; /* In microseconds. */ 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

457 
dest>dwTriggerButton = FFJOFS_BUTTON(hap_constant>button); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

458 
dest>dwTriggerRepeatInterval = hap_constant>interval; 
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

459 
dest>dwStartDelay = hap_constant>delay * 1000; /* In microseconds. */ 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

460 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

461 
/* Direction. */ 
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

462 
if (SDL_SYS_SetDirection(dest, &hap_constant>direction, dest>cAxes) < 0) { 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

463 
return 1; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

464 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

465 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

466 
/* Envelope */ 
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

467 
envelope>dwAttackLevel = CONVERT(hap_constant>attack_level); 
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

468 
envelope>dwAttackTime = hap_constant>attack_length * 1000; 
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

469 
envelope>dwFadeLevel = CONVERT(hap_constant>fade_level); 
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

470 
envelope>dwFadeTime = hap_constant>fade_length * 1000; 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

471 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

472 
break; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

473 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

474 
case SDL_HAPTIC_SINE: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

475 
case SDL_HAPTIC_SQUARE: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

476 
case SDL_HAPTIC_TRIANGLE: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

477 
case SDL_HAPTIC_SAWTOOTHUP: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

478 
case SDL_HAPTIC_SAWTOOTHDOWN: 
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

479 
hap_periodic = &src>periodic; 
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

480 
periodic = SDL_malloc(sizeof(FFPERIODIC)); 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

481 
if (periodic == NULL) { 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

482 
SDL_OutOfMemory(); 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

483 
return 1; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

484 
} 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

485 

924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

486 
/* Specifics */ 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

487 
periodic>dwMagnitude = CONVERT(hap_periodic>magnitude); 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

488 
periodic>lOffset = CONVERT(hap_periodic>offset); 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

489 
periodic>dwPhase = hap_periodic>phase; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

490 
periodic>dwPeriod = hap_periodic>period * 1000; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

491 
dest>cbTypeSpecificParams = sizeof(FFPERIODIC); 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

492 
dest>lpvTypeSpecificParams = periodic; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

493 

924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

494 
/* Generics */ 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

495 
dest>dwDuration = hap_periodic>length * 1000; /* In microseconds. */ 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

496 
dest>dwTriggerButton = FFJOFS_BUTTON(hap_periodic>button); 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

497 
dest>dwTriggerRepeatInterval = hap_periodic>interval; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

498 
dest>dwStartDelay = hap_periodic>delay * 1000; /* In microseconds. */ 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

499 

924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

500 
/* Direction. */ 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

501 
if (SDL_SYS_SetDirection(dest, &hap_periodic>direction, dest>cAxes) < 0) { 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

502 
return 1; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

503 
} 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

504 

924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

505 
/* Envelope */ 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

506 
envelope>dwAttackLevel = CONVERT(hap_periodic>attack_level); 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

507 
envelope>dwAttackTime = hap_periodic>attack_length * 1000; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

508 
envelope>dwFadeLevel = CONVERT(hap_periodic>fade_level); 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

509 
envelope>dwFadeTime = hap_periodic>fade_length * 1000; 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

510 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

511 
break; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

512 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

513 
case SDL_HAPTIC_SPRING: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

514 
case SDL_HAPTIC_DAMPER: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

515 
case SDL_HAPTIC_INERTIA: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

516 
case SDL_HAPTIC_FRICTION: 
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

517 
hap_condition = &src>condition; 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

518 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

519 
break; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

520 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

521 
case SDL_HAPTIC_RAMP: 
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset

522 
hap_ramp = &src>ramp; 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

523 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

524 
break; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

525 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

526 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

527 
default: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

528 
SDL_SetError("Haptic: Unknown effect type."); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

529 
return 1; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

530 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

531 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

532 
return 0; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

533 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

534 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

535 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

536 
/* 
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

537 
* Frees an FFEFFECT allocated by SDL_SYS_ToFFEFFECT. 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

538 
*/ 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

539 
void SDL_SYS_HapticFreeFFEFFECT( FFEFFECT * effect ) 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

540 
{ 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

541 
if (effect>lpEnvelope != NULL) { 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

542 
SDL_free(effect>lpEnvelope); 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

543 
effect>lpEnvelope = NULL; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

544 
} 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

545 
if (effect>rgdwAxes != NULL) { 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

546 
SDL_free(effect>rgdwAxes); 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

547 
effect>rgdwAxes = NULL; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

548 
} 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

549 
if (effect>lpvTypeSpecificParams != NULL) { 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

550 
SDL_free(effect>lpvTypeSpecificParams); 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

551 
effect>lpvTypeSpecificParams = NULL; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

552 
} 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

553 
if (effect>rglDirection != NULL) { 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

554 
SDL_free(effect>rglDirection); 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

555 
effect>rglDirection = NULL; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

556 
} 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

557 
} 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

558 

924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

559 

924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

560 
/* 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

561 
* Gets the effect type from the generic SDL haptic effect wrapper. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

562 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

563 
CFUUIDRef SDL_SYS_HapticEffectType(struct haptic_effect * effect) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

564 
{ 
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

565 
switch (effect>effect.type) { 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

566 
case SDL_HAPTIC_CONSTANT: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

567 
return kFFEffectType_ConstantForce_ID; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

568 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

569 
case SDL_HAPTIC_RAMP: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

570 
return kFFEffectType_RampForce_ID; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

571 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

572 
case SDL_HAPTIC_SQUARE: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

573 
return kFFEffectType_Square_ID; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

574 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

575 
case SDL_HAPTIC_SINE: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

576 
return kFFEffectType_Sine_ID; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

577 

2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

578 
case SDL_HAPTIC_TRIANGLE: 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

579 
return kFFEffectType_Triangle_ID; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

580 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

581 
case SDL_HAPTIC_SAWTOOTHUP: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

582 
return kFFEffectType_SawtoothUp_ID; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

583 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

584 
case SDL_HAPTIC_SAWTOOTHDOWN: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

585 
return kFFEffectType_SawtoothDown_ID; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

586 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

587 
case SDL_HAPTIC_SPRING: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

588 
return kFFEffectType_Spring_ID; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

589 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

590 
case SDL_HAPTIC_DAMPER: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

591 
return kFFEffectType_Damper_ID; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

592 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

593 
case SDL_HAPTIC_INERTIA: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

594 
return kFFEffectType_Inertia_ID; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

595 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

596 
case SDL_HAPTIC_FRICTION: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

597 
return kFFEffectType_Friction_ID; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

598 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

599 
case SDL_HAPTIC_CUSTOM: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

600 
return kFFEffectType_CustomForce_ID; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

601 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

602 
default: 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

603 
SDL_SetError("Haptic: Unknown effect type."); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

604 
return NULL; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

605 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

606 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

607 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

608 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

609 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

610 
* Creates a new haptic effect. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

611 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

612 
int 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

613 
SDL_SYS_HapticNewEffect(SDL_Haptic * haptic, struct haptic_effect * effect, 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

614 
SDL_HapticEffect * base) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

615 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

616 
HRESULT ret; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

617 
CFUUIDRef type; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

618 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

619 
/* Alloc the effect. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

620 
effect>hweffect = (struct haptic_hweffect *) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

621 
SDL_malloc(sizeof(struct haptic_hweffect)); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

622 
if (effect>hweffect == NULL) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

623 
SDL_OutOfMemory(); 
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

624 
goto err_hweffect; 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

625 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

626 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

627 
/* Get the type. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

628 
type = SDL_SYS_HapticEffectType(effect); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

629 
if (type == NULL) { 
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

630 
goto err_hweffect; 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

631 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

632 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

633 
/* Get the effect. */ 
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

634 
if (SDL_SYS_ToFFEFFECT(haptic, &effect>hweffect>effect, &effect>effect ) < 0) { 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

635 
goto err_effectdone; 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

636 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

637 

2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

638 
/* Create the actual effect. */ 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

639 
ret = FFDeviceCreateEffect( haptic>hwdata>device, type, 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

640 
&effect>hweffect>effect, &effect>hweffect>ref ); 
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

641 

924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

642 
if (ret != FF_OK) { 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

643 
SDL_SetError("Haptic: Unable to create effect."); 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

644 
goto err_effectdone; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

645 
} 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

646 

924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

647 
return 0; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

648 

924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

649 
err_effectdone: 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

650 
SDL_SYS_HapticFreeFFEFFECT(&effect>hweffect>effect); 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

651 
err_hweffect: 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

652 
if (effect>hweffect != NULL) { 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

653 
SDL_free(effect>hweffect); 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

654 
effect>hweffect = NULL; 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

655 
} 
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset

656 
return 1; 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

657 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

658 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

659 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

660 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

661 
* Updates an effect. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

662 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

663 
int SDL_SYS_HapticUpdateEffect(SDL_Haptic * haptic, 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

664 
struct haptic_effect * effect, SDL_HapticEffect * data) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

665 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

666 
/* TODO */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

667 
return 1; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

668 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

669 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

670 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

671 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

672 
* Runs an effect. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

673 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

674 
int 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

675 
SDL_SYS_HapticRunEffect(SDL_Haptic * haptic, struct haptic_effect * effect, 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

676 
Uint32 iterations) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

677 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

678 
HRESULT ret; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

679 
Uint32 iter; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

680 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

681 
/* Check if it's infinite. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

682 
if (iterations == SDL_HAPTIC_INFINITY) { 
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

683 
iter = FF_INFINITE; 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

684 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

685 
else 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

686 
iter = iterations; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

687 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

688 
/* Run the effect. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

689 
ret = FFEffectStart(effect>hweffect>ref, iter, 0); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

690 
if (ret != FF_OK) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

691 
SDL_SetError("Haptic: Unable to run the effect."); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

692 
return 1; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

693 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

694 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

695 
return 0; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

696 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

697 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

698 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

699 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

700 
* Stops an effect. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

701 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

702 
int 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

703 
SDL_SYS_HapticStopEffect(SDL_Haptic * haptic, struct haptic_effect * effect) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

704 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

705 
HRESULT ret; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

706 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

707 
ret = FFEffectStop(effect>hweffect>ref); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

708 
if (ret != FF_OK) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

709 
SDL_SetError("Haptic: Unable to stop the effect."); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

710 
return 1; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

711 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

712 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

713 
return 0; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

714 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

715 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

716 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

717 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

718 
* Frees the effect. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

719 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

720 
void 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

721 
SDL_SYS_HapticDestroyEffect(SDL_Haptic * haptic, struct haptic_effect * effect) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

722 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

723 
HRESULT ret; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

724 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

725 
ret = FFDeviceReleaseEffect(haptic>hwdata>device, effect>hweffect>ref); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

726 
if (ret != FF_OK) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

727 
SDL_SetError("Haptic: Error removing the effect from the device."); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

728 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

729 
SDL_free(effect>hweffect>effect.lpvTypeSpecificParams); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

730 
effect>hweffect>effect.lpvTypeSpecificParams = NULL; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

731 
SDL_free(effect>hweffect); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

732 
effect>hweffect = NULL; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

733 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

734 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

735 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

736 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

737 
* Gets the status of a haptic effect. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

738 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

739 
int 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

740 
SDL_SYS_HapticGetEffectStatus(SDL_Haptic * haptic, struct haptic_effect * effect) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

741 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

742 
HRESULT ret; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

743 
FFEffectStatusFlag status; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

744 

2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

745 
ret = FFEffectGetEffectStatus(effect>hweffect>ref, &status); 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

746 
if (ret != FF_OK) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

747 
SDL_SetError("Haptic: Unable to get effect status."); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

748 
return 1; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

749 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

750 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

751 
if (status == 0) return SDL_FALSE; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

752 
return SDL_TRUE; /* Assume it's playing or emulated. */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

753 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

754 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

755 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

756 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

757 
* Sets the gain. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

758 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

759 
int 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

760 
SDL_SYS_HapticSetGain(SDL_Haptic * haptic, int gain) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

761 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

762 
HRESULT ret; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

763 
Uint32 val; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

764 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

765 
val = gain * 100; /* Mac OS X uses 0 to 10,000 */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

766 
ret = FFDeviceSetForceFeedbackProperty(haptic>hwdata>device, FFPROP_FFGAIN, &val); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

767 
if (ret != FF_OK) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

768 
SDL_SetError("Haptic: Error setting gain."); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

769 
return 1; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

770 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

771 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

772 
return 0; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

773 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

774 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

775 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

776 
/* 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

777 
* Sets the autocentering. 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

778 
*/ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

779 
int 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

780 
SDL_SYS_HapticSetAutocenter(SDL_Haptic * haptic, int autocenter) 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

781 
{ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

782 
HRESULT ret; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

783 
Uint32 val; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

784 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

785 
/* Mac OS X only has 0 (off) and 1 (on) */ 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

786 
if (autocenter == 0) val = 0; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

787 
else val = 1; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

788 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

789 
ret = FFDeviceSetForceFeedbackProperty(haptic>hwdata>device, 
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset

790 
FFPROP_AUTOCENTER, &val); 
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

791 
if (ret != FF_OK) { 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

792 
SDL_SetError("Haptic: Error setting autocenter."); 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

793 
return 1; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

794 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

795 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

796 
return 0; 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

797 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

798 
} 
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

799 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

800 

6aee9eb4fc6d
Adding initial darwin port of haptic subsystem  broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

801 
#endif /* SDL_HAPTIC_LINUX */ 