src/joystick/darwin/SDL_sysjoystick_c.h
author Edgar Simo <bobbens@gmail.com>
Sun, 10 Aug 2008 19:45:38 +0000
branchgsoc2008_force_feedback
changeset 2637 2f826c229d77
parent 2632 9e7f58b1b255
permissions -rw-r--r--
First draft of darwin haptic<->joystick stuff.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2632
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
     1
/*
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
     2
	SDL - Simple DirectMedia Layer
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
     3
    Copyright (C) 1997-2004 Sam Lantinga
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
     4
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
     5
	This library is free software; you can redistribute it and/or
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
     6
	modify it under the terms of the GNU Library General Public
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
     7
	License as published by the Free Software Foundation; either
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
     8
	version 2 of the License, or (at your option) any later version.
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
     9
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    10
	This library is distributed in the hope that it will be useful,
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    11
	but WITHOUT ANY WARRANTY; without even the implied warranty of
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    12
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    13
	Library General Public License for more details.
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    14
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    15
	You should have received a copy of the GNU Library General Public
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    16
	License along with this library; if not, write to the Free
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    17
	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    18
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    19
	Sam Lantinga
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    20
	slouken@libsdl.org
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    21
*/
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    22
#include "SDL_config.h"
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    23
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    24
#ifndef SDL_JOYSTICK_IOKIT_H
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    25
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    26
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    27
#if MAC_OS_X_VERSION_MIN_REQUIRED == 1030
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    28
#include "10.3.9-FIX/IOHIDLib.h"
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    29
#else
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    30
#include <IOKit/hid/IOHIDLib.h>
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    31
#endif
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    32
#include <IOKit/hid/IOHIDKeys.h>
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    33
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    34
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    35
struct recElement
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    36
{
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    37
    IOHIDElementCookie cookie;  /* unique value which identifies element, will NOT change */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    38
    long min;                   /* reported min value possible */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    39
    long max;                   /* reported max value possible */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    40
#if 0
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    41
    /* TODO: maybe should handle the following stuff somehow? */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    42
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    43
    long scaledMin;             /* reported scaled min value possible */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    44
    long scaledMax;             /* reported scaled max value possible */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    45
    long size;                  /* size in bits of data return from element */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    46
    Boolean relative;           /* are reports relative to last report (deltas) */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    47
    Boolean wrapping;           /* does element wrap around (one value higher than max is min) */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    48
    Boolean nonLinear;          /* are the values reported non-linear relative to element movement */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    49
    Boolean preferredState;     /* does element have a preferred state (such as a button) */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    50
    Boolean nullState;          /* does element have null state */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    51
#endif                          /* 0 */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    52
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    53
    /* runtime variables used for auto-calibration */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    54
    long minReport;             /* min returned value */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    55
    long maxReport;             /* max returned value */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    56
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    57
    struct recElement *pNext;   /* next element in list */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    58
};
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    59
typedef struct recElement recElement;
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    60
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    61
struct joystick_hwdata
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    62
{
2637
2f826c229d77 First draft of darwin haptic<->joystick stuff.
Edgar Simo <bobbens@gmail.com>
parents: 2632
diff changeset
    63
    io_service_t ffservice;             /* Interface for force feedback, 0 = no ff */
2632
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    64
    IOHIDDeviceInterface **interface;   /* interface to device, NULL = no interface */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    65
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    66
    char product[256];          /* name of product */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    67
    long usage;                 /* usage page from IOUSBHID Parser.h which defines general usage */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    68
    long usagePage;             /* usage within above page from IOUSBHID Parser.h which defines specific usage */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    69
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    70
    long axes;                  /* number of axis (calculated, not reported by device) */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    71
    long buttons;               /* number of buttons (calculated, not reported by device) */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    72
    long hats;                  /* number of hat switches (calculated, not reported by device) */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    73
    long elements;              /* number of total elements (shouldbe total of above) (calculated, not reported by device) */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    74
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    75
    recElement *firstAxis;
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    76
    recElement *firstButton;
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    77
    recElement *firstHat;
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    78
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    79
    int removed;
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    80
    int uncentered;
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    81
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    82
    struct joystick_hwdata *pNext;      /* next device */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    83
};
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    84
typedef struct joystick_hwdata recDevice;
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    85
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    86
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    87
#endif /* SDL_JOYSTICK_IOKIT_H */
9e7f58b1b255 Exposed the darwin joystick hardware data to the haptic subsystem.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    88