Mercurial > sdl-ios-xcode
diff src/joystick/os2/joyos2.h @ 1190:173c063d4f55
OS/2 port!
This was mostly, if not entirely, written by "Doodle" and "Caetano":
doodle@scenergy.dfmk.hu
daniel@caetano.eng.br
--ryan.
author | Ryan C. Gordon <icculus@icculus.org> |
---|---|
date | Wed, 23 Nov 2005 07:29:56 +0000 |
parents | |
children | 782fd950bd46 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/joystick/os2/joyos2.h Wed Nov 23 07:29:56 2005 +0000 @@ -0,0 +1,177 @@ +/*****************************************************************************/ +/* */ +/* COPYRIGHT Copyright (C) 1995 IBM Corporation */ +/* */ +/* The following IBM OS/2 source code is provided to you solely for */ +/* the purpose of assisting you in your development of OS/2 device */ +/* drivers. You may use this code in accordance with the IBM License */ +/* Agreement provided in the IBM Device Driver Source Kit for OS/2. This */ +/* Copyright statement may not be removed. */ +/* */ +/*****************************************************************************/ +#ifndef JOYOS2_H +#define JOYOS2_H + +/****** GAMEPORT.SYS joystick definitions, start *****************************/ +#define GAME_VERSION 0x20 /* 2.0 First IBM version */ +#define GAMEPDDNAME "GAME$ " +#define IOCTL_CAT_USER 0x80 +#define GAME_PORT_GET 0x20 /* read GAMEPORT.SYS values */ +#define GAME_PORT_RESET 0x60 /* reset joystick mask with given value */ + +#pragma pack(1) /* pack structure size is 1 byte */ +typedef struct { /* GAMEPORT.SYS structure */ + USHORT usJs_AxCnt; /* Joystick_A X position */ + USHORT usJs_AyCnt; /* Joystick_A Y position */ + USHORT usJs_BxCnt; /* Joystick_B X position */ + USHORT usJs_ByCnt; /* Joystick_B Y position */ + USHORT usJs_ButtonA1Cnt; /* button A1 press count */ + USHORT usJs_ButtonA2Cnt; /* button A2 press count */ + USHORT usJs_ButtonB1Cnt; /* button B1 press count */ + USHORT usJs_ButtonB2Cnt; /* button B2 press count */ + UCHAR ucJs_JoyStickMask; /* mask of connected joystick pots */ + UCHAR ucJs_ButtonStatus; /* bits of switches down */ + ULONG ulJs_Ticks; /* joystick clock ticks */ +} GAME_PORT_STRUCT; +#pragma pack() /*reset to normal pack size */ +/****** GAMEPORT.SYS joystick definitions, end *******************************/ + + +/****************************************************************************/ +#define GAME_GET_VERSION 0x01 +#define GAME_GET_PARMS 0x02 +#define GAME_SET_PARMS 0x03 +#define GAME_GET_CALIB 0x04 +#define GAME_SET_CALIB 0x05 +#define GAME_GET_DIGSET 0x06 +#define GAME_SET_DIGSET 0x07 +#define GAME_GET_STATUS 0x10 +#define GAME_GET_STATUS_BUTWAIT 0x11 +#define GAME_GET_STATUS_SAMPWAIT 0x12 +/****************************************************************************/ + +/****************************************************************************/ +// bit masks for each axis +#define JOY_AX_BIT 0x01 +#define JOY_AY_BIT 0x02 +#define JOY_A_BITS (JOY_AX_BIT|JOY_AY_BIT) +#define JOY_BX_BIT 0x04 +#define JOY_BY_BIT 0x08 +#define JOY_B_BITS (JOY_BX_BIT|JOY_BY_BIT) +#define JOY_ALLPOS_BITS (JOY_A_BITS|JOY_B_BITS) + +// bit masks for each button +#define JOY_BUT1_BIT 0x10 +#define JOY_BUT2_BIT 0x20 +#define JOY_BUT3_BIT 0x40 +#define JOY_BUT4_BIT 0x80 +#define JOY_ALL_BUTS (JOY_BUT1_BIT|JOY_BUT2_BIT|JOY_BUT3_BIT|JOY_BUT4_BIT) +/****************************************************************************/ + +/****************************************************************************/ +// 1-D position struct used for each axis +typedef SHORT GAME_POS; /* some data formats require signed values */ + +// simple 2-D position for each joystick +typedef struct +{ + GAME_POS x; + GAME_POS y; +} +GAME_2DPOS_STRUCT; + +// struct defining the instantaneous state of both sticks and all buttons +typedef struct +{ + GAME_2DPOS_STRUCT A; + GAME_2DPOS_STRUCT B; + USHORT butMask; +} +GAME_DATA_STRUCT; + +// struct to be used for calibration and digital response on each axis +typedef struct +{ + GAME_POS lower; + GAME_POS centre; + GAME_POS upper; +} +GAME_3POS_STRUCT; +/****************************************************************************/ + +/****************************************************************************/ +// status struct returned to OS/2 applications: +// current data for all sticks as well as button counts since last read +typedef struct +{ + GAME_DATA_STRUCT curdata; + USHORT b1cnt; + USHORT b2cnt; + USHORT b3cnt; + USHORT b4cnt; +} +GAME_STATUS_STRUCT; +/****************************************************************************/ + +/****************************************************************************/ +/* in use bitmasks originating in 0.2b */ +#define GAME_USE_BOTH_OLDMASK 0x01 /* for backward compat with bool */ +#define GAME_USE_X_NEWMASK 0x02 +#define GAME_USE_Y_NEWMASK 0x04 +#define GAME_USE_X_EITHERMASK (GAME_USE_X_NEWMASK|GAME_USE_BOTH_OLDMASK) +#define GAME_USE_Y_EITHERMASK (GAME_USE_Y_NEWMASK|GAME_USE_BOTH_OLDMASK) +#define GAME_USE_BOTH_NEWMASK (GAME_USE_X_NEWMASK|GAME_USE_Y_NEWMASK) + +/* only timed sampling implemented in version 1.0 */ +#define GAME_MODE_TIMED 1 /* timed sampling */ +#define GAME_MODE_REQUEST 2 /* request driven sampling */ + +/* only raw implemented in version 1.0 */ +#define GAME_DATA_FORMAT_RAW 1 /* [l,c,r] */ +#define GAME_DATA_FORMAT_SIGNED 2 /* [-l,0,+r] */ +#define GAME_DATA_FORMAT_BINARY 3 /* {-1,0,+1} */ +#define GAME_DATA_FORMAT_SCALED 4 /* [-10,+10] */ + +// parameters defining the operation of the driver +typedef struct +{ + USHORT useA; /* new bitmasks: see above */ + USHORT useB; + USHORT mode; /* see consts above */ + USHORT format; /* see consts above */ + USHORT sampDiv; /* samp freq = 32 / n */ + USHORT scale; /* scaling factor */ + USHORT res1; /* must be 0 */ + USHORT res2; /* must be 0 */ +} +GAME_PARM_STRUCT; +/****************************************************************************/ + +/****************************************************************************/ +// calibration values for each axis: +// - upper limit on value to be considered in lower range +// - centre value +// - lower limit on value to be considered in upper range +typedef struct +{ + GAME_3POS_STRUCT Ax; + GAME_3POS_STRUCT Ay; + GAME_3POS_STRUCT Bx; + GAME_3POS_STRUCT By; +} +GAME_CALIB_STRUCT; +/****************************************************************************/ + +/****************************************************************************/ +// struct defining the digital response values for all axes +typedef struct +{ + GAME_3POS_STRUCT Ax; + GAME_3POS_STRUCT Ay; + GAME_3POS_STRUCT Bx; + GAME_3POS_STRUCT By; +} +GAME_DIGSET_STRUCT; +/****************************************************************************/ + +#endif