WiiUse  0.14.2
 All Data Structures Files Functions Variables Typedefs Enumerations Macros Groups Pages
wiiuse.h File Reference
#include <windows.h>
#include <bluetooth/bluetooth.h>
#include <stdint.h>
#include <stdio.h>
+ Include dependency graph for wiiuse.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  read_req_t
 Data read request structure. More...
struct  ang3s_t
 Roll/Pitch/Yaw short angles. More...
struct  ang3f_t
 Roll/Pitch/Yaw float angles. More...
struct  vec2b_t
 Unsigned x,y byte vector. More...
struct  vec3b_t
 Unsigned x,y,z byte vector. More...
struct  vec3f_t
 Signed x,y,z float struct. More...
struct  orient_t
 Orientation struct. More...
struct  gforce_t
 Gravity force struct. More...
struct  accel_t
 Accelerometer struct. For any device with an accelerometer. More...
struct  ir_dot_t
 A single IR source. More...
struct  ir_t
 IR struct. Hold all data related to the IR tracking. More...
struct  joystick_t
 Joystick calibration structure. More...
struct  nunchuk_t
 Nunchuk expansion device. More...
struct  classic_ctrl_t
 Classic controller expansion device. More...
struct  guitar_hero_3_t
 Guitar Hero 3 expansion device. More...
struct  motion_plus_t
 Motion Plus expansion device. More...
struct  wii_board_t
 Wii Balance Board "expansion" device. More...
struct  expansion_t
 Generic expansion device plugged into wiimote. More...
struct  wiimote_state_t
 Significant data from the previous event. More...
struct  wiimote
 Main Wiimote device structure. More...
struct  wiimote_callback_data_t
 Data passed to a callback during wiiuse_update() More...
struct  data_req_t
 Data write request structure. More...

Macros

