00001
00002
00003
00004 #ifndef WIIREMOTE_H
00005 #define WIIREMOTE_H
00006
00016 #ifdef __cplusplus
00017 extern "C" {
00018 #endif
00019
00020 #include <stdlib.h>
00021
00022
00023 #define WRMT_MAX_DEVICES 32
00024
00025 #define WRMT_MASK_BUTTON_TWO 0x0001
00026 #define WRMT_MASK_BUTTON_ONE 0x0002
00027 #define WRMT_MASK_BUTTON_B 0x0004
00028 #define WRMT_MASK_BUTTON_A 0x0008
00029 #define WRMT_MASK_BUTTON_MINUS 0x0010
00030 #define WRMT_MASK_BUTTON_HOME 0x0080
00031 #define WRMT_MASK_BUTTON_LEFT 0x0100
00032 #define WRMT_MASK_BUTTON_RIGHT 0x0200
00033 #define WRMT_MASK_BUTTON_DOWN 0x0400
00034 #define WRMT_MASK_BUTTON_UP 0x0800
00035 #define WRMT_MASK_BUTTON_PLUS 0x1000
00036 #define WRMT_MASK_BUTTONS (\
00037 WRMT_MASK_BUTTON_TWO|WRMT_MASK_BUTTON_ONE| \
00038 WRMT_MASK_BUTTON_B|WRMT_MASK_BUTTON_A| \
00039 WRMT_MASK_BUTTON_MINUS|WRMT_MASK_BUTTON_HOME| \
00040 WRMT_MASK_BUTTON_LEFT|WRMT_MASK_BUTTON_RIGHT| \
00041 WRMT_MASK_BUTTON_DOWN|WRMT_MASK_BUTTON_UP| \
00042 WRMT_MASK_BUTTON_PLUS)
00043
00044 #define WRMT_MASK_LED_1 0x0001
00045 #define WRMT_MASK_LED_2 0x0002
00046 #define WRMT_MASK_LED_3 0x0004
00047 #define WRMT_MASK_LED_4 0x0008
00048 #define WRMT_MASK_LEDS (\
00049 WRMT_MASK_LED_1|WRMT_MASK_LED_2|\
00050 WRMT_MASK_LED_3|WRMT_MASK_LED_4)
00051
00061 typedef enum
00062 {
00063 WRMT_FUNCTION_CONTINUOUS = 0,
00064 WRMT_FUNCTION_MOTION,
00065 WRMT_FUNCTION_IR,
00066 WRMT_FUNCTION_SPEAKER,
00067 WRMT_NUMBER_OF_FUNCTIONS,
00068 } WRMT_FunctionType;
00069
00075 typedef enum
00076 {
00077
00078 WRMT_DATA_FORCE_FEEDBACK = 0,
00079 WRMT_DATA_LEDS,
00080 WRMT_DATA_SPEAKER_FORMAT,
00081 WRMT_DATA_SPEAKER_VOLUME,
00082 WRMT_DATA_SPEAKER_SAMPLE_RATE,
00083
00084 WRMT_DATA_BUTTONS,
00085 WRMT_DATA_MOTION_X,
00086 WRMT_DATA_MOTION_Y,
00087 WRMT_DATA_MOTION_Z,
00088 WRMT_DATA_IR1_FOUND,
00089 WRMT_DATA_IR1_SIZE,
00090 WRMT_DATA_IR1_X,
00091 WRMT_DATA_IR1_Y,
00092 WRMT_DATA_IR2_FOUND,
00093 WRMT_DATA_IR2_SIZE,
00094 WRMT_DATA_IR2_X,
00095 WRMT_DATA_IR2_Y,
00096 WRMT_DATA_IR_FOUND,
00097 WRMT_DATA_IR_SIZE,
00098 WRMT_DATA_IR_X,
00099 WRMT_DATA_IR_Y,
00100 WRMT_DATA_BATTERY_LEVEL,
00101 WRMT_NUMBER_OF_DATA_TYPE,
00102 } WRMT_DataType;
00103
00104 typedef enum
00105 {
00106 WRMT_IO_TIMEOUT = -2,
00107 WRMT_IO_ERROR = -1,
00108 WRMT_IO_SUCCESS = 0,
00109 } WRMT_IOReturn;
00110
00111 struct wrmt_wiiremote;
00112 typedef struct wrmt_wiiremote WRMT_WiiRemote;
00113
00118
00119 #ifndef WRMT_DECLSPEC
00120 # if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
00121 # ifdef LIBWIIREMOTE_EXPORTS
00122 # define WRMT_DECLSPEC __declspec(dllexport)
00123 # else
00124 # define WRMT_DECLSPEC __declspec(dllimport)
00125 # endif
00126 # endif
00127 #endif
00128
00129
00130 #ifndef WRMT_DECLSPEC
00131 # define WRMT_DECLSPEC
00132 #endif
00133
00134
00138 extern
00139 WRMT_DECLSPEC
00140 void
00141 WRMT_SetError(const char *message);
00142
00146 extern
00147 WRMT_DECLSPEC
00148 char *
00149 WRMT_GetError();
00150
00156 extern
00157 WRMT_DECLSPEC
00158 int
00159 WRMT_Init();
00160
00164 extern
00165 WRMT_DECLSPEC
00166 void
00167 WRMT_Quit();
00168
00172 extern
00173 WRMT_DECLSPEC
00174 void
00175 WRMT_Sleep(int ms);
00176
00180 extern
00181 WRMT_DECLSPEC
00182 void
00183 WRMT_Update();
00184
00190 extern
00191 WRMT_DECLSPEC
00192 int
00193 WRMT_Poll();
00194
00198 extern
00199 WRMT_DECLSPEC
00200 int
00201 WRMT_GetNumWiiRemote();
00202
00206 extern
00207 WRMT_DECLSPEC
00208 WRMT_WiiRemote *
00209 WRMT_GetWiiRemoteAt(int device_index);
00210
00214 extern
00215 WRMT_DECLSPEC
00216 WRMT_IOReturn
00217 WRMT_WiiRemote_Open(WRMT_WiiRemote *self);
00218
00222 extern
00223 WRMT_DECLSPEC
00224 int
00225 WRMT_WiiRemote_IsOpened(WRMT_WiiRemote *self);
00226
00230 extern
00231 WRMT_DECLSPEC
00232 void
00233 WRMT_WiiRemote_Close(WRMT_WiiRemote *self);
00234
00238 extern
00239 WRMT_DECLSPEC
00240 int
00241 WRMT_WiiRemote_IsEnabled(WRMT_WiiRemote *self, WRMT_FunctionType type);
00242
00246 extern
00247 WRMT_DECLSPEC
00248 void
00249 WRMT_WiiRemote_SetEnabled(WRMT_WiiRemote *self, WRMT_FunctionType type, int value);
00250
00254 extern
00255 WRMT_DECLSPEC
00256 int
00257 WRMT_WiiRemote_GetState(WRMT_WiiRemote *self, WRMT_DataType type);
00258
00262 extern
00263 WRMT_DECLSPEC
00264 void
00265 WRMT_WiiRemote_SetState(WRMT_WiiRemote *self, WRMT_DataType type, int value);
00266
00270 extern
00271 WRMT_DECLSPEC
00272 int
00273 WRMT_WiiRemote_WriteDataToMemory(WRMT_WiiRemote *self,
00274 int address, const unsigned char *data, size_t data_size);
00275
00276
00277 #ifdef __cplusplus
00278 }
00279 #endif
00280
00281 #endif
00282