xbmc
|
API header file. More...
#include <bluetooth/bluetooth.h>
Go to the source code of this file.
Classes | |
struct | read_req_t |
Data read request structure. 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 | expansion_t |
Generic expansion device plugged into wiimote. More... | |
struct | wiimote_state_t |
Significant data from the previous event. More... | |
struct | wiimote_t |
Wiimote structure. More... | |
Macros | |
#define | WCONST const |
#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 |
#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 |
#define | NUNCHUK_BUTTON_Z 0x01 |
#define | NUNCHUK_BUTTON_C 0x02 |
#define | NUNCHUK_BUTTON_ALL 0x03 |
#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 |
#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 |
#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 |
#define | EXP_NONE 0 |
#define | EXP_NUNCHUK 1 |
#define | EXP_CLASSIC 2 |
#define | EXP_GUITAR_HERO_3 3 |
#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(dev, 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) |
#define | MAX_PAYLOAD 32 |
#define | WIIUSE_EXPORT_DECL |
#define | WIIUSE_IMPORT_DECL |
#define | WIIUSE_EXPORT WIIUSE_IMPORT_DECL |
Typedefs | |
typedef enum ir_position_t | ir_position_t |
typedef unsigned char | byte |
typedef char | sbyte |
typedef void(* | wiiuse_read_cb) (struct wiimote_t *wm, byte *data, unsigned short len) |
Callback that handles a read event. More... | |
typedef struct vec2b_t | vec2b_t |
typedef struct vec3b_t | vec3b_t |
typedef struct vec3f_t | vec3f_t |
typedef struct orient_t | orient_t |
typedef struct gforce_t | gforce_t |
typedef struct accel_t | accel_t |
typedef struct ir_dot_t | ir_dot_t |
typedef enum aspect_t | aspect_t |
typedef struct ir_t | ir_t |
typedef struct joystick_t | joystick_t |
typedef struct nunchuk_t | nunchuk_t |
typedef struct classic_ctrl_t | classic_ctrl_t |
typedef struct guitar_hero_3_t | guitar_hero_3_t |
typedef struct expansion_t | expansion_t |
typedef enum win_bt_stack_t | win_bt_stack_t |
typedef struct wiimote_state_t | wiimote_state_t |
typedef enum WIIUSE_EVENT_TYPE | WIIUSE_EVENT_TYPE |
typedef struct wiimote_t | wiimote |
Enumerations | |
enum | ir_position_t { WIIUSE_IR_ABOVE, WIIUSE_IR_BELOW } |
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 } |
enum | WIIUSE_EVENT_TYPE { WIIUSE_NONE = 0, WIIUSE_EVENT, WIIUSE_STATUS, WIIUSE_CONNECT, WIIUSE_DISCONNECT, WIIUSE_UNEXPECTED_DISCONNECT, WIIUSE_READ_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 } |
Events that wiiuse can generate from a poll. | |
Functions | |
WIIUSE_EXPORT const char * | wiiuse_version () |
Returns the version of the library. | |
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, unsigned short len) |
Read data from the wiimote (event version). More... | |
WIIUSE_EXPORT int | wiiuse_write_data (struct wiimote_t *wm, unsigned int addr, 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_t * | wiiuse_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 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 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... | |
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.
#define IS_HELD | ( | dev, | |
button | |||
) | ((dev->btns_held & button) == button) |
#define IS_JUST_PRESSED | ( | dev, | |
button | |||
) | (IS_PRESSED(dev, button) && !IS_HELD(dev, button)) |
#define IS_PRESSED | ( | dev, | |
button | |||
) | ((dev->btns & button) == button) |
#define IS_RELEASED | ( | dev, | |
button | |||
) | ((dev->btns_released & button) == button) |
#define WIIUSE_GET_IR_SENSITIVITY | ( | dev, | |
lvl | |||
) |
Return the IR sensitivity level.
typedef void(* wiiuse_read_cb) (struct wiimote_t *wm, byte *data, unsigned short len) |
Callback that handles a read event.
wm | Pointer to a wiimote_t structure. |
data | Pointer to the filled data block. |
len | Length in bytes of the data block. |
A registered function of this type is called automatically by the wiiuse library when the wiimote has returned the full data requested by a previous call to wiiuse_read_data().
WIIUSE_EXPORT int wiiuse_connect | ( | struct wiimote_t ** | wm, |
int | wiimotes | ||
) |
Connect to a wiimote or wiimotes once an address is known.
wm | An array of wiimote_t structures. |
wiimotes | The number of wiimote structures in wm. |
Connect to a number of wiimotes when the address is already set in the wiimote_t structures. These addresses are normally set by the wiiuse_find() function, but can also be set manually.
WIIUSE_EXPORT void wiiuse_disconnect | ( | struct wiimote_t * | wm | ) |
WIIUSE_EXPORT void wiiuse_disconnected | ( | struct wiimote_t * | wm | ) |
WIIUSE_EXPORT int wiiuse_find | ( | struct wiimote_t ** | wm, |
int | max_wiimotes, | ||
int | timeout | ||
) |
Find a wiimote or wiimotes.
wm | An array of wiimote_t structures. |
max_wiimotes | The number of wiimote structures in wm. |
timeout | The number of seconds before the search times out. |
This function will only look for wiimote devices.
When a device is found the address in the structures will be set.
You can then call wiimote_connect() to connect to the found
devices.
WIIUSE_EXPORT struct wiimote_t** wiiuse_init | ( | int | wiimotes | ) |
Initialize an array of wiimote structures.
wiimotes | Number of wiimote_t structures to create. |
The array returned by this function can be passed to various functions, including wiiuse_connect().
WIIUSE_EXPORT void wiiuse_motion_sensing | ( | struct wiimote_t * | wm, |
int | status | ||
) |
WIIUSE_EXPORT int wiiuse_poll | ( | struct wiimote_t ** | wm, |
int | wiimotes | ||
) |
Poll the wiimotes for any events.
wm | An array of pointers to wiimote_t structures. |
wiimotes | The number of wiimote_t structures in the wm array. |
It is necessary to poll the wiimote devices for events that occur. If an event occurs on a particular wiimote, the event variable will be set.
WIIUSE_EXPORT int wiiuse_read_data | ( | struct wiimote_t * | wm, |
byte * | buffer, | ||
unsigned int | addr, | ||
unsigned short | len | ||
) |
Read data from the wiimote (event version).
wm | Pointer to a wiimote_t structure. |
buffer | An allocated buffer to store the data as it arrives from the wiimote. Must be persistent in memory and large enough to hold the data. |
addr | The address of wiimote memory to read from. |
len | The length of the block to be read. |
The library can only handle one data read request at a time because it must keep track of the buffer and other events that are specific to that request. So if a request has already been made, subsequent requests will be added to a pending list and be sent out when the previous finishes.
WIIUSE_EXPORT void wiiuse_resync | ( | struct wiimote_t * | wm | ) |
WIIUSE_EXPORT void wiiuse_rumble | ( | struct wiimote_t * | wm, |
int | status | ||
) |
WIIUSE_EXPORT void wiiuse_set_accel_threshold | ( | struct wiimote_t * | wm, |
int | threshold | ||
) |
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.
wm | Array of wiimote_t structures. |
wiimotes | Number of objects in the wm array. |
type | The type of bluetooth stack to use. |
WIIUSE_EXPORT int wiiuse_set_flags | ( | struct wiimote_t * | wm, |
int | enable, | ||
int | disable | ||
) |
WIIUSE_EXPORT void wiiuse_set_ir | ( | struct wiimote_t * | wm, |
int | status | ||
) |
WIIUSE_EXPORT void wiiuse_set_ir_position | ( | struct wiimote_t * | wm, |
enum ir_position_t | pos | ||
) |
WIIUSE_EXPORT void wiiuse_set_ir_sensitivity | ( | struct wiimote_t * | wm, |
int | level | ||
) |
WIIUSE_EXPORT void wiiuse_set_ir_vres | ( | struct wiimote_t * | wm, |
unsigned int | x, | ||
unsigned int | y | ||
) |
WIIUSE_EXPORT void wiiuse_set_leds | ( | struct wiimote_t * | wm, |
int | leds | ||
) |
WIIUSE_EXPORT void wiiuse_set_nunchuk_accel_threshold | ( | struct wiimote_t * | wm, |
int | threshold | ||
) |
Set the accelerometer event threshold for the nunchuk.
wm | Pointer to a wiimote_t structure with a nunchuk attached. |
threshold | The decimal place that should be considered a significant change. |
See wiiuse_set_orient_threshold() for details.
WIIUSE_EXPORT void wiiuse_set_nunchuk_orient_threshold | ( | struct wiimote_t * | wm, |
float | threshold | ||
) |
Set the orientation event threshold for the nunchuk.
wm | Pointer to a wiimote_t structure with a nunchuk attached. |
threshold | The decimal place that should be considered a significant change. |
See wiiuse_set_orient_threshold() for details.
WIIUSE_EXPORT void wiiuse_set_orient_threshold | ( | struct wiimote_t * | wm, |
float | threshold | ||
) |
Set the orientation event threshold.
wm | Pointer to a wiimote_t structure. |
threshold | The decimal place that should be considered a significant change. |
If threshold is 0.01, and any angle changes by 0.01 then a significant change has occurred and the event callback will be invoked. If threshold is 1 then the angle has to change by a full degree to generate an event.
WIIUSE_EXPORT float wiiuse_set_smooth_alpha | ( | struct wiimote_t * | wm, |
float | alpha | ||
) |
Set the wiimote smoothing alpha value.
The alpha value is between 0 and 1 and is used in an exponential smoothing algorithm.
Smoothing is only performed if the WIIMOTE_USE_SMOOTHING is set.
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.
wm | Array of wiimote_t structures. |
wiimotes | Number of objects in the wm array. |
normal_timeout | The timeout in milliseconds for a normal read. |
exp_timeout | The timeout in millisecondsd to wait for an expansion handshake. |
WIIUSE_EXPORT void wiiuse_status | ( | struct wiimote_t * | wm | ) |
WIIUSE_EXPORT void wiiuse_toggle_rumble | ( | struct wiimote_t * | wm | ) |