wiiuse
Classes | Macros | Typedefs | Enumerations | Functions
wiiuse.h File Reference

API header file. More...

#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.

Classes

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. More...
 
struct  ir_dot_t
 A single IR source. More...
 
struct  ir_t
 IR struct. 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  tatacon_t
 Tatacon 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_t
 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   15
 
#define WIIUSE_MICRO   7
 
#define WIIUSE_VERSION_TRANSFORM(MAJ, MIN, MICRO)   (MAJ * 1000000 + MIN * 1000 + MICRO)
 
#define WIIUSE_HAS_VERSION(MAJ, MIN, MICRO)
 
#define WIIUSE_SYNC_HANDSHAKE
 
#define WIIUSE_EXPORT_DECL
 
#define WIIUSE_IMPORT_DECL
 
#define WIIUSE_EXPORT   WIIUSE_IMPORT_DECL
 
#define WIIUSE_HAS_OUTPUT_REDIRECTION
 Define indicating the presence of the feature allowing you to redirect output for one or more logging levels within the library.
 
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
 
Tatacon button codes
#define TATACON_BUTTON_CENTER_LEFT   0x40
 
#define TATACON_BUTTON_CENTER_RIGHT   0x10
 
#define TATACON_BUTTON_RIM_LEFT   0x20
 
#define TATACON_BUTTON_RIM_RIGHT   0x08
 
#define TATACON_BUTTON_ALL   0x78
 
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 */
 
#define EXP_TATACON   8
 
Device Inquiry Macros
#define IS_PRESSED(dev, button)   ((dev->btns & button) == button)
 Check if a button is pressed. More...
 
#define IS_HELD(dev, button)   ((dev->btns_held & button) == button)
 Check if a button is being held. More...
 
#define IS_RELEASED(dev, button)   ((dev->btns_released & button) == button)
 Check if a button is released on this event. More...
 
#define IS_JUST_PRESSED(dev, button)   (IS_PRESSED(dev, button) && !IS_HELD(dev, button))
 Check if a button has just been pressed this event. More...
 
#define WIIUSE_GET_IR_SENSITIVITY(wm, lvl)
 Return the IR sensitivity level. More...
 
#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 enum ir_position_t ir_position_t
 IR correction types.
 
typedef unsigned char byte
 
typedef char sbyte
 
typedef void(* wiiuse_read_cb) (struct wiimote_t *wm, byte *data, uint16_t len)
 Callback that handles a read event. More...
 
typedef struct ang3s_t ang3s_t
 
typedef struct ang3f_t ang3f_t
 
typedef struct vec2b_t vec2b_t
 Unsigned x,y byte vector.
 
typedef struct vec3b_t vec3b_t
 Unsigned x,y,z byte vector.
 
typedef struct vec3f_t vec3f_t
 Signed x,y,z float struct.
 
typedef struct orient_t orient_t
 Orientation struct. More...
 
typedef struct gforce_t gforce_t
 Gravity force struct.
 
typedef struct accel_t accel_t
 Accelerometer struct. More...
 
typedef struct ir_dot_t ir_dot_t
 A single IR source.
 
typedef enum aspect_t aspect_t
 Screen aspect ratio.
 
typedef struct ir_t ir_t
 IR struct. More...
 
typedef struct joystick_t joystick_t
 Joystick calibration structure. More...
 
typedef struct nunchuk_t nunchuk_t
 Nunchuk expansion device.
 
typedef struct classic_ctrl_t classic_ctrl_t
 Classic controller expansion device.
 
typedef struct guitar_hero_3_t guitar_hero_3_t
 Guitar Hero 3 expansion device.
 
typedef struct motion_plus_t motion_plus_t
 Motion Plus expansion device.
 
typedef struct tatacon_t tatacon_t
 Tatacon expansion device.
 
typedef struct wii_board_t wii_board_t
 Wii Balance Board "expansion" device. More...
 
typedef struct expansion_t expansion_t
 Generic expansion device plugged into wiimote.
 
typedef enum win_bt_stack_t win_bt_stack_t
 Available bluetooth stacks for Windows.
 
typedef struct wiimote_state_t wiimote_state_t
 Significant data from the previous event.
 
