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 #define WRMT_MAX_DEVICES 32
00023
00024 #define WRMT_MASK_BUTTON_TWO 0x0001
00025 #define WRMT_MASK_BUTTON_ONE 0x0002
00026 #define WRMT_MASK_BUTTON_B 0x0004
00027 #define WRMT_MASK_BUTTON_A 0x0008
00028 #define WRMT_MASK_BUTTON_MINUS 0x0010
00029 #define WRMT_MASK_BUTTON_HOME 0x0080
00030 #define WRMT_MASK_BUTTON_LEFT 0x0100
00031 #define WRMT_MASK_BUTTON_RIGHT 0x0200
00032 #define WRMT_MASK_BUTTON_DOWN 0x0400
00033 #define WRMT_MASK_BUTTON_UP 0x0800
00034 #define WRMT_MASK_BUTTON_PLUS 0x1000
00035
00036 #define WRMT_MASK_LED_1 0x0001
00037 #define WRMT_MASK_LED_2 0x0002
00038 #define WRMT_MASK_LED_3 0x0004
00039 #define WRMT_MASK_LED_4 0x0008
00040
00050 typedef enum
00051 {
00052 WRMT_FUNCTION_CONTINUOUS = 0,
00053 WRMT_FUNCTION_MOTION,
00054 WRMT_FUNCTION_IR,
00055 WRMT_FUNCTION_SPEAKER,
00056 WRMT_NUMBER_OF_FUNCTIONS,
00057 } WRMT_FunctionType;
00058
00064 typedef enum
00065 {
00066
00067 WRMT_DATA_FORCE_FEEDBACK = 0,
00068 WRMT_DATA_LEDS,
00069 WRMT_DATA_SPEAKER_FORMAT,
00070 WRMT_DATA_SPEAKER_VOLUME,
00071 WRMT_DATA_SPEAKER_SAMPLE_RATE,
00072
00073 WRMT_DATA_BUTTONS,
00074 WRMT_DATA_MOTION_X,
00075 WRMT_DATA_MOTION_Y,
00076 WRMT_DATA_MOTION_Z,
00077 WRMT_DATA_IR1_FOUND,
00078 WRMT_DATA_IR1_SIZE,
00079 WRMT_DATA_IR1_X,
00080 WRMT_DATA_IR1_Y,
00081 WRMT_DATA_IR2_FOUND,
00082 WRMT_DATA_IR2_SIZE,
00083 WRMT_DATA_IR2_X,
00084 WRMT_DATA_IR2_Y,
00085 WRMT_DATA_IR_FOUND,
00086 WRMT_DATA_IR_SIZE,
00087 WRMT_DATA_IR_X,
00088 WRMT_DATA_IR_Y,
00089 WRMT_NUMBER_OF_DATA_TYPE,
00090 } WRMT_DataType;
00091
00092 typedef enum
00093 {
00094 WRMT_IO_ERROR = -1,
00095 WRMT_IO_SUCCESS = 0,
00096 WRMT_IO_TIMEOUT = 1,
00097 } WRMT_IOReturn;
00098
00099 struct wrmt_wiiremote;
00100 typedef struct wrmt_wiiremote WRMT_WiiRemote;
00101
00109 extern
00110 void
00111 WRMT_SetError(const char *message);
00112
00116 extern
00117 char *
00118 WRMT_GetError();
00119
00125 extern
00126 int
00127 WRMT_Init();
00128
00132 extern
00133 void
00134 WRMT_Quit();
00135
00139 extern
00140 void
00141 WRMT_Sleep(int ms);
00142
00146 extern
00147 void
00148 WRMT_Update();
00149
00154 extern
00155 WRMT_IOReturn
00156 WRMT_Poll(int *updated_device_index_pointer);
00157
00161 extern
00162 int
00163 WRMT_GetNumWiiRemote();
00164
00168 extern
00169 WRMT_WiiRemote *
00170 WRMT_GetWiiRemoteAt(int device_index);
00171
00175 extern
00176 WRMT_IOReturn
00177 WRMT_WiiRemote_Open(WRMT_WiiRemote *self);
00178
00182 extern
00183 int
00184 WRMT_WiiRemote_IsOpened(WRMT_WiiRemote *self);
00185
00189 extern
00190 void
00191 WRMT_WiiRemote_Close(WRMT_WiiRemote *self);
00192
00196 extern
00197 int
00198 WRMT_WiiRemote_IsEnabled(WRMT_WiiRemote *self, WRMT_FunctionType type);
00199
00203 extern
00204 void
00205 WRMT_WiiRemote_SetEnabled(WRMT_WiiRemote *self, WRMT_FunctionType type, int value);
00206
00210 extern
00211 int
00212 WRMT_WiiRemote_GetState(WRMT_WiiRemote *self, WRMT_DataType type);
00213
00217 extern
00218 void
00219 WRMT_WiiRemote_SetState(WRMT_WiiRemote *self, WRMT_DataType type, int value);
00220
00224 extern
00225 int
00226 WRMT_WiiRemote_WriteDataToMemory(WRMT_WiiRemote *self,
00227 int address, const unsigned char *data, size_t data_size);
00228
00229
00230 #ifdef __cplusplus
00231 }
00232 #endif
00233
00234 #endif
00235