180 lines
6.2 KiB
C
180 lines
6.2 KiB
C
/******************************************************************************
|
|
Joystick.h : Definition of structures and Macros
|
|
Author : JENTEY F.
|
|
Last update : 06/03/97
|
|
20/11/97 DInput 5
|
|
******************************************************************************/
|
|
|
|
#ifndef _INO_MAIN_H
|
|
#define _INO_MAIN_H
|
|
|
|
#include "cpa_std.h"
|
|
#include "DInput.h"
|
|
|
|
/**************************************/
|
|
#ifndef CPA_EXPORT
|
|
#if defined(CPA_WANTS_IMPORT)
|
|
#define CPA_EXPORT __declspec(dllimport)
|
|
#elif defined(CPA_WANTS_EXPORT)
|
|
#define CPA_EXPORT __declspec(dllexport)
|
|
#else
|
|
#define CPA_EXPORT
|
|
#endif
|
|
#endif
|
|
/**************************************/
|
|
|
|
#if !defined(U64)
|
|
#define INO_C_wNbMaxDevice 20
|
|
#define INO_C_wNbMaxAxis 6
|
|
#else /* U64, 4 joystick with only 2 axes */
|
|
#define INO_C_wNbMaxDevice 4
|
|
#define INO_C_wNbMaxAxis 2
|
|
#endif
|
|
|
|
|
|
/**************************************************************************
|
|
Device type.
|
|
***************************************************************************/
|
|
#define INO_C_uwUnknown 0
|
|
#define INO_C_uwMouse (1 << 2)
|
|
#define INO_C_uwKeyboard (1 << 3)
|
|
#define INO_C_uwJoystick (1 << 4)
|
|
#define INO_C_uwAnyType 0xFF
|
|
|
|
/**************************************************************************
|
|
Device status.
|
|
***************************************************************************/
|
|
#define INO_C_ucConnected 1
|
|
#define INO_C_ucAcquired (1 << 1)
|
|
#define INO_C_ucAccessError (1 << 2)
|
|
#define INO_C_ucGLDLink (1 << 3)
|
|
#define INO_C_ucActivated (1 << 4)
|
|
|
|
/**************************************************************************
|
|
Read mode for INO_fn_wReadAllDevices (short wMode).
|
|
***************************************************************************/
|
|
#define INO_C_wAllDevices 1
|
|
#define INO_C_wConnectedDevices 2
|
|
|
|
/**************************************************************************
|
|
Key or button state.
|
|
***************************************************************************/
|
|
#define INO_C_ucButtonDown 0x80
|
|
#define INO_C_ucKeyDown INO_C_ucButtonDown
|
|
#define INO_C_ucKeyToggled 0x01
|
|
|
|
/**************************************************************************
|
|
INO device common capabilities
|
|
***************************************************************************/
|
|
typedef struct stDevCaps
|
|
{
|
|
unsigned char m_ucNbButtons;
|
|
unsigned long m_ulCapsFlags;
|
|
|
|
} INO_tdstDevCaps;
|
|
|
|
/**************************************************************************
|
|
INO device state
|
|
***************************************************************************/
|
|
typedef struct stDevState
|
|
{
|
|
unsigned char m_ucStatus; /* Connected, acquired, link with GLD */
|
|
} INO_tdstDevState;
|
|
|
|
/**************************************************************************
|
|
INO axis capabilities
|
|
***************************************************************************/
|
|
typedef struct stAxisCaps
|
|
{
|
|
long m_lCenter;
|
|
long m_lRange;
|
|
long m_lThreshold;
|
|
|
|
} INO_tdstAxisCaps;
|
|
|
|
/**************************************************************************
|
|
INO device structure
|
|
***************************************************************************/
|
|
#ifdef __cplusplus
|
|
struct stDevice;
|
|
typedef struct stDevice INO_tdstDevice, *INO_tdhDevice;
|
|
#endif /* __cplusplus*/
|
|
typedef short (*INO_fn_wMethod)(INO_tdstDevice);
|
|
|
|
#ifndef __cplusplus
|
|
typedef
|
|
#endif
|
|
struct stDevice
|
|
{
|
|
unsigned short m_uwType;
|
|
INO_tdstDevCaps *m_p_stCaps; /* Device type specific caps */
|
|
INO_tdstDevState *m_p_stState; /* Device state, to cast acording to the device type */
|
|
unsigned long m_ulLastTimeCount;
|
|
/* Historic */
|
|
short m_wHistoricSize;
|
|
short m_wHistoricHead;
|
|
short m_wRecordNumber;
|
|
void *m_pvHistoric;
|
|
/* Device access methods */
|
|
INO_fn_wMethod m_pfnRead;
|
|
|
|
}
|
|
#ifdef __cplusplus
|
|
;
|
|
#else
|
|
INO_tdstDevice, *INO_tdhDevice;
|
|
#endif /* __cplusplus*/
|
|
|
|
|
|
/* Device capabilities */
|
|
#define INO_M_uwType(hDev) ((hDev)->m_uwType & 0xFF)
|
|
#define INO_M_uwSubType(hDev) ((hDev)->m_uwType)
|
|
#define INO_M_ucNbButtons(hDev) ((hDev)->m_p_stCaps->m_ucNbButtons)
|
|
#define INO_M_lNbKeys(hDev) INO_M_lNbButtons(hDev)
|
|
#define INO_M_ulAxes(hDev) ((hDev)->m_p_stCaps->m_ulCapsFlags & C_ulAxesMask)
|
|
|
|
/* Device state */
|
|
#define INO_M_wReadDevice(hDev) ((hDev)->m_pfnRead(hDev))
|
|
#define INO_M_bIsConnected(hDev) (((hDev)->m_p_stState->m_ucStatus & INO_C_ucConnected) != 0)
|
|
#define INO_M_bIsFocused(hDev) (((hDev)->m_p_stState->m_ucStatus & INO_C_ucAcquired) != 0)
|
|
#define INO_M_bDeviceReady(hDev) (((hDev)->m_p_stState->m_ucStatus & (INO_C_ucConnected | INO_C_ucAcquired)) \
|
|
== (INO_C_ucConnected | INO_C_ucAcquired) )
|
|
|
|
|
|
/******************************************************************************
|
|
All functions return 1 if Ok else 0
|
|
******************************************************************************/
|
|
|
|
#if defined(__cplusplus)
|
|
#define INO_EXTERN
|
|
extern "C"
|
|
{
|
|
#else
|
|
#define INO_EXTERN extern
|
|
#endif
|
|
|
|
INO_EXTERN CPA_EXPORT short INO_fn_wInit(HINSTANCE hInstance, HWND hWindow);
|
|
INO_EXTERN CPA_EXPORT void INO_fn_vRelease();
|
|
INO_EXTERN CPA_EXPORT INO_tdhDevice INO_fn_hCreateDevice(unsigned short uwType, short wHistoricSize);
|
|
INO_EXTERN CPA_EXPORT short INO_fn_wReleaseDevice(INO_tdhDevice hDevice);
|
|
INO_EXTERN CPA_EXPORT void INO_fn_vResetDevice(INO_tdhDevice hDevice);
|
|
INO_EXTERN CPA_EXPORT short INO_fn_wGetNbDevices(unsigned short uwType);
|
|
|
|
INO_EXTERN CPA_EXPORT short INO_fn_wIsHandleValid(INO_tdhDevice hDev);
|
|
INO_EXTERN CPA_EXPORT short INO_fn_wInvalidateHandle(INO_tdhDevice *hDev);
|
|
|
|
INO_EXTERN CPA_EXPORT short INO_fn_wIsConnected(INO_tdhDevice hDev);
|
|
|
|
INO_EXTERN CPA_EXPORT short INO_fn_wReadAllDevices(unsigned short uwType, short wMode);
|
|
|
|
INO_EXTERN CPA_EXPORT short INO_fn_wActivateDevice(INO_tdhDevice hDev);
|
|
INO_EXTERN CPA_EXPORT short INO_fn_wDeactivateDevice(INO_tdhDevice hDev);
|
|
INO_EXTERN CPA_EXPORT void INO_fn_vUpdateLastError(unsigned short uwErrorCode);
|
|
#if defined(__cplusplus)
|
|
#undef INO_EXTERN
|
|
}
|
|
#endif
|
|
|
|
|
|
#endif /* _INO_MAIN_H */
|