wiiuse
Macros | Functions
wiiuse_internal.h File Reference

General internal wiiuse stuff. More...

#include "definitions.h"
#include <stdint.h>
#include "wiiuse.h"
Include dependency graph for wiiuse_internal.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define WM_OUTPUT_CHANNEL   0x11
 
#define WM_INPUT_CHANNEL   0x13
 
#define WM_SET_REPORT   0x50
 
#define WM_SET_DATA   0xA0
 
#define WM_CMD_LED   0x11
 
#define WM_CMD_REPORT_TYPE   0x12
 
#define WM_CMD_RUMBLE   0x13
 
#define WM_CMD_IR   0x13
 
#define WM_CMD_CTRL_STATUS   0x15
 
#define WM_CMD_WRITE_DATA   0x16
 
#define WM_CMD_READ_DATA   0x17
 
#define WM_CMD_IR_2   0x1A
 
#define WM_RPT_CTRL_STATUS   0x20
 
#define WM_RPT_READ   0x21
 
#define WM_RPT_WRITE   0x22
 
#define WM_RPT_BTN   0x30
 
#define WM_RPT_BTN_ACC   0x31
 
#define WM_RPT_BTN_EXP_8   0x32
 
#define WM_RPT_BTN_ACC_IR   0x33
 
#define WM_RPT_BTN_EXP   0x34
 
#define WM_RPT_BTN_ACC_EXP   0x35
 
#define WM_RPT_BTN_IR_EXP   0x36
 
#define WM_RPT_BTN_ACC_IR_EXP   0x37
 
#define WM_BT_INPUT   0x01
 
#define WM_BT_OUTPUT   0x02
 
#define WM_DEV_CLASS_0   0x04
 
#define WM_DEV_CLASS_1   0x25
 
#define WM_DEV_CLASS_2   0x00
 
#define WM_PLUS_DEV_CLASS_0   0x08
 
#define WM_PLUS_DEV_CLASS_1   0x05
 
#define WM_PLUS_DEV_CLASS_2   0x00
 
#define WM_VENDOR_ID   0x057E
 
#define WM_PRODUCT_ID   0x0306
 
#define WM_PRODUCT_ID_TR   0x0330
 
#define WM_MAX_BATTERY_CODE   0xC8
 
#define WM_MEM_OFFSET_CALIBRATION   0x16
 
#define WM_EXP_MEM_BASE   0x04A40000
 
#define WM_EXP_ID   0x04A400FA
 
#define WM_EXP_MEM_ENABLE   0x04A40040
 
#define WM_EXP_MEM_ENABLE1   0x04A400F0
 
#define WM_EXP_MEM_ENABLE2   0x04A400FB
 
#define WM_EXP_MEM_CALIBR   0x04A40020
 
#define WM_EXP_MOTION_PLUS_IDENT   0x04A600FA
 
#define WM_EXP_MOTION_PLUS_ENABLE   0x04A600FE
 
#define WM_EXP_MOTION_PLUS_INIT   0x04A600F0
 
#define WM_REG_IR   0x04B00030
 
#define WM_REG_IR_BLOCK1   0x04B00000
 
#define WM_REG_IR_BLOCK2   0x04B0001A
 
#define WM_REG_IR_MODENUM   0x04B00033
 
#define WM_EXP_BBOARD_INIT1   0x04A400F1
 
#define WM_IR_TYPE_BASIC   0x01
 
#define WM_IR_TYPE_EXTENDED   0x03
 
#define WM_CTRL_STATUS_BYTE1_ATTACHMENT   0x02
 
#define WM_CTRL_STATUS_BYTE1_SPEAKER_ENABLED   0x04
 
#define WM_CTRL_STATUS_BYTE1_IR_ENABLED   0x08
 
#define WM_CTRL_STATUS_BYTE1_LED_1   0x10
 
#define WM_CTRL_STATUS_BYTE1_LED_2   0x20
 
#define WM_CTRL_STATUS_BYTE1_LED_3   0x40
 
#define WM_CTRL_STATUS_BYTE1_LED_4   0x80
 
#define WM_ASPECT_16_9_X   660
 
#define WM_ASPECT_16_9_Y   370
 
#define WM_ASPECT_4_3_X   560
 
#define WM_ASPECT_4_3_Y   420
 
#define EXP_ID_CODE_NUNCHUK   0xA4200000
 Expansion stuff.
 
#define EXP_ID_CODE_WII_BOARD   0xA4200402
 
#define EXP_ID_CODE_CLASSIC_CONTROLLER   0xA4200101
 
#define EXP_ID_CODE_GUITAR   0xA4200103
 
#define EXP_ID_CODE_MOTION_PLUS   0xA4200405
 
#define EXP_ID_CODE_MOTION_PLUS_NUNCHUK   0xA4200505 /** Motion Plus ID in Nunchuck passthrough mode */
 