#define WIIUSE_MAJOR   0
#define WIIUSE_MINOR   14
#define WIIUSE_MICRO   2
#define WIIUSE_VERSION_TRANSFORM(MAJ, MIN, MICRO)   (MAJ * 1000000 + MIN * 1000 + MICRO)
#define WIIUSE_HAS_VERSION(MAJ, MIN, MICRO)   ( WIIUSE_VERSION_TRANSFORM(MAJ, MIN, MICRO) <= WIIUSE_VERSION_TRANSFORM(WIIUSE_MAJOR, WIIUSE_MINOR, WIIUSE_MICRO) )
#define WIN32_LEAN_AND_MEAN   1
#define WCONST   const
#define WIIMOTE_DEFAULT_TIMEOUT   10
#define WIIMOTE_EXP_TIMEOUT   10
#define WIIUSE_SYNC_HANDSHAKE
#define WIIUSE_EXPORT_DECL   __declspec(dllexport)
#define WIIUSE_IMPORT_DECL   __declspec(dllimport)
#define WIIUSE_EXPORT   WIIUSE_IMPORT_DECL
#define WIIUSE_HAS_OUTPUT_REDIRECTION
Wiimote state flags and macros
#define WIIMOTE_STATE_DEV_FOUND   0x0001
#define WIIMOTE_STATE_HANDSHAKE   0x0002 /* actual connection exists but no handshake yet */
#define WIIMOTE_STATE_HANDSHAKE_COMPLETE   0x0004 /* actual connection exists but no handshake yet */
#define WIIMOTE_STATE_CONNECTED   0x0008
#define WIIMOTE_STATE_RUMBLE   0x0010
#define WIIMOTE_STATE_ACC   0x0020
#define WIIMOTE_STATE_EXP   0x0040
#define WIIMOTE_STATE_IR   0x0080
#define WIIMOTE_STATE_SPEAKER   0x0100
#define WIIMOTE_STATE_IR_SENS_LVL1   0x0200
#define WIIMOTE_STATE_IR_SENS_LVL2   0x0400
#define WIIMOTE_STATE_IR_SENS_LVL3   0x0800
#define WIIMOTE_STATE_IR_SENS_LVL4   0x1000
#define WIIMOTE_STATE_IR_SENS_LVL5   0x2000
#define WIIMOTE_STATE_EXP_HANDSHAKE   0x10000 /* actual M+ connection exists but no handshake yet */
#define WIIMOTE_STATE_EXP_EXTERN   0x20000 /* actual M+ connection exists but handshake failed */
#define WIIMOTE_STATE_EXP_FAILED   0x40000 /* actual M+ connection exists but handshake failed */
#define WIIMOTE_STATE_MPLUS_PRESENT   0x80000 /* Motion+ is connected */
#define WIIMOTE_ID(wm)   (wm->unid)
#define WIIMOTE_IS_SET(wm, s)   ((wm->state & (s)) == (s))
#define WIIMOTE_IS_CONNECTED(wm)   (WIIMOTE_IS_SET(wm, WIIMOTE_STATE_CONNECTED))
LED bit masks
#define WIIMOTE_LED_NONE   0x00
#define WIIMOTE_LED_1   0x10
#define WIIMOTE_LED_2   0x20
#define WIIMOTE_LED_3   0x40
#define WIIMOTE_LED_4   0x80
Button codes
#define WIIMOTE_BUTTON_TWO   0x0001
#define WIIMOTE_BUTTON_ONE   0x0002
#define WIIMOTE_BUTTON_B   0x0004
#define WIIMOTE_BUTTON_A   0x0008
#define WIIMOTE_BUTTON_MINUS   0x0010
#define WIIMOTE_BUTTON_ZACCEL_BIT6   0x0020
#define WIIMOTE_BUTTON_ZACCEL_BIT7   0x0040
#define WIIMOTE_BUTTON_HOME   0x0080
#define WIIMOTE_BUTTON_LEFT   0x0100
#define WIIMOTE_BUTTON_RIGHT   0x0200
#define WIIMOTE_BUTTON_DOWN   0x0400
#define WIIMOTE_BUTTON_UP   0x0800
#define WIIMOTE_BUTTON_PLUS   0x1000
#define WIIMOTE_BUTTON_ZACCEL_BIT4   0x2000
#define WIIMOTE_BUTTON_ZACCEL_BIT5   0x4000
#define WIIMOTE_BUTTON_UNKNOWN   0x8000
#define WIIMOTE_BUTTON_ALL   0x1F9F
Nunchuk button codes
#define NUNCHUK_BUTTON_Z   0x01
#define NUNCHUK_BUTTON_C   0x02
#define NUNCHUK_BUTTON_ALL   0x03
Classic controller button codes
#define CLASSIC_CTRL_BUTTON_UP   0x0001
#define CLASSIC_CTRL_BUTTON_LEFT   0x0002
#define CLASSIC_CTRL_BUTTON_ZR   0x0004
#define CLASSIC_CTRL_BUTTON_X   0x0008
#define CLASSIC_CTRL_BUTTON_A   0x0010
#define CLASSIC_CTRL_BUTTON_Y   0x0020
#define CLASSIC_CTRL_BUTTON_B   0x0040
#define CLASSIC_CTRL_BUTTON_ZL   0x0080
#define CLASSIC_CTRL_BUTTON_FULL_R   0x0200
#define CLASSIC_CTRL_BUTTON_PLUS   0x0400
#define CLASSIC_CTRL_BUTTON_HOME   0x0800
#define CLASSIC_CTRL_BUTTON_MINUS   0x1000
#define CLASSIC_CTRL_BUTTON_FULL_L   0x2000
#define CLASSIC_CTRL_BUTTON_DOWN   0x4000
#define CLASSIC_CTRL_BUTTON_RIGHT   0x8000
#define CLASSIC_CTRL_BUTTON_ALL   0xFEFF
Guitar Hero 3 button codes
#define GUITAR_HERO_3_BUTTON_STRUM_UP   0x0001
#define GUITAR_HERO_3_BUTTON_YELLOW   0x0008
#define GUITAR_HERO_3_BUTTON_GREEN   0x0010
#define GUITAR_HERO_3_BUTTON_BLUE   0x0020
#define GUITAR_HERO_3_BUTTON_RED   0x0040
#define GUITAR_HERO_3_BUTTON_ORANGE   0x0080
#define GUITAR_HERO_3_BUTTON_PLUS   0x0400
#define GUITAR_HERO_3_BUTTON_MINUS   0x1000
#define GUITAR_HERO_3_BUTTON_STRUM_DOWN   0x4000
#define GUITAR_HERO_3_BUTTON_ALL   0xFEFF
Wiimote option flags
#define WIIUSE_SMOOTHING   0x01
#define WIIUSE_CONTINUOUS   0x02
#define WIIUSE_ORIENT_THRESH   0x04
#define WIIUSE_INIT_FLAGS   (WIIUSE_SMOOTHING | WIIUSE_ORIENT_THRESH)
#define WIIUSE_ORIENT_PRECISION   100.0f
Expansion codes
#define EXP_NONE   0
#define EXP_NUNCHUK   1
#define EXP_CLASSIC   2
#define EXP_GUITAR_HERO_3   3
#define EXP_WII_BOARD   4
#define EXP_MOTION_PLUS   5
#define EXP_MOTION_PLUS_NUNCHUK   6 /* Motion+ in nunchuk pass-through mode */
#define EXP_MOTION_PLUS_CLASSIC   7 /* Motion+ in classic ctr. pass-through mode */
Device Inquiry Macros
#define IS_PRESSED(dev, button)   ((dev->btns & button) == button)
#define IS_HELD(dev, button)   ((dev->btns_held & button) == button)
#define IS_RELEASED(dev, button)   ((dev->btns_released & button) == button)
#define IS_JUST_PRESSED(dev, button)   (IS_PRESSED(dev, button) && !IS_HELD(dev, button))
#define WIIUSE_GET_IR_SENSITIVITY(wm, lvl)
#define WIIUSE_USING_ACC(wm)   ((wm->state & 0x020) == 0x020)
#define WIIUSE_USING_EXP(wm)   ((wm->state & 0x040) == 0x040)
#define WIIUSE_USING_IR(wm)   ((wm->state & 0x080) == 0x080)
#define WIIUSE_USING_SPEAKER(wm)   ((wm->state & 0x100) == 0x100)
#define WIIUSE_IS_LED_SET(wm, num)   ((wm->leds & WIIMOTE_LED_##num) == WIIMOTE_LED_##num)

