Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
Exposed the darwin joystick hardware data to the haptic subsystem.
Browse files Browse the repository at this point in the history
  • Loading branch information
bobbens committed Aug 6, 2008
1 parent 36054a8 commit aaa01d1
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 51 deletions.
2 changes: 1 addition & 1 deletion src/haptic/darwin/SDL_syshaptic.c
Expand Up @@ -27,7 +27,7 @@
#include "../SDL_syshaptic.h"
#include "SDL_joystick.h"
#include "../../joystick/SDL_sysjoystick.h" /* For the real SDL_Joystick */
/*#include "../../joystick/dawrin/SDL_sysjoystick_c.h"*/ /* For joystick hwdata */
#include "../../joystick/dawrin/SDL_sysjoystick_c.h" /* For joystick hwdata */

#include <IOKit/IOKitLib.h>
#include <IOKit/hid/IOHIDKeys.h>
Expand Down
51 changes: 1 addition & 50 deletions src/joystick/darwin/SDL_sysjoystick.c
Expand Up @@ -51,56 +51,7 @@
#include "SDL_joystick.h"
#include "../SDL_sysjoystick.h"
#include "../SDL_joystick_c.h"

struct recElement
{
IOHIDElementCookie cookie; /* unique value which identifies element, will NOT change */
long min; /* reported min value possible */
long max; /* reported max value possible */
#if 0
/* TODO: maybe should handle the following stuff somehow? */

long scaledMin; /* reported scaled min value possible */
long scaledMax; /* reported scaled max value possible */
long size; /* size in bits of data return from element */
Boolean relative; /* are reports relative to last report (deltas) */
Boolean wrapping; /* does element wrap around (one value higher than max is min) */
Boolean nonLinear; /* are the values reported non-linear relative to element movement */
Boolean preferredState; /* does element have a preferred state (such as a button) */
Boolean nullState; /* does element have null state */
#endif /* 0 */

/* runtime variables used for auto-calibration */
long minReport; /* min returned value */
long maxReport; /* max returned value */

struct recElement *pNext; /* next element in list */
};
typedef struct recElement recElement;

struct joystick_hwdata
{
IOHIDDeviceInterface **interface; /* interface to device, NULL = no interface */

char product[256]; /* name of product */
long usage; /* usage page from IOUSBHID Parser.h which defines general usage */
long usagePage; /* usage within above page from IOUSBHID Parser.h which defines specific usage */

long axes; /* number of axis (calculated, not reported by device) */
long buttons; /* number of buttons (calculated, not reported by device) */
long hats; /* number of hat switches (calculated, not reported by device) */
long elements; /* number of total elements (shouldbe total of above) (calculated, not reported by device) */

recElement *firstAxis;
recElement *firstButton;
recElement *firstHat;

int removed;
int uncentered;

struct joystick_hwdata *pNext; /* next device */
};
typedef struct joystick_hwdata recDevice;
#include "SDL_sysjoystick_c.h"


/* Linked list of all available devices */
Expand Down
87 changes: 87 additions & 0 deletions src/joystick/darwin/SDL_sysjoystick_c.h
@@ -0,0 +1,87 @@
/*
SDL - Simple DirectMedia Layer
Copyright (C) 1997-2004 Sam Lantinga
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Sam Lantinga
slouken@libsdl.org
*/
#include "SDL_config.h"

#ifndef SDL_JOYSTICK_IOKIT_H


#if MAC_OS_X_VERSION_MIN_REQUIRED == 1030
#include "10.3.9-FIX/IOHIDLib.h"
#else
#include <IOKit/hid/IOHIDLib.h>
#endif
#include <IOKit/hid/IOHIDKeys.h>


struct recElement
{
IOHIDElementCookie cookie; /* unique value which identifies element, will NOT change */
long min; /* reported min value possible */
long max; /* reported max value possible */
#if 0
/* TODO: maybe should handle the following stuff somehow? */

long scaledMin; /* reported scaled min value possible */
long scaledMax; /* reported scaled max value possible */
long size; /* size in bits of data return from element */
Boolean relative; /* are reports relative to last report (deltas) */
Boolean wrapping; /* does element wrap around (one value higher than max is min) */
Boolean nonLinear; /* are the values reported non-linear relative to element movement */
Boolean preferredState; /* does element have a preferred state (such as a button) */
Boolean nullState; /* does element have null state */
#endif /* 0 */

/* runtime variables used for auto-calibration */
long minReport; /* min returned value */
long maxReport; /* max returned value */

struct recElement *pNext; /* next element in list */
};
typedef struct recElement recElement;

struct joystick_hwdata
{
IOHIDDeviceInterface **interface; /* interface to device, NULL = no interface */

char product[256]; /* name of product */
long usage; /* usage page from IOUSBHID Parser.h which defines general usage */
long usagePage; /* usage within above page from IOUSBHID Parser.h which defines specific usage */

long axes; /* number of axis (calculated, not reported by device) */
long buttons; /* number of buttons (calculated, not reported by device) */
long hats; /* number of hat switches (calculated, not reported by device) */
long elements; /* number of total elements (shouldbe total of above) (calculated, not reported by device) */

recElement *firstAxis;
recElement *firstButton;
recElement *firstHat;

int removed;
int uncentered;

struct joystick_hwdata *pNext; /* next device */
};
typedef struct joystick_hwdata recDevice;


#endif /* SDL_JOYSTICK_IOKIT_H */

0 comments on commit aaa01d1

Please sign in to comment.