21 #include "../../SDL_internal.h"
23 #ifdef SDL_JOYSTICK_HAIKU
27 #include <support/String.h>
28 #include <device/Joystick.h>
34 #include "../SDL_sysjoystick.h"
35 #include "../SDL_joystick_c.h"
39 #define MAX_JOYSTICKS 16
42 static char *SDL_joyport[MAX_JOYSTICKS];
43 static char *SDL_joyname[MAX_JOYSTICKS];
59 static int HAIKU_JoystickInit(
void)
64 char name[B_OS_NAME_LENGTH];
67 nports = joystick.CountDevices();
69 SDL_memset(SDL_joyport, 0, (
sizeof SDL_joyport));
70 SDL_memset(SDL_joyname, 0, (
sizeof SDL_joyname));
73 if (joystick.GetDeviceName(
i,
name) == B_OK) {
74 if (joystick.Open(
name) != B_ERROR) {
76 joystick.GetControllerName(&stick_name);
87 static int HAIKU_JoystickGetCount(
void)
92 static void HAIKU_JoystickDetect(
void)
97 static const char *HAIKU_JoystickGetDeviceName(
int device_index)
99 return SDL_joyname[device_index];
102 static int HAIKU_JoystickGetDevicePlayerIndex(
int device_index)
107 static void HAIKU_JoystickGetDevicePlayerIndex(
int device_index,
int player_index)
112 static SDL_JoystickID HAIKU_JoystickGetDeviceInstanceID(
int device_index)
117 static void HAIKU_JoystickClose(SDL_Joystick * joystick);
124 static int HAIKU_JoystickOpen(SDL_Joystick * joystick,
int device_index)
129 joystick->instance_id = device_index;
136 stick =
new BJoystick;
140 if (stick->Open(SDL_joyport[device_index]) == B_ERROR) {
146 stick->EnableCalibration();
149 joystick->nbuttons = stick->CountButtons();
150 joystick->naxes = stick->CountAxes();
151 joystick->nhats = stick->CountHats();
153 joystick->hwdata->new_axes = (int16 *)
155 joystick->hwdata->new_hats = (uint8 *)
171 static void HAIKU_JoystickUpdate(SDL_Joystick *
joystick)
173 static const Uint8 hat_map[9] = {
198 stick->GetAxisValues(
axes);
199 stick->GetHatValues(
hats);
200 buttons = stick->ButtonValues();
220 static void HAIKU_JoystickClose(SDL_Joystick *
joystick)
232 static void HAIKU_JoystickQuit(
void)
239 SDL_joyport[0] =
NULL;
244 SDL_joyname[0] =
NULL;
251 const char *
name = HAIKU_JoystickGetDeviceName( device_index );
257 static int HAIKU_JoystickRumble(SDL_Joystick *
joystick,
Uint16 low_frequency_rumble,
Uint16 high_frequency_rumble)
265 HAIKU_JoystickGetCount,
266 HAIKU_JoystickDetect,
267 HAIKU_JoystickGetDeviceName,
268 HAIKU_JoystickGetDevicePlayerIndex,
269 HAIKU_JoystickSetDevicePlayerIndex,
270 HAIKU_JoystickGetDeviceGUID,
271 HAIKU_JoystickGetDeviceInstanceID,
273 HAIKU_JoystickRumble,
274 HAIKU_JoystickUpdate,