Typedefs

typedef unsigned char byte
typedef char sbyte
typedef void(* wiiuse_read_cb )(struct wiimote_t *wm, byte *data, uint16_t len)
typedef void(* wiiuse_update_cb )(struct wiimote_callback_data_t *wm)
typedef void(* wiiuse_write_cb )(struct wiimote_t *wm, unsigned char *data, unsigned short len)

Enumerations

enum  ir_position_t { WIIUSE_IR_ABOVE, WIIUSE_IR_BELOW }
enum  aspect_t { WIIUSE_ASPECT_4_3, WIIUSE_ASPECT_16_9 }
enum  win_bt_stack_t { WIIUSE_STACK_UNKNOWN, WIIUSE_STACK_MS, WIIUSE_STACK_BLUESOLEIL }
enum  WIIUSE_EVENT_TYPE {
  WIIUSE_NONE = 0, WIIUSE_EVENT, WIIUSE_STATUS, WIIUSE_CONNECT,
  WIIUSE_DISCONNECT, WIIUSE_UNEXPECTED_DISCONNECT, WIIUSE_READ_DATA, WIIUSE_WRITE_DATA,
  WIIUSE_NUNCHUK_INSERTED, WIIUSE_NUNCHUK_REMOVED, WIIUSE_CLASSIC_CTRL_INSERTED, WIIUSE_CLASSIC_CTRL_REMOVED,
  WIIUSE_GUITAR_HERO_3_CTRL_INSERTED, WIIUSE_GUITAR_HERO_3_CTRL_REMOVED, WIIUSE_WII_BOARD_CTRL_INSERTED, WIIUSE_WII_BOARD_CTRL_REMOVED,
  WIIUSE_MOTION_PLUS_ACTIVATED, WIIUSE_MOTION_PLUS_REMOVED
}
enum  data_req_s { REQ_READY = 0, REQ_SENT, REQ_DONE }
enum  wiiuse_loglevel { LOGLEVEL_ERROR = 0, LOGLEVEL_WARNING = 1, LOGLEVEL_INFO = 2, LOGLEVEL_DEBUG = 3 }