typedef enum WIIUSE_EVENT_TYPE WIIUSE_EVENT_TYPE
 Events that wiiuse can generate from a poll.
 
typedef enum WIIUSE_WIIMOTE_TYPE WIIUSE_WIIMOTE_TYPE
 Type of wiimote peripheral.
 
typedef struct wiimote_t wiimote
 Main Wiimote device structure. More...
 
typedef struct wiimote_callback_data_t wiimote_callback_data_t
 Data passed to a callback during wiiuse_update()
 
typedef void(* wiiuse_update_cb) (struct wiimote_callback_data_t *wm)
 Callback type.
 
typedef void(* wiiuse_write_cb) (struct wiimote_t *wm, unsigned char *data, unsigned short len)
 Callback that handles a write event. More...
 
typedef enum data_req_s data_req_s
 
typedef enum wiiuse_loglevel wiiuse_loglevel
 Loglevels supported by wiiuse.
 

Enumerations

enum  ir_position_t { WIIUSE_IR_ABOVE, WIIUSE_IR_BELOW }
 IR correction types.
 
enum  aspect_t { WIIUSE_ASPECT_4_3, WIIUSE_ASPECT_16_9 }
 Screen aspect ratio.
 
enum  win_bt_stack_t { WIIUSE_STACK_UNKNOWN, WIIUSE_STACK_MS, WIIUSE_STACK_BLUESOLEIL }
 Available bluetooth stacks for Windows.
 
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, WIIUSE_TATACON_CTRL_INSERTED, WIIUSE_TATACON_CTRL_REMOVED
}
 Events that wiiuse can generate from a poll.
 
enum  WIIUSE_WIIMOTE_TYPE { WIIUSE_WIIMOTE_REGULAR = 0, WIIUSE_WIIMOTE_MOTION_PLUS_INSIDE }
 Type of wiimote peripheral.
 
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 }
 Loglevels supported by wiiuse.
 

Functions

WIIUSE_EXPORT const char * wiiuse_version ()
 Returns the version of the library.
 
WIIUSE_EXPORT void wiiuse_set_output (enum wiiuse_loglevel loglevel, FILE *logtarget)
 Specify an alternate FILE stream for a log level. More...
 
WIIUSE_EXPORT struct wiimote_t ** wiiuse_init (int wiimotes)
 Initialize an array of wiimote structures. More...
 
WIIUSE_EXPORT void wiiuse_disconnected (struct wiimote_t *wm)
 The wiimote disconnected. More...
 
WIIUSE_EXPORT void wiiuse_cleanup (struct wiimote_t **wm, int wiimotes)
 Clean up wiimote_t array created by wiiuse_init()
 
WIIUSE_EXPORT void wiiuse_rumble (struct wiimote_t *wm, int status)
 Enable or disable the rumble. More...
 
WIIUSE_EXPORT void wiiuse_toggle_rumble (struct wiimote_t *wm)
 Toggle the state of the rumble. More...
 
WIIUSE_EXPORT void wiiuse_set_leds (struct wiimote_t *wm, int leds)
 Set the enabled LEDs. More...
 
WIIUSE_EXPORT void wiiuse_motion_sensing (struct wiimote_t *wm, int status)
 Set if the wiimote should report motion sensing. More...
 
WIIUSE_EXPORT int wiiuse_read_data (struct wiimote_t *wm, byte *buffer, unsigned int offset, uint16_t len)
 Read data from the wiimote (event version). More...
 
WIIUSE_EXPORT int wiiuse_write_data (struct wiimote_t *wm, unsigned int addr, const byte *data, byte len)
 Write data to the wiimote. More...
 
WIIUSE_EXPORT void wiiuse_status (struct wiimote_t *wm)
 Request the wiimote controller status. More...
 
WIIUSE_EXPORT struct wiimote_twiiuse_get_by_id (struct wiimote_t **wm, int wiimotes, int unid)
 Find a wiimote_t structure by its unique identifier. More...
 
WIIUSE_EXPORT int wiiuse_set_flags (struct wiimote_t *wm, int enable, int disable)
 Set flags for the specified wiimote. More...
 
