47 #include <arpa/inet.h> 48 #include <bluetooth/bluetooth.h> 51 #include "definitions.h" 54 #define WIIUSE_VERSION "0.12" 63 #define WM_OUTPUT_CHANNEL 0x11 64 #define WM_INPUT_CHANNEL 0x13 66 #define WM_SET_REPORT 0x50 69 #define WM_CMD_LED 0x11 70 #define WM_CMD_REPORT_TYPE 0x12 71 #define WM_CMD_RUMBLE 0x13 72 #define WM_CMD_IR 0x13 73 #define WM_CMD_CTRL_STATUS 0x15 74 #define WM_CMD_WRITE_DATA 0x16 75 #define WM_CMD_READ_DATA 0x17 76 #define WM_CMD_IR_2 0x1A 79 #define WM_RPT_CTRL_STATUS 0x20 80 #define WM_RPT_READ 0x21 81 #define WM_RPT_WRITE 0x22 82 #define WM_RPT_BTN 0x30 83 #define WM_RPT_BTN_ACC 0x31 84 #define WM_RPT_BTN_ACC_IR 0x33 85 #define WM_RPT_BTN_EXP 0x34 86 #define WM_RPT_BTN_ACC_EXP 0x35 87 #define WM_RPT_BTN_IR_EXP 0x36 88 #define WM_RPT_BTN_ACC_IR_EXP 0x37 90 #define WM_BT_INPUT 0x01 91 #define WM_BT_OUTPUT 0x02 94 #define WM_DEV_CLASS_0 0x04 95 #define WM_DEV_CLASS_1 0x25 96 #define WM_DEV_CLASS_2 0x00 97 #define WM_VENDOR_ID 0x057E 98 #define WM_PRODUCT_ID 0x0306 101 #define WM_MAX_BATTERY_CODE 0xC8 104 #define WM_MEM_OFFSET_CALIBRATION 0x16 105 #define WM_EXP_MEM_BASE 0x04A40000 106 #define WM_EXP_MEM_ENABLE 0x04A40040 107 #define WM_EXP_MEM_CALIBR 0x04A40020 109 #define WM_REG_IR 0x04B00030 110 #define WM_REG_IR_BLOCK1 0x04B00000 111 #define WM_REG_IR_BLOCK2 0x04B0001A 112 #define WM_REG_IR_MODENUM 0x04B00033 115 #define WM_IR_BLOCK1_LEVEL1 "\x02\x00\x00\x71\x01\x00\x64\x00\xfe" 116 #define WM_IR_BLOCK2_LEVEL1 "\xfd\x05" 117 #define WM_IR_BLOCK1_LEVEL2 "\x02\x00\x00\x71\x01\x00\x96\x00\xb4" 118 #define WM_IR_BLOCK2_LEVEL2 "\xb3\x04" 119 #define WM_IR_BLOCK1_LEVEL3 "\x02\x00\x00\x71\x01\x00\xaa\x00\x64" 120 #define WM_IR_BLOCK2_LEVEL3 "\x63\x03" 121 #define WM_IR_BLOCK1_LEVEL4 "\x02\x00\x00\x71\x01\x00\xc8\x00\x36" 122 #define WM_IR_BLOCK2_LEVEL4 "\x35\x03" 123 #define WM_IR_BLOCK1_LEVEL5 "\x07\x00\x00\x71\x01\x00\x72\x00\x20" 124 #define WM_IR_BLOCK2_LEVEL5 "\x1f\x03" 126 #define WM_IR_TYPE_BASIC 0x01 127 #define WM_IR_TYPE_EXTENDED 0x03 131 #define WM_CTRL_STATUS_BYTE1_ATTACHMENT 0x02 132 #define WM_CTRL_STATUS_BYTE1_SPEAKER_ENABLED 0x04 133 #define WM_CTRL_STATUS_BYTE1_IR_ENABLED 0x08 134 #define WM_CTRL_STATUS_BYTE1_LED_1 0x10 135 #define WM_CTRL_STATUS_BYTE1_LED_2 0x20 136 #define WM_CTRL_STATUS_BYTE1_LED_3 0x40 137 #define WM_CTRL_STATUS_BYTE1_LED_4 0x80 140 #define WM_ASPECT_16_9_X 660 141 #define WM_ASPECT_16_9_Y 370 142 #define WM_ASPECT_4_3_X 560 143 #define WM_ASPECT_4_3_Y 420 151 #define EXP_ID_CODE_NUNCHUK 0x9A1EFEFE 152 #define EXP_ID_CODE_CLASSIC_CONTROLLER 0x9A1EFDFD 153 #define EXP_ID_CODE_GUITAR 0x9A1EFDFB 155 #define EXP_HANDSHAKE_LEN 224 164 #define WIIMOTE_STATE_DEV_FOUND 0x0001 165 #define WIIMOTE_STATE_HANDSHAKE 0x0002 166 #define WIIMOTE_STATE_HANDSHAKE_COMPLETE 0x0004 167 #define WIIMOTE_STATE_CONNECTED 0x0008 168 #define WIIMOTE_STATE_RUMBLE 0x0010 169 #define WIIMOTE_STATE_ACC 0x0020 170 #define WIIMOTE_STATE_EXP 0x0040 171 #define WIIMOTE_STATE_IR 0x0080 172 #define WIIMOTE_STATE_SPEAKER 0x0100 173 #define WIIMOTE_STATE_IR_SENS_LVL1 0x0200 174 #define WIIMOTE_STATE_IR_SENS_LVL2 0x0400 175 #define WIIMOTE_STATE_IR_SENS_LVL3 0x0800 176 #define WIIMOTE_STATE_IR_SENS_LVL4 0x1000 177 #define WIIMOTE_STATE_IR_SENS_LVL5 0x2000 179 #define WIIMOTE_INIT_STATES (WIIMOTE_STATE_IR_SENS_LVL3) 182 #define WIIMOTE_IS_SET(wm, s) ((wm->state & (s)) == (s)) 183 #define WIIMOTE_ENABLE_STATE(wm, s) (wm->state |= (s)) 184 #define WIIMOTE_DISABLE_STATE(wm, s) (wm->state &= ~(s)) 185 #define WIIMOTE_TOGGLE_STATE(wm, s) ((wm->state & (s)) ? WIIMOTE_DISABLE_STATE(wm, s) : WIIMOTE_ENABLE_STATE(wm, s)) 187 #define WIIMOTE_IS_FLAG_SET(wm, s) ((wm->flags & (s)) == (s)) 188 #define WIIMOTE_ENABLE_FLAG(wm, s) (wm->flags |= (s)) 189 #define WIIMOTE_DISABLE_FLAG(wm, s) (wm->flags &= ~(s)) 190 #define WIIMOTE_TOGGLE_FLAG(wm, s) ((wm->flags & (s)) ? WIIMOTE_DISABLE_FLAG(wm, s) : WIIMOTE_ENABLE_FLAG(wm, s)) 192 #define NUNCHUK_IS_FLAG_SET(wm, s) ((*(wm->flags) & (s)) == (s)) 195 #define WIIMOTE_ID(wm) (wm->unid) 196 #define WIIMOTE_IS_CONNECTED(wm) (WIIMOTE_IS_SET(wm, WIIMOTE_STATE_CONNECTED)) 204 #define WIIUSE_DEFAULT_SMOOTH_ALPHA 0.07f 206 #define SMOOTH_ROLL 0x01 207 #define SMOOTH_PITCH 0x02 Wiimote structure.
Definition: wiiuse.h:531
void wiiuse_send_next_pending_read_request(struct wiimote_t *wm)
Send the next pending data read request to the wiimote.
Definition: wiiuse.c:452
int wiiuse_send(struct wiimote_t *wm, byte report_type, byte *msg, int len)
Send a packet to the wiimote.
Definition: wiiuse.c:570
int wiiuse_set_report_type(struct wiimote_t *wm)
Set the report type based on the current wiimote state.
Definition: wiiuse.c:295
int wiiuse_read_data_cb(struct wiimote_t *wm, wiiuse_read_cb read_cb, byte *buffer, unsigned int offset, unsigned short len)
Read data from the wiimote (callback version).
Definition: wiiuse.c:349
void(* wiiuse_read_cb)(struct wiimote_t *wm, byte *data, unsigned short len)
Callback that handles a read event.
Definition: wiiuse.h:232