Mercurial > sdl-ios-xcode
annotate src/haptic/darwin/SDL_syshaptic.c @ 2641:e1e1be935178 gsoc2008_force_feedback
More comments.
Implemented haptic<->mouse on darwin.
author | Edgar Simo <bobbens@gmail.com> |
---|---|
date | Mon, 11 Aug 2008 11:40:44 +0000 |
parents | 668fee3b268a |
children | b04679da6627 |
rev | line source |
---|---|
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 02110-1301 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 */ |
2633 | 30 #include "../../joystick/darwin/SDL_sysjoystick_c.h" /* For joystick hwdata */ |
2520
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 { |
2641 | 46 char name[256]; /* Name of the device. */ |
47 | |
48 io_service_t dev; /* Node we use to create the device. */ | |
49 SDL_Haptic *haptic; /* Haptic currently assosciated with it. */ | |
50 | |
51 /* Usage pages for determining if it's a mouse or not. */ | |
52 long usage; | |
53 long usagePage; | |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
54 } SDL_hapticlist[MAX_HAPTICS]; |
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 |
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 * Haptic system hardware data. |
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 struct haptic_hwdata |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
61 { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
62 FFDeviceObjectReference device; /* Hardware device. */ |
2627
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
63 UInt8 axes[3]; |
2520
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 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
66 |
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 * Haptic system effect data. |
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 struct haptic_hweffect |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
71 { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
72 FFEffectObjectReference ref; /* Reference. */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
73 struct FFEFFECT effect; /* Hardware effect. */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
74 }; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
75 |
2531
7f2a4c387292
Fixed some inconsistancies in coding style.
Edgar Simo <bobbens@gmail.com>
parents:
2530
diff
changeset
|
76 /* |
7f2a4c387292
Fixed some inconsistancies in coding style.
Edgar Simo <bobbens@gmail.com>
parents:
2530
diff
changeset
|
77 * Prototypes. |
7f2a4c387292
Fixed some inconsistancies in coding style.
Edgar Simo <bobbens@gmail.com>
parents:
2530
diff
changeset
|
78 */ |
2537
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
79 static void SDL_SYS_HapticFreeFFEFFECT(FFEFFECT * effect, int type); |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
80 static int HIDGetDeviceProduct(io_service_t dev, char * name); |
2531
7f2a4c387292
Fixed some inconsistancies in coding style.
Edgar Simo <bobbens@gmail.com>
parents:
2530
diff
changeset
|
81 |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
82 |
2541 | 83 /* |
84 * Like strerror but for force feedback errors. | |
85 */ | |
86 static const char * | |
87 FFStrError(HRESULT err) | |
88 { | |
89 switch (err) { | |
90 case FFERR_DEVICEFULL: | |
91 return "device full"; | |
2608
7c7a63f22afa
Using same syntax as the windows port for updating effects.
Edgar Simo <bobbens@gmail.com>
parents:
2604
diff
changeset
|
92 /* This should be valid, but for some reason isn't defined... */ |
2543
3544a632064c
Commented out a bit until definition is found.
Edgar Simo <bobbens@gmail.com>
parents:
2542
diff
changeset
|
93 /*case FFERR_DEVICENOTREG: |
3544a632064c
Commented out a bit until definition is found.
Edgar Simo <bobbens@gmail.com>
parents:
2542
diff
changeset
|
94 return "device not registered";*/ |
2541 | 95 case FFERR_DEVICEPAUSED: |
96 return "device paused"; | |
97 case FFERR_DEVICERELEASED: | |
98 return "device released"; | |
99 case FFERR_EFFECTPLAYING: | |
100 return "effect playing"; | |
101 case FFERR_EFFECTTYPEMISMATCH: | |
102 return "effect type mismatch"; | |
103 case FFERR_EFFECTTYPENOTSUPPORTED: | |
104 return "effect type not supported"; | |
105 case FFERR_GENERIC: | |
106 return "undetermined error"; | |
107 case FFERR_HASEFFECTS: | |
108 return "device has effects"; | |
109 case FFERR_INCOMPLETEEFFECT: | |
110 return "incomplete effect"; | |
111 case FFERR_INTERNAL: | |
112 return "internal fault"; | |
113 case FFERR_INVALIDDOWNLOADID: | |
114 return "invalid download id"; | |
115 case FFERR_INVALIDPARAM: | |
116 return "invalid parameter"; | |
117 case FFERR_MOREDATA: | |
118 return "more data"; | |
119 case FFERR_NOINTERFACE: | |
120 return "interface not supported"; | |
121 case FFERR_NOTDOWNLOADED: | |
122 return "effect is not downloaded"; | |
123 case FFERR_NOTINITIALIZED: | |
124 return "object has not been initialized"; | |
125 case FFERR_OUTOFMEMORY: | |
126 return "out of memory"; | |
127 case FFERR_UNPLUGGED: | |
128 return "device is unplugged"; | |
129 case FFERR_UNSUPPORTED: | |
130 return "function call unsupported"; | |
131 case FFERR_UNSUPPORTEDAXIS: | |
132 return "axis unsupported"; | |
133 | |
134 default: | |
135 return "unknown error"; | |
136 } | |
137 } | |
138 | |
139 | |
2520
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 * Initializes the haptic subsystem. |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
142 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
143 int |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
144 SDL_SYS_HapticInit(void) |
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 int numhaptics; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
147 IOReturn result; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
148 io_iterator_t iter; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
149 CFDictionaryRef match; |
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset
|
150 io_service_t device; |
2641 | 151 CFMutableDictionaryRef hidProperties; |
152 CFTypeRef refCF; | |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
153 |
2537
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
154 /* Clear all the memory. */ |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
155 SDL_memset(SDL_hapticlist, 0, sizeof(SDL_hapticlist)); |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
156 |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
157 /* Get HID devices. */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
158 match = IOServiceMatching(kIOHIDDeviceKey); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
159 if (match == NULL) { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
160 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
|
161 return -1; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
162 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
163 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
164 /* 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
|
165 result = IOServiceGetMatchingServices(kIOMasterPortDefault, match, &iter); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
166 if (result != kIOReturnSuccess) { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
167 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
|
168 return -1; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
169 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
170 /* IOServiceGetMatchingServices consumes dictionary. */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
171 |
2641 | 172 if (!IOIteratorIsValid(iter)) { /* No iterator. */ |
2639 | 173 numhaptics = 0; |
174 return 0; | |
175 } | |
176 | |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
177 numhaptics = 0; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
178 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
|
179 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
180 /* Check for force feedback. */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
181 if (FFIsForceFeedback(device) == FF_OK) { |
2641 | 182 |
183 /* Set basic device data. */ | |
2537
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
184 HIDGetDeviceProduct(device, SDL_hapticlist[numhaptics].name); |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
185 SDL_hapticlist[numhaptics].dev = device; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
186 SDL_hapticlist[numhaptics].haptic = NULL; |
2641 | 187 |
188 /* Set usage pages. */ | |
189 hidProperties = 0; | |
190 refCF = 0; | |
191 result = IORegistryEntryCreateCFProperties(device, | |
192 &hidProperties, kCFAllocatorDefault, kNilOptions); | |
193 if ((result == KERN_SUCCESS) && hidProperties) { | |
194 refCF = CFDictionaryGetValue(hidProperties, CFSTR(kIOHIDPrimaryUsagePageKey)); | |
195 if (refCF) { | |
196 if (!CFNumberGetValue(refCF, kCFNumberLongType, | |
197 &SDL_hapticlist[numhaptics].usagePage)) | |
198 SDL_SetError("Haptic: CFNumberGetValue error retrieving pDevice->usagePage."); | |
199 refCF = CFDictionaryGetValue(hidProperties, CFSTR(kIOHIDPrimaryUsageKey)); | |
200 if (refCF) { | |
201 if (!CFNumberGetValue(refCF, kCFNumberLongType, | |
202 &SDL_hapticlist[numhaptics].usage)) | |
203 SDL_SetError("Haptic: CFNumberGetValue error retrieving pDevice->usage."); | |
204 } | |
205 } | |
206 CFRelease(hidProperties); | |
207 } | |
208 | |
209 | |
210 /* Device has been added. */ | |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
211 numhaptics++; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
212 } |
2537
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
213 else { /* Free the unused device. */ |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
214 IOObjectRelease(device); |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
215 } |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
216 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
217 /* Reached haptic limit. */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
218 if (numhaptics >= MAX_HAPTICS) |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
219 break; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
220 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
221 IOObjectRelease(iter); |
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 return numhaptics; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
224 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
225 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
226 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
227 /* |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
228 * 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
|
229 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
230 const char * |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
231 SDL_SYS_HapticName(int index) |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
232 { |
2537
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
233 return SDL_hapticlist[index].name; |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
234 } |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
235 |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
236 /* |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
237 * Gets the device's product name. |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
238 */ |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
239 static int |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
240 HIDGetDeviceProduct(io_service_t dev, char *name) |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
241 { |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
242 CFMutableDictionaryRef hidProperties, usbProperties; |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
243 io_registry_entry_t parent1, parent2; |
2546
daf40497dcd4
Attempt to fix HIDGetDeviceProduct.
Edgar Simo <bobbens@gmail.com>
parents:
2543
diff
changeset
|
244 kern_return_t ret; |
2537
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
245 |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
246 hidProperties = usbProperties = 0; |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
247 |
2547
3cfe0ae232c0
Accidently left in hidDevice.
Edgar Simo <bobbens@gmail.com>
parents:
2546
diff
changeset
|
248 ret = IORegistryEntryCreateCFProperties(dev, &hidProperties, |
2546
daf40497dcd4
Attempt to fix HIDGetDeviceProduct.
Edgar Simo <bobbens@gmail.com>
parents:
2543
diff
changeset
|
249 kCFAllocatorDefault, |
daf40497dcd4
Attempt to fix HIDGetDeviceProduct.
Edgar Simo <bobbens@gmail.com>
parents:
2543
diff
changeset
|
250 kNilOptions); |
daf40497dcd4
Attempt to fix HIDGetDeviceProduct.
Edgar Simo <bobbens@gmail.com>
parents:
2543
diff
changeset
|
251 if ((ret != KERN_SUCCESS) || !hidProperties) { |
daf40497dcd4
Attempt to fix HIDGetDeviceProduct.
Edgar Simo <bobbens@gmail.com>
parents:
2543
diff
changeset
|
252 SDL_SetError("Haptic: Unable to create CFProperties."); |
daf40497dcd4
Attempt to fix HIDGetDeviceProduct.
Edgar Simo <bobbens@gmail.com>
parents:
2543
diff
changeset
|
253 return -1; |
daf40497dcd4
Attempt to fix HIDGetDeviceProduct.
Edgar Simo <bobbens@gmail.com>
parents:
2543
diff
changeset
|
254 } |
daf40497dcd4
Attempt to fix HIDGetDeviceProduct.
Edgar Simo <bobbens@gmail.com>
parents:
2543
diff
changeset
|
255 |
2537
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
256 /* Mac OS X currently is not mirroring all USB properties to HID page so need to look at USB device page also |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
257 * get dictionary for usb properties: step up two levels and get CF dictionary for USB properties |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
258 */ |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
259 if ((KERN_SUCCESS == |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
260 IORegistryEntryGetParentEntry(dev, kIOServicePlane, &parent1)) |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
261 && (KERN_SUCCESS == |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
262 IORegistryEntryGetParentEntry(parent1, kIOServicePlane, &parent2)) |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
263 && (KERN_SUCCESS == |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
264 IORegistryEntryCreateCFProperties(parent2, &usbProperties, |
2546
daf40497dcd4
Attempt to fix HIDGetDeviceProduct.
Edgar Simo <bobbens@gmail.com>
parents:
2543
diff
changeset
|
265 kCFAllocatorDefault, |
daf40497dcd4
Attempt to fix HIDGetDeviceProduct.
Edgar Simo <bobbens@gmail.com>
parents:
2543
diff
changeset
|
266 kNilOptions))) { |
2537
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
267 if (usbProperties) { |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
268 CFTypeRef refCF = 0; |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
269 /* get device info |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
270 * try hid dictionary first, if fail then go to usb dictionary |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
271 */ |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
272 |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
273 |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
274 /* Get product name */ |
2546
daf40497dcd4
Attempt to fix HIDGetDeviceProduct.
Edgar Simo <bobbens@gmail.com>
parents:
2543
diff
changeset
|
275 refCF = CFDictionaryGetValue(hidProperties, CFSTR(kIOHIDProductKey)); |
2537
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
276 if (!refCF) |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
277 refCF = |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
278 CFDictionaryGetValue(usbProperties, CFSTR("USB Product Name")); |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
279 if (refCF) { |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
280 if (!CFStringGetCString(refCF, name, 256, |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
281 CFStringGetSystemEncoding())) { |
2641 | 282 SDL_SetError("Haptic: CFStringGetCString error retrieving pDevice->product."); |
2537
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
283 return -1; |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
284 } |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
285 } |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
286 |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
287 CFRelease(usbProperties); |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
288 } |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
289 else { |
2641 | 290 SDL_SetError("Haptic: IORegistryEntryCreateCFProperties failed to create usbProperties."); |
2537
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
291 return -1; |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
292 } |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
293 |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
294 /* Release stuff. */ |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
295 if (kIOReturnSuccess != IOObjectRelease(parent2)) { |
2641 | 296 SDL_SetError("Haptic: IOObjectRelease error with parent2."); |
2537
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
297 } |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
298 if (kIOReturnSuccess != IOObjectRelease(parent1)) { |
2641 | 299 SDL_SetError("Haptic: IOObjectRelease error with parent1."); |
2537
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
300 } |
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
301 } |
2546
daf40497dcd4
Attempt to fix HIDGetDeviceProduct.
Edgar Simo <bobbens@gmail.com>
parents:
2543
diff
changeset
|
302 else { |
daf40497dcd4
Attempt to fix HIDGetDeviceProduct.
Edgar Simo <bobbens@gmail.com>
parents:
2543
diff
changeset
|
303 SDL_SetError("Haptic: Error getting registry entries."); |
daf40497dcd4
Attempt to fix HIDGetDeviceProduct.
Edgar Simo <bobbens@gmail.com>
parents:
2543
diff
changeset
|
304 return -1; |
daf40497dcd4
Attempt to fix HIDGetDeviceProduct.
Edgar Simo <bobbens@gmail.com>
parents:
2543
diff
changeset
|
305 } |
daf40497dcd4
Attempt to fix HIDGetDeviceProduct.
Edgar Simo <bobbens@gmail.com>
parents:
2543
diff
changeset
|
306 |
2537
8d92ec01f92f
Support for SDL_HapticName in darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2535
diff
changeset
|
307 return 0; |
2520
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 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
310 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
311 #define FF_TEST(ff, s) \ |
2608
7c7a63f22afa
Using same syntax as the windows port for updating effects.
Edgar Simo <bobbens@gmail.com>
parents:
2604
diff
changeset
|
312 if (features.supportedEffects & (ff)) supported |= (s) |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
313 /* |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
314 * Gets supported features. |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
315 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
316 static unsigned int |
2627
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
317 GetSupportedFeatures(SDL_Haptic* haptic) |
2520
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 HRESULT ret; |
2627
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
320 FFDeviceObjectReference device; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
321 FFCAPABILITIES features; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
322 unsigned int supported; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
323 Uint32 val; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
324 |
2627
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
325 device = haptic->hwdata->device; |
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
326 |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
327 ret = FFDeviceGetForceFeedbackCapabilities(device, &features); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
328 if (ret != FF_OK) { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
329 SDL_SetError("Haptic: Unable to get device's supported features."); |
2627
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
330 return -1; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
331 } |
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 supported = 0; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
334 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
335 /* Get maximum effects. */ |
2627
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
336 haptic->neffects = features.storageCapacity; |
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
337 haptic->nplaying = features.playbackCapacity; |
2520
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 /* Test for effects. */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
340 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
|
341 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
|
342 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
|
343 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
|
344 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
|
345 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
|
346 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
|
347 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
|
348 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
|
349 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
|
350 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
|
351 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
|
352 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
353 /* Check if supports gain. */ |
2554
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
354 ret = FFDeviceGetForceFeedbackProperty( device, FFPROP_FFGAIN, |
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
355 &val, sizeof(val)); |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
356 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
|
357 else if (ret != FFERR_UNSUPPORTED) { |
2541 | 358 SDL_SetError("Haptic: Unable to get if device supports gain: %s.", |
2542
4e055fa7acb9
Fixed some stupid mistakes.
Edgar Simo <bobbens@gmail.com>
parents:
2541
diff
changeset
|
359 FFStrError(ret)); |
2627
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
360 return -1; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
361 } |
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 /* Checks if supports autocenter. */ |
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset
|
364 ret = FFDeviceGetForceFeedbackProperty(device, FFPROP_AUTOCENTER, |
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
365 &val, sizeof(val)); |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
366 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
|
367 else if (ret != FFERR_UNSUPPORTED) { |
2541 | 368 SDL_SetError("Haptic: Unable to get if device supports autocenter: %s.", |
369 FFStrError(ret)); | |
2627
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
370 return -1; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
371 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
372 |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
373 /* Check for axes, we have an artificial limit on axes */ |
2627
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
374 haptic->naxes = ((features.numFfAxes) > 3) ? |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
375 3 : features.numFfAxes; |
2627
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
376 /* Actually store the axes we want to use */ |
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
377 SDL_memcpy( haptic->hwdata->axes, features.ffAxes, haptic->naxes * sizeof(Uint8)); |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
378 |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
379 /* Always supported features. */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
380 supported |= SDL_HAPTIC_STATUS; |
2627
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
381 |
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
382 haptic->supported = supported; |
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
383 return 0;; |
2520
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 /* |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
388 * 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
|
389 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
390 static int |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
391 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
|
392 { |
2541 | 393 HRESULT ret; |
2627
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
394 int ret2; |
2541 | 395 |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
396 /* Allocate the hwdata */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
397 haptic->hwdata = (struct haptic_hwdata *) |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
398 SDL_malloc(sizeof(*haptic->hwdata)); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
399 if (haptic->hwdata == NULL) { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
400 SDL_OutOfMemory(); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
401 goto creat_err; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
402 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
403 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
|
404 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
405 /* Open the device */ |
2541 | 406 ret = FFCreateDevice( service, &haptic->hwdata->device); |
407 if (ret != FF_OK) { | |
408 SDL_SetError("Haptic: Unable to create device from service: %s.", | |
409 FFStrError(ret)); | |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
410 goto creat_err; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
411 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
412 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
413 /* Get supported features. */ |
2627
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
414 ret2 = GetSupportedFeatures( haptic ); |
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
415 if (haptic->supported < 0) { |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
416 goto open_err; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
417 } |
2550
b5b8a7f4a965
Reset device and enable actuators when initializing.
Edgar Simo <bobbens@gmail.com>
parents:
2547
diff
changeset
|
418 |
b5b8a7f4a965
Reset device and enable actuators when initializing.
Edgar Simo <bobbens@gmail.com>
parents:
2547
diff
changeset
|
419 |
b5b8a7f4a965
Reset device and enable actuators when initializing.
Edgar Simo <bobbens@gmail.com>
parents:
2547
diff
changeset
|
420 /* Reset and then enable actuators. */ |
b5b8a7f4a965
Reset device and enable actuators when initializing.
Edgar Simo <bobbens@gmail.com>
parents:
2547
diff
changeset
|
421 ret = FFDeviceSendForceFeedbackCommand( haptic->hwdata->device, |
b5b8a7f4a965
Reset device and enable actuators when initializing.
Edgar Simo <bobbens@gmail.com>
parents:
2547
diff
changeset
|
422 FFSFFC_RESET ); |
b5b8a7f4a965
Reset device and enable actuators when initializing.
Edgar Simo <bobbens@gmail.com>
parents:
2547
diff
changeset
|
423 if (ret != FF_OK) { |
b5b8a7f4a965
Reset device and enable actuators when initializing.
Edgar Simo <bobbens@gmail.com>
parents:
2547
diff
changeset
|
424 SDL_SetError("Haptic: Unable to reset device: %s.", FFStrError(ret)); |
b5b8a7f4a965
Reset device and enable actuators when initializing.
Edgar Simo <bobbens@gmail.com>
parents:
2547
diff
changeset
|
425 goto open_err; |
b5b8a7f4a965
Reset device and enable actuators when initializing.
Edgar Simo <bobbens@gmail.com>
parents:
2547
diff
changeset
|
426 } |
b5b8a7f4a965
Reset device and enable actuators when initializing.
Edgar Simo <bobbens@gmail.com>
parents:
2547
diff
changeset
|
427 ret = FFDeviceSendForceFeedbackCommand( haptic->hwdata->device, |
b5b8a7f4a965
Reset device and enable actuators when initializing.
Edgar Simo <bobbens@gmail.com>
parents:
2547
diff
changeset
|
428 FFSFFC_SETACTUATORSON ); |
b5b8a7f4a965
Reset device and enable actuators when initializing.
Edgar Simo <bobbens@gmail.com>
parents:
2547
diff
changeset
|
429 if (ret != FF_OK) { |
b5b8a7f4a965
Reset device and enable actuators when initializing.
Edgar Simo <bobbens@gmail.com>
parents:
2547
diff
changeset
|
430 SDL_SetError("Haptic: Unable to enable actuators: %s.", FFStrError(ret)); |
b5b8a7f4a965
Reset device and enable actuators when initializing.
Edgar Simo <bobbens@gmail.com>
parents:
2547
diff
changeset
|
431 goto open_err; |
b5b8a7f4a965
Reset device and enable actuators when initializing.
Edgar Simo <bobbens@gmail.com>
parents:
2547
diff
changeset
|
432 } |
b5b8a7f4a965
Reset device and enable actuators when initializing.
Edgar Simo <bobbens@gmail.com>
parents:
2547
diff
changeset
|
433 |
b5b8a7f4a965
Reset device and enable actuators when initializing.
Edgar Simo <bobbens@gmail.com>
parents:
2547
diff
changeset
|
434 |
b5b8a7f4a965
Reset device and enable actuators when initializing.
Edgar Simo <bobbens@gmail.com>
parents:
2547
diff
changeset
|
435 /* Allocate effects memory. */ |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
436 haptic->effects = (struct haptic_effect *) |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
437 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
|
438 if (haptic->effects == NULL) { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
439 SDL_OutOfMemory(); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
440 goto open_err; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
441 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
442 /* Clear the memory */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
443 SDL_memset(haptic->effects, 0, |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
444 sizeof(struct haptic_effect) * haptic->neffects); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
445 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
446 return 0; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
447 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
448 /* Error handling */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
449 open_err: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
450 FFReleaseDevice(haptic->hwdata->device); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
451 creat_err: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
452 if (haptic->hwdata != NULL) { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
453 free(haptic->hwdata); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
454 haptic->hwdata = NULL; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
455 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
456 return -1; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
457 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
458 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
459 |
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 /* |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
462 * Opens a haptic device for usage. |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
463 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
464 int |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
465 SDL_SYS_HapticOpen(SDL_Haptic * haptic) |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
466 { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
467 return SDL_SYS_HapticOpenFromService(haptic, |
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
468 SDL_hapticlist[haptic->index].dev); |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
469 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
470 |
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 /* |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
473 * 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
|
474 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
475 int |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
476 SDL_SYS_HapticMouse(void) |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
477 { |
2641 | 478 int i; |
479 | |
480 for (i=0; i<SDL_numhaptics; i++) { | |
481 if ((SDL_hapticlist[i].usagePage == kHIDPage_GenericDesktop) && | |
482 (SDL_hapticlist[i].usage == kHIDUsage_GD_Mouse)) | |
483 return i; | |
484 } | |
485 | |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
486 return -1; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
487 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
488 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
489 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
490 /* |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
491 * 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
|
492 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
493 int |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
494 SDL_SYS_JoystickIsHaptic(SDL_Joystick * joystick) |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
495 { |
2637
2f826c229d77
First draft of darwin haptic<->joystick stuff.
Edgar Simo <bobbens@gmail.com>
parents:
2633
diff
changeset
|
496 if (joystick->hwdata->ffservice != 0) |
2f826c229d77
First draft of darwin haptic<->joystick stuff.
Edgar Simo <bobbens@gmail.com>
parents:
2633
diff
changeset
|
497 return SDL_TRUE; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
498 return SDL_FALSE; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
499 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
500 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
501 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
502 /* |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
503 * 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
|
504 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
505 int |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
506 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
|
507 { |
2639 | 508 if (IOObjectIsEqualTo((io_object_t) haptic->hwdata->device, |
509 joystick->hwdata->ffservice)) | |
2637
2f826c229d77
First draft of darwin haptic<->joystick stuff.
Edgar Simo <bobbens@gmail.com>
parents:
2633
diff
changeset
|
510 return 1; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
511 return 0; |
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 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
514 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
515 /* |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
516 * 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
|
517 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
518 int |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
519 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
|
520 { |
2637
2f826c229d77
First draft of darwin haptic<->joystick stuff.
Edgar Simo <bobbens@gmail.com>
parents:
2633
diff
changeset
|
521 return SDL_SYS_HapticOpenFromService(haptic, |
2f826c229d77
First draft of darwin haptic<->joystick stuff.
Edgar Simo <bobbens@gmail.com>
parents:
2633
diff
changeset
|
522 joystick->hwdata->ffservice); |
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 |
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 * Closes the haptic device. |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
528 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
529 void |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
530 SDL_SYS_HapticClose(SDL_Haptic * haptic) |
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 if (haptic->hwdata) { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
533 |
2561
3696b9ce8a37
Correctness patch, it's up to the SDL_haptic.c to clean up effects, not SDL_syshaptic.c.
Edgar Simo <bobbens@gmail.com>
parents:
2559
diff
changeset
|
534 /* Free Effects. */ |
2530 | 535 SDL_free(haptic->effects); |
2561
3696b9ce8a37
Correctness patch, it's up to the SDL_haptic.c to clean up effects, not SDL_syshaptic.c.
Edgar Simo <bobbens@gmail.com>
parents:
2559
diff
changeset
|
536 haptic->effects = NULL; |
2530 | 537 haptic->neffects = 0; |
538 | |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
539 /* Clean up */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
540 FFReleaseDevice(haptic->hwdata->device); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
541 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
542 /* Free */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
543 SDL_free(haptic->hwdata); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
544 haptic->hwdata = NULL; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
545 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
546 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
547 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
548 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
549 /* |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
550 * 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
|
551 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
552 void |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
553 SDL_SYS_HapticQuit(void) |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
554 { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
555 int i; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
556 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
557 for (i=0; i < SDL_numhaptics; i++) { |
2530 | 558 /* Opened and not closed haptics are leaked, this is on purpose. |
559 * Close your haptic devices after usage. */ | |
560 | |
561 /* Free the io_service_t */ | |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
562 IOObjectRelease(SDL_hapticlist[i].dev); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
563 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
564 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
565 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
566 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
567 /* |
2554
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
568 * Converts an SDL trigger button to an FFEFFECT trigger button. |
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
569 */ |
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
570 static DWORD |
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
571 FFGetTriggerButton( Uint16 button ) |
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
572 { |
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
573 DWORD dwTriggerButton; |
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
574 |
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
575 dwTriggerButton = FFEB_NOTRIGGER; |
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
576 |
2555
f5bcc926bac4
Not being able to compile locally gets on my nerves.
Edgar Simo <bobbens@gmail.com>
parents:
2554
diff
changeset
|
577 if (button != 0) { |
2556
fe346eddd3fb
Updated button trigger stuff.
Edgar Simo <bobbens@gmail.com>
parents:
2555
diff
changeset
|
578 dwTriggerButton = FFJOFS_BUTTON(button - 1); |
2555
f5bcc926bac4
Not being able to compile locally gets on my nerves.
Edgar Simo <bobbens@gmail.com>
parents:
2554
diff
changeset
|
579 } |
2554
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
580 |
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
581 return dwTriggerButton; |
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
582 } |
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
583 |
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
584 |
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
585 /* |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
586 * Sets the direction. |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
587 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
588 static int |
2529
e1d5d16e88a8
Can't believe I missed this typo.
Edgar Simo <bobbens@gmail.com>
parents:
2528
diff
changeset
|
589 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
|
590 { |
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset
|
591 LONG *rglDir; |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
592 |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
593 /* Handle no axes a part. */ |
2528 | 594 if (naxes == 0) { |
2559
42b682e85546
Allow effects with no axes.
Edgar Simo <bobbens@gmail.com>
parents:
2557
diff
changeset
|
595 effect->dwFlags |= FFEFF_SPHERICAL; /* Set as default. */ |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
596 effect->rglDirection = NULL; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
597 return 0; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
598 } |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
599 |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
600 /* Has axes. */ |
2529
e1d5d16e88a8
Can't believe I missed this typo.
Edgar Simo <bobbens@gmail.com>
parents:
2528
diff
changeset
|
601 rglDir = SDL_malloc( sizeof(LONG) * naxes ); |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
602 if (rglDir == NULL) { |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
603 SDL_OutOfMemory(); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
604 return -1; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
605 } |
2529
e1d5d16e88a8
Can't believe I missed this typo.
Edgar Simo <bobbens@gmail.com>
parents:
2528
diff
changeset
|
606 SDL_memset( rglDir, 0, sizeof(LONG) * naxes ); |
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset
|
607 effect->rglDirection = rglDir; |
2520
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 switch (dir->type) { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
610 case SDL_HAPTIC_POLAR: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
611 effect->dwFlags |= FFEFF_POLAR; |
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset
|
612 rglDir[0] = dir->dir[0]; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
613 return 0; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
614 case SDL_HAPTIC_CARTESIAN: |
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
615 effect->dwFlags |= FFEFF_CARTESIAN; |
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset
|
616 rglDir[0] = dir->dir[0]; |
2604
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
617 if (naxes > 1) |
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
618 rglDir[1] = dir->dir[1]; |
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
619 if (naxes > 2) |
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
620 rglDir[2] = dir->dir[2]; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
621 return 0; |
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset
|
622 case SDL_HAPTIC_SPHERICAL: |
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
623 effect->dwFlags |= FFEFF_SPHERICAL; |
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset
|
624 rglDir[0] = dir->dir[0]; |
2604
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
625 if (naxes > 1) |
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
626 rglDir[1] = dir->dir[1]; |
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
627 if (naxes > 2) |
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
628 rglDir[2] = dir->dir[2]; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
629 return 0; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
630 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
631 default: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
632 SDL_SetError("Haptic: Unknown direction type."); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
633 return -1; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
634 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
635 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
636 |
2628
bfbda6c656e5
Should remove warnings on compilation.
Edgar Simo <bobbens@gmail.com>
parents:
2627
diff
changeset
|
637 |
bfbda6c656e5
Should remove warnings on compilation.
Edgar Simo <bobbens@gmail.com>
parents:
2627
diff
changeset
|
638 /* Clamps and converts. */ |
bfbda6c656e5
Should remove warnings on compilation.
Edgar Simo <bobbens@gmail.com>
parents:
2627
diff
changeset
|
639 #define CCONVERT(x) (((x) > 0x7FFF) ? 10000 : ((x)*10000) / 0x7FFF) |
bfbda6c656e5
Should remove warnings on compilation.
Edgar Simo <bobbens@gmail.com>
parents:
2627
diff
changeset
|
640 /* Just converts. */ |
bfbda6c656e5
Should remove warnings on compilation.
Edgar Simo <bobbens@gmail.com>
parents:
2627
diff
changeset
|
641 #define CONVERT(x) (((x)*10000) / 0x7FFF) |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
642 /* |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
643 * 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
|
644 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
645 static int |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
646 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
|
647 { |
2530 | 648 int i; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
649 FFCONSTANTFORCE *constant; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
650 FFPERIODIC *periodic; |
2530 | 651 FFCONDITION *condition; /* Actually an array of conditions - one per axis. */ |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
652 FFRAMPFORCE *ramp; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
653 FFCUSTOMFORCE *custom; |
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
654 FFENVELOPE *envelope; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
655 SDL_HapticConstant *hap_constant; |
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset
|
656 SDL_HapticPeriodic *hap_periodic; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
657 SDL_HapticCondition *hap_condition; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
658 SDL_HapticRamp *hap_ramp; |
2535
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
659 SDL_HapticCustom *hap_custom; |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
660 DWORD *axes; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
661 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
662 /* Set global stuff. */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
663 SDL_memset(dest, 0, sizeof(FFEFFECT)); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
664 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
|
665 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
|
666 dest->dwGain = 10000; /* Gain is set globally, not locally. */ |
2610
71a835ee438a
Added FFEFF_OBJECTOFFSETS to darwin port.
Edgar Simo <bobbens@gmail.com>
parents:
2609
diff
changeset
|
667 dest->dwFlags = FFEFF_OBJECTOFFSETS; /* Seems obligatory. */ |
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
668 |
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
669 /* Envelope. */ |
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
670 envelope = SDL_malloc( sizeof(FFENVELOPE) ); |
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
671 if (envelope == NULL) { |
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
672 SDL_OutOfMemory(); |
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
673 return -1; |
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
674 } |
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
675 SDL_memset(envelope, 0, sizeof(FFENVELOPE)); |
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
676 dest->lpEnvelope = envelope; |
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
677 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
|
678 |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
679 /* Axes. */ |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
680 dest->cAxes = haptic->naxes; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
681 if (dest->cAxes > 0) { |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
682 axes = SDL_malloc(sizeof(DWORD) * dest->cAxes); |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
683 if (axes == NULL) { |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
684 SDL_OutOfMemory(); |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
685 return -1; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
686 } |
2627
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
687 axes[0] = haptic->hwdata->axes[0]; /* Always at least one axis. */ |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
688 if (dest->cAxes > 1) { |
2627
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
689 axes[1] = haptic->hwdata->axes[1]; |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
690 } |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
691 if (dest->cAxes > 2) { |
2627
265ced2079bd
Proper axes support for darwin haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2610
diff
changeset
|
692 axes[2] = haptic->hwdata->axes[2]; |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
693 } |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
694 dest->rgdwAxes = axes; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
695 } |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
696 |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
697 |
2530 | 698 /* The big type handling switch, even bigger then linux's version. */ |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
699 switch (src->type) { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
700 case SDL_HAPTIC_CONSTANT: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
701 hap_constant = &src->constant; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
702 constant = SDL_malloc( sizeof(FFCONSTANTFORCE) ); |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
703 if (constant == NULL) { |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
704 SDL_OutOfMemory(); |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
705 return -1; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
706 } |
2535
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
707 SDL_memset(constant, 0, sizeof(FFCONSTANTFORCE)); |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
708 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
709 /* Specifics */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
710 constant->lMagnitude = CONVERT(hap_constant->level); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
711 dest->cbTypeSpecificParams = sizeof(FFCONSTANTFORCE); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
712 dest->lpvTypeSpecificParams = constant; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
713 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
714 /* Generics */ |
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset
|
715 dest->dwDuration = hap_constant->length * 1000; /* In microseconds. */ |
2554
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
716 dest->dwTriggerButton = FFGetTriggerButton(hap_constant->button); |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
717 dest->dwTriggerRepeatInterval = hap_constant->interval; |
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset
|
718 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
|
719 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
720 /* Direction. */ |
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
721 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
|
722 return -1; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
723 } |
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 /* Envelope */ |
2565 | 726 if ((hap_constant->attack_length==0) && (hap_constant->fade_length==0)) { |
2563
be2ea885d70b
More verbose about envelopes.
Edgar Simo <bobbens@gmail.com>
parents:
2562
diff
changeset
|
727 SDL_free(envelope); |
be2ea885d70b
More verbose about envelopes.
Edgar Simo <bobbens@gmail.com>
parents:
2562
diff
changeset
|
728 dest->lpEnvelope = NULL; |
2557
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
729 } |
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
730 else { |
2628
bfbda6c656e5
Should remove warnings on compilation.
Edgar Simo <bobbens@gmail.com>
parents:
2627
diff
changeset
|
731 envelope->dwAttackLevel = CCONVERT(hap_constant->attack_level); |
2557
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
732 envelope->dwAttackTime = hap_constant->attack_length * 1000; |
2628
bfbda6c656e5
Should remove warnings on compilation.
Edgar Simo <bobbens@gmail.com>
parents:
2627
diff
changeset
|
733 envelope->dwFadeLevel = CCONVERT(hap_constant->fade_level); |
2557
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
734 envelope->dwFadeTime = hap_constant->fade_length * 1000; |
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
735 } |
2520
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 break; |
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 case SDL_HAPTIC_SINE: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
740 case SDL_HAPTIC_SQUARE: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
741 case SDL_HAPTIC_TRIANGLE: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
742 case SDL_HAPTIC_SAWTOOTHUP: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
743 case SDL_HAPTIC_SAWTOOTHDOWN: |
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
744 hap_periodic = &src->periodic; |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
745 periodic = SDL_malloc(sizeof(FFPERIODIC)); |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
746 if (periodic == NULL) { |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
747 SDL_OutOfMemory(); |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
748 return -1; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
749 } |
2535
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
750 SDL_memset(periodic, 0, sizeof(FFPERIODIC)); |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
751 |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
752 /* Specifics */ |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
753 periodic->dwMagnitude = CONVERT(hap_periodic->magnitude); |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
754 periodic->lOffset = CONVERT(hap_periodic->offset); |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
755 periodic->dwPhase = hap_periodic->phase; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
756 periodic->dwPeriod = hap_periodic->period * 1000; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
757 dest->cbTypeSpecificParams = sizeof(FFPERIODIC); |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
758 dest->lpvTypeSpecificParams = periodic; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
759 |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
760 /* Generics */ |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
761 dest->dwDuration = hap_periodic->length * 1000; /* In microseconds. */ |
2554
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
762 dest->dwTriggerButton = FFGetTriggerButton(hap_periodic->button); |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
763 dest->dwTriggerRepeatInterval = hap_periodic->interval; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
764 dest->dwStartDelay = hap_periodic->delay * 1000; /* In microseconds. */ |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
765 |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
766 /* Direction. */ |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
767 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
|
768 return -1; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
769 } |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
770 |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
771 /* Envelope */ |
2565 | 772 if ((hap_periodic->attack_length==0) && (hap_periodic->fade_length==0)) { |
2563
be2ea885d70b
More verbose about envelopes.
Edgar Simo <bobbens@gmail.com>
parents:
2562
diff
changeset
|
773 SDL_free(envelope); |
be2ea885d70b
More verbose about envelopes.
Edgar Simo <bobbens@gmail.com>
parents:
2562
diff
changeset
|
774 dest->lpEnvelope = NULL; |
2557
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
775 } |
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
776 else { |
2628
bfbda6c656e5
Should remove warnings on compilation.
Edgar Simo <bobbens@gmail.com>
parents:
2627
diff
changeset
|
777 envelope->dwAttackLevel = CCONVERT(hap_periodic->attack_level); |
2557
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
778 envelope->dwAttackTime = hap_periodic->attack_length * 1000; |
2628
bfbda6c656e5
Should remove warnings on compilation.
Edgar Simo <bobbens@gmail.com>
parents:
2627
diff
changeset
|
779 envelope->dwFadeLevel = CCONVERT(hap_periodic->fade_level); |
2557
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
780 envelope->dwFadeTime = hap_periodic->fade_length * 1000; |
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
781 } |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
782 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
783 break; |
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 case SDL_HAPTIC_SPRING: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
786 case SDL_HAPTIC_DAMPER: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
787 case SDL_HAPTIC_INERTIA: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
788 case SDL_HAPTIC_FRICTION: |
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
789 hap_condition = &src->condition; |
2530 | 790 condition = SDL_malloc(sizeof(FFCONDITION) * dest->cAxes); |
791 if (condition == NULL) { | |
792 SDL_OutOfMemory(); | |
793 return -1; | |
794 } | |
2535
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
795 SDL_memset(condition, 0, sizeof(FFCONDITION)); |
2530 | 796 |
797 /* Specifics */ | |
798 for (i=0; i<dest->cAxes; i++) { | |
2531
7f2a4c387292
Fixed some inconsistancies in coding style.
Edgar Simo <bobbens@gmail.com>
parents:
2530
diff
changeset
|
799 condition[i].lOffset = CONVERT(hap_condition->center[i]); |
7f2a4c387292
Fixed some inconsistancies in coding style.
Edgar Simo <bobbens@gmail.com>
parents:
2530
diff
changeset
|
800 condition[i].lPositiveCoefficient = CONVERT(hap_condition->right_coeff[i]); |
7f2a4c387292
Fixed some inconsistancies in coding style.
Edgar Simo <bobbens@gmail.com>
parents:
2530
diff
changeset
|
801 condition[i].lNegativeCoefficient = CONVERT(hap_condition->left_coeff[i]); |
2628
bfbda6c656e5
Should remove warnings on compilation.
Edgar Simo <bobbens@gmail.com>
parents:
2627
diff
changeset
|
802 condition[i].dwPositiveSaturation = CCONVERT(hap_condition->right_sat[i]); |
bfbda6c656e5
Should remove warnings on compilation.
Edgar Simo <bobbens@gmail.com>
parents:
2627
diff
changeset
|
803 condition[i].dwNegativeSaturation = CCONVERT(hap_condition->left_sat[i]); |
bfbda6c656e5
Should remove warnings on compilation.
Edgar Simo <bobbens@gmail.com>
parents:
2627
diff
changeset
|
804 condition[i].lDeadBand = CCONVERT(hap_condition->deadband[i]); |
2530 | 805 } |
806 dest->cbTypeSpecificParams = sizeof(FFCONDITION) * dest->cAxes; | |
807 dest->lpvTypeSpecificParams = condition; | |
808 | |
809 /* Generics */ | |
2531
7f2a4c387292
Fixed some inconsistancies in coding style.
Edgar Simo <bobbens@gmail.com>
parents:
2530
diff
changeset
|
810 dest->dwDuration = hap_condition->length * 1000; /* In microseconds. */ |
2554
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
811 dest->dwTriggerButton = FFGetTriggerButton(hap_condition->button); |
2531
7f2a4c387292
Fixed some inconsistancies in coding style.
Edgar Simo <bobbens@gmail.com>
parents:
2530
diff
changeset
|
812 dest->dwTriggerRepeatInterval = hap_condition->interval; |
7f2a4c387292
Fixed some inconsistancies in coding style.
Edgar Simo <bobbens@gmail.com>
parents:
2530
diff
changeset
|
813 dest->dwStartDelay = hap_condition->delay * 1000; /* In microseconds. */ |
2530 | 814 |
815 /* Direction. */ | |
2531
7f2a4c387292
Fixed some inconsistancies in coding style.
Edgar Simo <bobbens@gmail.com>
parents:
2530
diff
changeset
|
816 if (SDL_SYS_SetDirection(dest, &hap_condition->direction, dest->cAxes) < 0) { |
2530 | 817 return -1; |
818 } | |
819 | |
2629 | 820 /* Envelope - Not actually supported by most CONDITION implementations. */ |
2557
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
821 SDL_free(dest->lpEnvelope); |
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
822 dest->lpEnvelope = NULL; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
823 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
824 break; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
825 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
826 case SDL_HAPTIC_RAMP: |
2522
0877146be013
Now compiles cleanly (has yet to work though).
Edgar Simo <bobbens@gmail.com>
parents:
2521
diff
changeset
|
827 hap_ramp = &src->ramp; |
2533
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
828 ramp = SDL_malloc(sizeof(FFRAMPFORCE)); |
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
829 if (ramp == NULL) { |
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
830 SDL_OutOfMemory(); |
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
831 return -1; |
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
832 } |
2535
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
833 SDL_memset(ramp, 0, sizeof(FFRAMPFORCE)); |
2533
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
834 |
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
835 /* Specifics */ |
2534
e597de8dccd5
Was a typo in the mac os x documentation.
Edgar Simo <bobbens@gmail.com>
parents:
2533
diff
changeset
|
836 ramp->lStart = CONVERT(hap_ramp->start); |
2533
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
837 ramp->lEnd = CONVERT(hap_ramp->end); |
2535
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
838 dest->cbTypeSpecificParams = sizeof(FFRAMPFORCE); |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
839 dest->lpvTypeSpecificParams = ramp; |
2533
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
840 |
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
841 /* Generics */ |
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
842 dest->dwDuration = hap_ramp->length * 1000; /* In microseconds. */ |
2554
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
843 dest->dwTriggerButton = FFGetTriggerButton(hap_ramp->button); |
2533
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
844 dest->dwTriggerRepeatInterval = hap_ramp->interval; |
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
845 dest->dwStartDelay = hap_ramp->delay * 1000; /* In microseconds. */ |
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
846 |
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
847 /* Direction. */ |
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
848 if (SDL_SYS_SetDirection(dest, &hap_ramp->direction, dest->cAxes) < 0) { |
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
849 return -1; |
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
850 } |
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
851 |
0c8cea99c4b8
Added SDL_HAPTIC_RAMP support for darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2532
diff
changeset
|
852 /* Envelope */ |
2565 | 853 if ((hap_ramp->attack_length==0) && (hap_ramp->fade_length==0)) { |
2563
be2ea885d70b
More verbose about envelopes.
Edgar Simo <bobbens@gmail.com>
parents:
2562
diff
changeset
|
854 SDL_free(envelope); |
be2ea885d70b
More verbose about envelopes.
Edgar Simo <bobbens@gmail.com>
parents:
2562
diff
changeset
|
855 dest->lpEnvelope = NULL; |
2564 | 856 } |
2557
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
857 else { |
2628
bfbda6c656e5
Should remove warnings on compilation.
Edgar Simo <bobbens@gmail.com>
parents:
2627
diff
changeset
|
858 envelope->dwAttackLevel = CCONVERT(hap_ramp->attack_level); |
2557
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
859 envelope->dwAttackTime = hap_ramp->attack_length * 1000; |
2628
bfbda6c656e5
Should remove warnings on compilation.
Edgar Simo <bobbens@gmail.com>
parents:
2627
diff
changeset
|
860 envelope->dwFadeLevel = CCONVERT(hap_ramp->fade_level); |
2557
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
861 envelope->dwFadeTime = hap_ramp->fade_length * 1000; |
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
862 } |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
863 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
864 break; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
865 |
2535
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
866 case SDL_HAPTIC_CUSTOM: |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
867 hap_custom = &src->custom; |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
868 custom = SDL_malloc(sizeof(FFCUSTOMFORCE)); |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
869 if (custom == NULL) { |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
870 SDL_OutOfMemory(); |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
871 return -1; |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
872 } |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
873 SDL_memset(custom, 0, sizeof(FFCUSTOMFORCE)); |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
874 |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
875 /* Specifics */ |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
876 custom->cChannels = hap_custom->channels; |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
877 custom->dwSamplePeriod = hap_custom->period * 1000; |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
878 custom->cSamples = hap_custom->samples; |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
879 custom->rglForceData = SDL_malloc(sizeof(LONG)*custom->cSamples*custom->cChannels); |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
880 for (i=0; i<hap_custom->samples*hap_custom->channels; i++) { /* Copy data. */ |
2628
bfbda6c656e5
Should remove warnings on compilation.
Edgar Simo <bobbens@gmail.com>
parents:
2627
diff
changeset
|
881 custom->rglForceData[i] = CCONVERT(hap_custom->data[i]); |
2535
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
882 } |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
883 dest->cbTypeSpecificParams = sizeof(FFCUSTOMFORCE); |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
884 dest->lpvTypeSpecificParams = custom; |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
885 |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
886 /* Generics */ |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
887 dest->dwDuration = hap_custom->length * 1000; /* In microseconds. */ |
2554
2681a04c2d3d
Warn about using button triggers.
Edgar Simo <bobbens@gmail.com>
parents:
2553
diff
changeset
|
888 dest->dwTriggerButton = FFGetTriggerButton(hap_custom->button); |
2535
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
889 dest->dwTriggerRepeatInterval = hap_custom->interval; |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
890 dest->dwStartDelay = hap_custom->delay * 1000; /* In microseconds. */ |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
891 |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
892 /* Direction. */ |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
893 if (SDL_SYS_SetDirection(dest, &hap_custom->direction, dest->cAxes) < 0) { |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
894 return -1; |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
895 } |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
896 |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
897 /* Envelope */ |
2565 | 898 if ((hap_custom->attack_length==0) && (hap_custom->fade_length==0)) { |
2563
be2ea885d70b
More verbose about envelopes.
Edgar Simo <bobbens@gmail.com>
parents:
2562
diff
changeset
|
899 SDL_free(envelope); |
be2ea885d70b
More verbose about envelopes.
Edgar Simo <bobbens@gmail.com>
parents:
2562
diff
changeset
|
900 dest->lpEnvelope = NULL; |
2557
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
901 } |
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
902 else { |
2628
bfbda6c656e5
Should remove warnings on compilation.
Edgar Simo <bobbens@gmail.com>
parents:
2627
diff
changeset
|
903 envelope->dwAttackLevel = CCONVERT(hap_custom->attack_level); |
2557
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
904 envelope->dwAttackTime = hap_custom->attack_length * 1000; |
2628
bfbda6c656e5
Should remove warnings on compilation.
Edgar Simo <bobbens@gmail.com>
parents:
2627
diff
changeset
|
905 envelope->dwFadeLevel = CCONVERT(hap_custom->fade_level); |
2557
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
906 envelope->dwFadeTime = hap_custom->fade_length * 1000; |
30778d9d8bff
Made envelopes behave correctly with length of 0.
Edgar Simo <bobbens@gmail.com>
parents:
2556
diff
changeset
|
907 } |
2535
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
908 |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
909 break; |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
910 |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
911 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
912 default: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
913 SDL_SetError("Haptic: Unknown effect type."); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
914 return -1; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
915 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
916 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
917 return 0; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
918 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
919 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
920 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
921 /* |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
922 * Frees an FFEFFECT allocated by SDL_SYS_ToFFEFFECT. |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
923 */ |
2531
7f2a4c387292
Fixed some inconsistancies in coding style.
Edgar Simo <bobbens@gmail.com>
parents:
2530
diff
changeset
|
924 static void |
2535
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
925 SDL_SYS_HapticFreeFFEFFECT( FFEFFECT * effect, int type ) |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
926 { |
2535
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
927 FFCUSTOMFORCE *custom; |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
928 |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
929 if (effect->lpEnvelope != NULL) { |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
930 SDL_free(effect->lpEnvelope); |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
931 effect->lpEnvelope = NULL; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
932 } |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
933 if (effect->rgdwAxes != NULL) { |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
934 SDL_free(effect->rgdwAxes); |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
935 effect->rgdwAxes = NULL; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
936 } |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
937 if (effect->lpvTypeSpecificParams != NULL) { |
2535
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
938 if (type == SDL_HAPTIC_CUSTOM) { /* Must free the custom data. */ |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
939 custom = (FFCUSTOMFORCE*) effect->lpvTypeSpecificParams; |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
940 SDL_free(custom->rglForceData); |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
941 custom->rglForceData = NULL; |
f0ed8471497d
Added custom effect with support on darwin.
Edgar Simo <bobbens@gmail.com>
parents:
2534
diff
changeset
|
942 } |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
943 SDL_free(effect->lpvTypeSpecificParams); |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
944 effect->lpvTypeSpecificParams = NULL; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
945 } |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
946 if (effect->rglDirection != NULL) { |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
947 SDL_free(effect->rglDirection); |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
948 effect->rglDirection = NULL; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
949 } |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
950 } |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
951 |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
952 |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
953 /* |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
954 * 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
|
955 */ |
2531
7f2a4c387292
Fixed some inconsistancies in coding style.
Edgar Simo <bobbens@gmail.com>
parents:
2530
diff
changeset
|
956 CFUUIDRef |
2552
ee048e7bc909
Removed invalid type check.
Edgar Simo <bobbens@gmail.com>
parents:
2550
diff
changeset
|
957 SDL_SYS_HapticEffectType( Uint16 type ) |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
958 { |
2552
ee048e7bc909
Removed invalid type check.
Edgar Simo <bobbens@gmail.com>
parents:
2550
diff
changeset
|
959 switch (type) { |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
960 case SDL_HAPTIC_CONSTANT: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
961 return kFFEffectType_ConstantForce_ID; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
962 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
963 case SDL_HAPTIC_RAMP: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
964 return kFFEffectType_RampForce_ID; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
965 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
966 case SDL_HAPTIC_SQUARE: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
967 return kFFEffectType_Square_ID; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
968 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
969 case SDL_HAPTIC_SINE: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
970 return kFFEffectType_Sine_ID; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
971 |
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset
|
972 case SDL_HAPTIC_TRIANGLE: |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
973 return kFFEffectType_Triangle_ID; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
974 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
975 case SDL_HAPTIC_SAWTOOTHUP: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
976 return kFFEffectType_SawtoothUp_ID; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
977 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
978 case SDL_HAPTIC_SAWTOOTHDOWN: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
979 return kFFEffectType_SawtoothDown_ID; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
980 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
981 case SDL_HAPTIC_SPRING: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
982 return kFFEffectType_Spring_ID; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
983 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
984 case SDL_HAPTIC_DAMPER: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
985 return kFFEffectType_Damper_ID; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
986 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
987 case SDL_HAPTIC_INERTIA: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
988 return kFFEffectType_Inertia_ID; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
989 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
990 case SDL_HAPTIC_FRICTION: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
991 return kFFEffectType_Friction_ID; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
992 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
993 case SDL_HAPTIC_CUSTOM: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
994 return kFFEffectType_CustomForce_ID; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
995 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
996 default: |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
997 SDL_SetError("Haptic: Unknown effect type."); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
998 return NULL; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
999 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1000 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1001 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1002 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1003 /* |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1004 * Creates a new haptic effect. |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1005 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1006 int |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1007 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
|
1008 SDL_HapticEffect * base) |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1009 { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1010 HRESULT ret; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1011 CFUUIDRef type; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1012 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1013 /* Alloc the effect. */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1014 effect->hweffect = (struct haptic_hweffect *) |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1015 SDL_malloc(sizeof(struct haptic_hweffect)); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1016 if (effect->hweffect == NULL) { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1017 SDL_OutOfMemory(); |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
1018 goto err_hweffect; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1019 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1020 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1021 /* Get the type. */ |
2553 | 1022 type = SDL_SYS_HapticEffectType(base->type); |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1023 if (type == NULL) { |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
1024 goto err_hweffect; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1025 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1026 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1027 /* Get the effect. */ |
2538
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1028 if (SDL_SYS_ToFFEFFECT(haptic, &effect->hweffect->effect, base) < 0) { |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
1029 goto err_effectdone; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1030 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1031 |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
1032 /* Create the actual effect. */ |
2538
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1033 ret = FFDeviceCreateEffect(haptic->hwdata->device, type, |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1034 &effect->hweffect->effect, &effect->hweffect->ref); |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
1035 if (ret != FF_OK) { |
2541 | 1036 SDL_SetError("Haptic: Unable to create effect: %s.", FFStrError(ret)); |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
1037 goto err_effectdone; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
1038 } |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
1039 |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
1040 return 0; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
1041 |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
1042 err_effectdone: |
2538
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1043 SDL_SYS_HapticFreeFFEFFECT(&effect->hweffect->effect, base->type); |
2527
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
1044 err_hweffect: |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
1045 if (effect->hweffect != NULL) { |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
1046 SDL_free(effect->hweffect); |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
1047 effect->hweffect = NULL; |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
1048 } |
924a32719b6f
Handle axes for darwin now.
Edgar Simo <bobbens@gmail.com>
parents:
2522
diff
changeset
|
1049 return -1; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1050 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1051 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1052 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1053 /* |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1054 * Updates an effect. |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1055 */ |
2531
7f2a4c387292
Fixed some inconsistancies in coding style.
Edgar Simo <bobbens@gmail.com>
parents:
2530
diff
changeset
|
1056 int |
7f2a4c387292
Fixed some inconsistancies in coding style.
Edgar Simo <bobbens@gmail.com>
parents:
2530
diff
changeset
|
1057 SDL_SYS_HapticUpdateEffect(SDL_Haptic * haptic, |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1058 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
|
1059 { |
2538
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1060 HRESULT ret; |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1061 FFEffectParameterFlag flags; |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1062 FFEFFECT temp; |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1063 |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1064 /* Get the effect. */ |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1065 SDL_memset(&temp, 0, sizeof(FFEFFECT)); |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1066 if (SDL_SYS_ToFFEFFECT(haptic, &temp, data) < 0) { |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1067 goto err_update; |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1068 } |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1069 |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1070 /* Set the flags. Might be worthwhile to diff temp with loaded effect and |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1071 * only change those parameters. */ |
2608
7c7a63f22afa
Using same syntax as the windows port for updating effects.
Edgar Simo <bobbens@gmail.com>
parents:
2604
diff
changeset
|
1072 flags = FFEP_DIRECTION | |
7c7a63f22afa
Using same syntax as the windows port for updating effects.
Edgar Simo <bobbens@gmail.com>
parents:
2604
diff
changeset
|
1073 FFEP_DURATION | |
7c7a63f22afa
Using same syntax as the windows port for updating effects.
Edgar Simo <bobbens@gmail.com>
parents:
2604
diff
changeset
|
1074 FFEP_ENVELOPE | |
7c7a63f22afa
Using same syntax as the windows port for updating effects.
Edgar Simo <bobbens@gmail.com>
parents:
2604
diff
changeset
|
1075 FFEP_STARTDELAY | |
7c7a63f22afa
Using same syntax as the windows port for updating effects.
Edgar Simo <bobbens@gmail.com>
parents:
2604
diff
changeset
|
1076 FFEP_TRIGGERBUTTON | |
7c7a63f22afa
Using same syntax as the windows port for updating effects.
Edgar Simo <bobbens@gmail.com>
parents:
2604
diff
changeset
|
1077 FFEP_TRIGGERREPEATINTERVAL | |
7c7a63f22afa
Using same syntax as the windows port for updating effects.
Edgar Simo <bobbens@gmail.com>
parents:
2604
diff
changeset
|
1078 FFEP_TYPESPECIFICPARAMS; |
2538
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1079 |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1080 /* Create the actual effect. */ |
2542
4e055fa7acb9
Fixed some stupid mistakes.
Edgar Simo <bobbens@gmail.com>
parents:
2541
diff
changeset
|
1081 ret = FFEffectSetParameters(effect->hweffect->ref, &temp, flags); |
2538
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1082 if (ret != FF_OK) { |
2541 | 1083 SDL_SetError("Haptic: Unable to update effect: %s.", FFStrError(ret)); |
2538
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1084 goto err_update; |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1085 } |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1086 |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1087 /* Copy it over. */ |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1088 SDL_SYS_HapticFreeFFEFFECT(&effect->hweffect->effect, data->type); |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1089 SDL_memcpy(&effect->hweffect->effect, &temp, sizeof(FFEFFECT)); |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1090 |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1091 return 0; |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1092 |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1093 err_update: |
1f9c20580ab4
Improved correctiveness in CreateEffect.
Edgar Simo <bobbens@gmail.com>
parents:
2537
diff
changeset
|
1094 SDL_SYS_HapticFreeFFEFFECT(&temp, data->type); |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1095 return -1; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1096 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1097 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1098 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1099 /* |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1100 * Runs an effect. |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1101 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1102 int |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1103 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
|
1104 Uint32 iterations) |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1105 { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1106 HRESULT ret; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1107 Uint32 iter; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1108 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1109 /* Check if it's infinite. */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1110 if (iterations == SDL_HAPTIC_INFINITY) { |
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset
|
1111 iter = FF_INFINITE; |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1112 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1113 else |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1114 iter = iterations; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1115 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1116 /* Run the effect. */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1117 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
|
1118 if (ret != FF_OK) { |
2541 | 1119 SDL_SetError("Haptic: Unable to run the effect: %s.", FFStrError(ret)); |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1120 return -1; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1121 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1122 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1123 return 0; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1124 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1125 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1126 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1127 /* |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1128 * Stops an effect. |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1129 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1130 int |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1131 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
|
1132 { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1133 HRESULT ret; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1134 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1135 ret = FFEffectStop(effect->hweffect->ref); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1136 if (ret != FF_OK) { |
2541 | 1137 SDL_SetError("Haptic: Unable to stop the effect: %s.", FFStrError(ret)); |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1138 return -1; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1139 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1140 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1141 return 0; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1142 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1143 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1144 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1145 /* |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1146 * Frees the effect. |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1147 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1148 void |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1149 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
|
1150 { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1151 HRESULT ret; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1152 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1153 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
|
1154 if (ret != FF_OK) { |
2541 | 1155 SDL_SetError("Haptic: Error removing the effect from the device: %s.", |
1156 FFStrError(ret)); | |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1157 } |
2562 | 1158 SDL_SYS_HapticFreeFFEFFECT(&effect->hweffect->effect, effect->effect.type); |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1159 SDL_free(effect->hweffect); |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1160 effect->hweffect = NULL; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1161 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1162 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1163 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1164 /* |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1165 * 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
|
1166 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1167 int |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1168 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
|
1169 { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1170 HRESULT ret; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1171 FFEffectStatusFlag status; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1172 |
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset
|
1173 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
|
1174 if (ret != FF_OK) { |
2541 | 1175 SDL_SetError("Haptic: Unable to get effect status: %s.", FFStrError(ret)); |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1176 return -1; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1177 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1178 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1179 if (status == 0) return SDL_FALSE; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1180 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
|
1181 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1182 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1183 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1184 /* |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1185 * Sets the gain. |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1186 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1187 int |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1188 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
|
1189 { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1190 HRESULT ret; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1191 Uint32 val; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1192 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1193 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
|
1194 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
|
1195 if (ret != FF_OK) { |
2541 | 1196 SDL_SetError("Haptic: Error setting gain: %s.", FFStrError(ret)); |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1197 return -1; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1198 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1199 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1200 return 0; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1201 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1202 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1203 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1204 /* |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1205 * Sets the autocentering. |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1206 */ |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1207 int |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1208 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
|
1209 { |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1210 HRESULT ret; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1211 Uint32 val; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1212 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1213 /* 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
|
1214 if (autocenter == 0) val = 0; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1215 else val = 1; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1216 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1217 ret = FFDeviceSetForceFeedbackProperty(haptic->hwdata->device, |
2521
7aa91c21ce5f
Many typo and silly mistake fixes.
Edgar Simo <bobbens@gmail.com>
parents:
2520
diff
changeset
|
1218 FFPROP_AUTOCENTER, &val); |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1219 if (ret != FF_OK) { |
2541 | 1220 SDL_SetError("Haptic: Error setting autocenter: %s.", FFStrError(ret)); |
2520
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1221 return -1; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1222 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1223 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1224 return 0; |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1225 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1226 } |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1227 |
6aee9eb4fc6d
Adding initial darwin port of haptic subsystem - broken atm.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1228 |
2541 | 1229 #endif /* SDL_HAPTIC_IOKIT */ |