Functions

WIIUSE_EXPORT const char * wiiuse_version ()
WIIUSE_EXPORT void wiiuse_set_output (enum wiiuse_loglevel loglevel, FILE *logtarget)
WIIUSE_EXPORT struct wiimote_t ** wiiuse_init (int wiimotes)
WIIUSE_EXPORT void wiiuse_disconnected (struct wiimote_t *wm)
WIIUSE_EXPORT void wiiuse_cleanup (struct wiimote_t **wm, int wiimotes)
WIIUSE_EXPORT void wiiuse_rumble (struct wiimote_t *wm, int status)
WIIUSE_EXPORT void wiiuse_toggle_rumble (struct wiimote_t *wm)
WIIUSE_EXPORT void wiiuse_set_leds (struct wiimote_t *wm, int leds)
WIIUSE_EXPORT void wiiuse_motion_sensing (struct wiimote_t *wm, int status)
WIIUSE_EXPORT int wiiuse_read_data (struct wiimote_t *wm, byte *buffer, unsigned int offset, uint16_t len)
WIIUSE_EXPORT int wiiuse_write_data (struct wiimote_t *wm, unsigned int addr, const byte *data, byte len)
WIIUSE_EXPORT void wiiuse_status (struct wiimote_t *wm)
WIIUSE_EXPORT struct wiimote_t * wiiuse_get_by_id (struct wiimote_t **wm, int wiimotes, int unid)
WIIUSE_EXPORT int wiiuse_set_flags (struct wiimote_t *wm, int enable, int disable)
WIIUSE_EXPORT float wiiuse_set_smooth_alpha (struct wiimote_t *wm, float alpha)
WIIUSE_EXPORT void wiiuse_set_bluetooth_stack (struct wiimote_t **wm, int wiimotes, enum win_bt_stack_t type)
WIIUSE_EXPORT void wiiuse_set_orient_threshold (struct wiimote_t *wm, float threshold)
WIIUSE_EXPORT void wiiuse_resync (struct wiimote_t *wm)
WIIUSE_EXPORT void wiiuse_set_timeout (struct wiimote_t **wm, int wiimotes, byte normal_timeout, byte exp_timeout)
WIIUSE_EXPORT void wiiuse_set_accel_threshold (struct wiimote_t *wm, int threshold)
WIIUSE_EXPORT int wiiuse_find (struct wiimote_t **wm, int max_wiimotes, int timeout)
WIIUSE_EXPORT int wiiuse_connect (struct wiimote_t **wm, int wiimotes)
WIIUSE_EXPORT void wiiuse_disconnect (struct wiimote_t *wm)
WIIUSE_EXPORT int wiiuse_poll (struct wiimote_t **wm, int wiimotes)
WIIUSE_EXPORT int wiiuse_update (struct wiimote_t **wm, int wiimotes, wiiuse_update_cb callback)
WIIUSE_EXPORT void wiiuse_set_ir (struct wiimote_t *wm, int status)
WIIUSE_EXPORT void wiiuse_set_ir_vres (struct wiimote_t *wm, unsigned int x, unsigned int y)
WIIUSE_EXPORT void wiiuse_set_ir_position (struct wiimote_t *wm, enum ir_position_t pos)
WIIUSE_EXPORT void wiiuse_set_aspect_ratio (struct wiimote_t *wm, enum aspect_t aspect)
WIIUSE_EXPORT void wiiuse_set_ir_sensitivity (struct wiimote_t *wm, int level)
WIIUSE_EXPORT void wiiuse_set_nunchuk_orient_threshold (struct wiimote_t *wm, float threshold)
WIIUSE_EXPORT void wiiuse_set_nunchuk_accel_threshold (struct wiimote_t *wm, int threshold)
WIIUSE_EXPORT void wiiuse_set_wii_board_calib (struct wiimote_t *wm)
WIIUSE_EXPORT void wiiuse_set_motion_plus (struct wiimote_t *wm, int status)

Detailed Description

If this file is included from inside the wiiuse source and not from a third party program, then wiimote_internal.h is also included which extends this file.

Definition in file wiiuse.h.