WIIUSE_EXPORT float wiiuse_set_smooth_alpha (struct wiimote_t *wm, float alpha)
 Set the wiimote smoothing alpha value. More...
 
WIIUSE_EXPORT void wiiuse_set_bluetooth_stack (struct wiimote_t **wm, int wiimotes, enum win_bt_stack_t type)
 Set the bluetooth stack type to use. More...
 
WIIUSE_EXPORT void wiiuse_set_orient_threshold (struct wiimote_t *wm, float threshold)
 Set the orientation event threshold. More...
 
WIIUSE_EXPORT void wiiuse_resync (struct wiimote_t *wm)
 Try to resync with the wiimote by starting a new handshake. More...
 
WIIUSE_EXPORT void wiiuse_set_timeout (struct wiimote_t **wm, int wiimotes, byte normal_timeout, byte exp_timeout)
 Set the normal and expansion handshake timeouts. More...
 
WIIUSE_EXPORT void wiiuse_set_accel_threshold (struct wiimote_t *wm, int threshold)
 Set the accelerometer event threshold. More...
 
WIIUSE_EXPORT void wiiuse_wiiboard_use_alternate_report (struct wiimote_t *wm, int enabled)
 Switch the Balance Board to use report 0x34 instead of 0x32. More...
 
WIIUSE_EXPORT int wiiuse_find (struct wiimote_t **wm, int max_wiimotes, int timeout)
 Find a wiimote or wiimotes. More...
 
WIIUSE_EXPORT int wiiuse_connect (struct wiimote_t **wm, int wiimotes)
 Connect to a wiimote or wiimotes once an address is known. More...
 
WIIUSE_EXPORT void wiiuse_disconnect (struct wiimote_t *wm)
 Disconnect a wiimote. More...
 
WIIUSE_EXPORT int wiiuse_poll (struct wiimote_t **wm, int wiimotes)
 Poll the wiimotes for any events. More...
 
WIIUSE_EXPORT int wiiuse_update (struct wiimote_t **wm, int wiimotes, wiiuse_update_cb callback)
 Poll Wiimotes, and call the provided callback with information on each Wiimote that had an event. More...
 
WIIUSE_EXPORT void wiiuse_set_ir (struct wiimote_t *wm, int status)
 Set if the wiimote should track IR targets. More...
 
WIIUSE_EXPORT void wiiuse_set_ir_vres (struct wiimote_t *wm, unsigned int x, unsigned int y)
 Set the virtual screen resolution for IR tracking. More...
 
WIIUSE_EXPORT void wiiuse_set_ir_position (struct wiimote_t *wm, enum ir_position_t pos)
 Set the XY position for the IR cursor. More...
 
WIIUSE_EXPORT void wiiuse_set_aspect_ratio (struct wiimote_t *wm, enum aspect_t aspect)
 Set the aspect ratio of the TV/monitor. More...
 
WIIUSE_EXPORT void wiiuse_set_ir_sensitivity (struct wiimote_t *wm, int level)
 Set the IR sensitivity. More...
 
WIIUSE_EXPORT void wiiuse_set_nunchuk_orient_threshold (struct wiimote_t *wm, float threshold)
 Set the orientation event threshold for the nunchuk. More...
 
WIIUSE_EXPORT void wiiuse_set_nunchuk_accel_threshold (struct wiimote_t *wm, int threshold)
 Set the accelerometer event threshold for the nunchuk. More...
 
WIIUSE_EXPORT void wiiuse_set_wii_board_calib (struct wiimote_t *wm)
 Calib wii board. More...
 
WIIUSE_EXPORT void wiiuse_set_motion_plus (struct wiimote_t *wm, int status)
 Enable/disable Motion+ expansion. More...
 

Detailed Description

API header file.

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.

Macro Definition Documentation

◆ WIIUSE_HAS_VERSION

#define WIIUSE_HAS_VERSION (   MAJ,
  MIN,
  MICRO 
)
Value:
(WIIUSE_VERSION_TRANSFORM(MAJ, MIN, MICRO) \
<= WIIUSE_VERSION_TRANSFORM(WIIUSE_MAJOR, WIIUSE_MINOR, WIIUSE_MICRO))