#define EXP_ID_CODE_MOTION_PLUS_CLASSIC   0xA4200705 /** Motion Plus ID in Classic control. passthrough */
 
#define EXP_ID_CODE_TATACON   0xA4200111
 
#define EXP_ID_CODE_INACTIVE_MOTION_PLUS   0xA6200005 /** Inactive Motion Plus ID */
 
#define EXP_ID_CODE_INACTIVE_MOTION_PLUS_BUILTIN
 
#define EXP_ID_CODE_NLA_MOTION_PLUS   0xA6200405 /** No longer active Motion Plus ID */
 
#define EXP_ID_CODE_NLA_MOTION_PLUS_NUNCHUK   0xA6200505 /** No longer active Motion Plus ID in Nunchuck passthrough mode */
 
#define EXP_ID_CODE_NLA_MOTION_PLUS_CLASSIC   0xA6200705 /** No longer active Motion Plus ID in Classic control. passthrough */
 
#define EXP_HANDSHAKE_LEN   224
 
#define WIIMOTE_INIT_STATES   (WIIMOTE_STATE_IR_SENS_LVL3)
 
#define WIIMOTE_ENABLE_STATE(wm, s)   (wm->state |= (s))
 
#define WIIMOTE_DISABLE_STATE(wm, s)   (wm->state &= ~(s))
 
#define WIIMOTE_TOGGLE_STATE(wm, s)   ((wm->state & (s)) ? WIIMOTE_DISABLE_STATE(wm, s) : WIIMOTE_ENABLE_STATE(wm, s))
 
#define WIIMOTE_IS_FLAG_SET(wm, s)   ((wm->flags & (s)) == (s))
 
#define WIIMOTE_ENABLE_FLAG(wm, s)   (wm->flags |= (s))
 
#define WIIMOTE_DISABLE_FLAG(wm, s)   (wm->flags &= ~(s))
 
#define WIIMOTE_TOGGLE_FLAG(wm, s)   ((wm->flags & (s)) ? WIIMOTE_DISABLE_FLAG(wm, s) : WIIMOTE_ENABLE_FLAG(wm, s))
 
#define NUNCHUK_IS_FLAG_SET(wm, s)   ((*(wm->flags) & (s)) == (s))
 
#define MAX_PAYLOAD   32
 
#define WIIUSE_DEFAULT_SMOOTH_ALPHA   0.07f
 
#define SMOOTH_ROLL   0x01
 
#define SMOOTH_PITCH   0x02
 
#define WIIUSE_READ_TIMEOUT   5000
 
#define _STRINGIFY(s)   _STRINGIFY_IMPL(s)
 
#define _STRINGIFY_IMPL(s)   #s
 
#define WIIUSE_VERSION   _STRINGIFY(WIIUSE_MAJOR) "." _STRINGIFY(WIIUSE_MINOR) "." _STRINGIFY(WIIUSE_MICRO)
 
#define INLINE_UTIL   static inline
 
#define WIIUSE_DECLARE_ENDIAN_CONVERSION_OPS(_TYPE, _TOBE, _FROMBE)
 
#define WIIUSE_DECLARE_BUFFERING_OPS(_TYPE)
 

Functions

void wiiuse_millisleep (int durationMilliseconds)
 Cross-platform call to sleep for at least the specified number of milliseconds. More...
 
int wiiuse_set_report_type (struct wiimote_t *wm)
 Set the report type based on the current wiimote state. More...
 
void wiiuse_send_next_pending_read_request (struct wiimote_t *wm)
 Send the next pending data read request to the wiimote. More...
 
void wiiuse_send_next_pending_write_request (struct wiimote_t *wm)
 Send the next pending data write request to the wiimote. More...
 
int wiiuse_send (struct wiimote_t *wm, byte report_type, byte *msg, int len)
 Send a packet to the wiimote. More...
 
int wiiuse_read_data_cb (struct wiimote_t *wm, wiiuse_read_cb read_cb, byte *buffer, unsigned int offset, uint16_t len)
 Read data from the wiimote (callback version). More...
 
int wiiuse_write_data_cb (struct wiimote_t *wm, unsigned int addr, byte *data, byte len, wiiuse_write_cb write_cb)
 Write data to the wiimote (callback version). More...
 
INLINE_UTIL void to_big_endian_uint8_t (byte *buf, uint8_t val)
 
INLINE_UTIL uint8_t from_big_endian_uint8_t (byte *buf)
 

Detailed Description

General internal wiiuse stuff.

Since Wiiuse is a library, wiiuse.h is a duplicate of the API header.

The code that would normally go in that file, but which is not needed by third party developers, is put here.

So wiiuse_internal.h is included by other files internally, wiiuse.h is included only here.