WPADFSStatus

Syntax

#include <cafe/pads/wpad/wpad.h>

#define WPAD_DPD_MAX_OBJECTS        4

#define WPAD_BUTTON_LEFT            0x0001
#define WPAD_BUTTON_RIGHT           0x0002
#define WPAD_BUTTON_DOWN            0x0004
#define WPAD_BUTTON_UP              0x0008
#define WPAD_BUTTON_PLUS            0x0010
#define WPAD_BUTTON_2               0x0100
#define WPAD_BUTTON_1               0x0200
#define WPAD_BUTTON_B               0x0400
#define WPAD_BUTTON_A               0x0800
#define WPAD_BUTTON_MINUS           0x1000
#define WPAD_BUTTON_HOME            0x8000

// for FreeStyle
#define WPAD_BUTTON_Z               0x2000
#define WPAD_BUTTON_C               0x4000

// for ClassicStyle
#define WPAD_CL_BUTTON_UP           0x0001
#define WPAD_CL_BUTTON_LEFT         0x0002
#define WPAD_CL_TRIGGER_ZR          0x0004
#define WPAD_CL_BUTTON_ZR           WPAD_CL_TRIGGER_ZR
#define WPAD_CL_BUTTON_X            0x0008
#define WPAD_CL_BUTTON_A            0x0010
#define WPAD_CL_BUTTON_Y            0x0020
#define WPAD_CL_BUTTON_B            0x0040
#define WPAD_CL_TRIGGER_ZL          0x0080
#define WPAD_CL_BUTTON_ZL           WPAD_CL_TRIGGER_ZL
#define WPAD_CL_RESERVED            0x0100
#define WPAD_CL_TRIGGER_R           0x0200
#define WPAD_CL_BUTTON_R            WPAD_CL_TRIGGER_R
#define WPAD_CL_BUTTON_PLUS         0x0400
#define WPAD_CL_BUTTON_HOME         0x0800
#define WPAD_CL_BUTTON_MINUS        0x1000
#define WPAD_CL_TRIGGER_L           0x2000
#define WPAD_CL_BUTTON_L            WPAD_CL_TRIGGER_L
#define WPAD_CL_BUTTON_DOWN         0x4000
#define WPAD_CL_BUTTON_RIGHT        0x8000

// for compatibility
#define WPAD_BUTTON_SELECT          WPAD_BUTTON_MINUS
#define WPAD_BUTTON_START           WPAD_BUTTON_PLUS
#define WPAD_BUTTON_SMALL_B         WPAD_BUTTON_2
#define WPAD_BUTTON_SMALL_A         WPAD_BUTTON_1
#define WPAD_BUTTON_Z1              WPAD_BUTTON_Z
#define WPAD_BUTTON_Z2              WPAD_BUTTON_C

typedef struct WPADFSStatus
{
    u16       button;
    s16       accX;
    s16       accY;
    s16       accZ;
    DPDObject obj[WPAD_DPD_MAX_OBJECTS];
    u8        dev;
    s8        err;
    s16       fsAccX;
    s16       fsAccY;
    s16       fsAccZ;
    s8        fsStickX;
    s8        fsStickY;
} WPADFSStatus;

typedef struct DPDObject
{
s16 x;
s16 y;
u16 size;
u8  traceId;
} DPDObject;

Elements

button When a Wii remote button is pressed, the corresponding bit (WPAD_BUTTON_*) is set to 1.
accX Output of the Wii remote's motion sensor's x-component. The resolution is 1024. A value of 0 corresponds to 0G (outputs in the range of -512 <= accX < 512).
accY Output of the Wii remote's motion sensor's y-component. The resolution is the same as for accX.
accZ Output of the Wii remote's motion sensor's z-component. The resolution is the same as for accX.
obj[ ].x The x-coordinate of the center of mass for the object obtained with the pointer. The resolution is 1024.
obj[ ].y The y-coordinate of the center of mass for the object obtained with the pointer. The resolution is 768.
obj[ ].size The size of the object obtained with the pointer. The resolution is 128*96.
obj[ ].traceId The trace ID of the object obtained with the pointer.
dev The controller type.
err The controller error status.
fsAccX Output of the Nunchuk controller's motion sensor's x-component. The resolution is 1024. A value of 0 corresponds to 0G=0 (outputs in the range of -512 <= fsAccX < 512).
fsAccY Output of the Nunchuk controller's motion sensor's y-component. The resolution is the same as for fsAccX.
fsAccZ Output of the Nunchuk controller's motion sensor's z-component. The resolution is the same as for fsAccX.
fsStickX Translation data for the x-axis of the 3D stick on the Nunchuk is received. The resolution is 256 (Outputs in the range of -128 <= fsStickX < 128).
fsStickY Translation data for the y-axis of the 3D stick on the Nunchuk is received. The resolution is the same as for fsStickX.

Return Values

Number of Standard Controllers

The maximum number of Wii remotes that can connect is defined as a macro constant.

WPAD_MAX_CONTROLLERS The maximum number of Wii remotes that can connect.

Button Input

Button inputs are defined with the following macro constants.

WPAD_BUTTON_UP +Control Pad UP on the Wii remote is being pressed.
WPAD_BUTTON_DOWN +Control Pad DOWN on the Wii remote is being pressed.
WPAD_BUTTON_LEFT +Control Pad LEFT on the Wii remote is being pressed.
WPAD_BUTTON_RIGHT +Control Pad RIGHT on the Wii remote is being pressed.
WPAD_BUTTON_A The A Button on the Wii remote is being pressed.
WPAD_BUTTON_B The B Button on the Wii remote is being pressed.
WPAD_BUTTON_1 The 1 Button on the Wii remote is being pressed.
WPAD_BUTTON_2 The 2 Button on the Wii remote is being pressed.
WPAD_BUTTON_MINUS The - (minus) Button on the Wii remote is being pressed.
WPAD_BUTTON_PLUS The + (plus) Button on the Wii remote is being pressed.
WPAD_BUTTON_HOME HOME on the Wii remote is being pressed.
WPAD_BUTTON_Z The Z Button on the Nunchuk is being pressed.
WPAD_BUTTON_C The C Button on the Nunchuk is being pressed.

Pointer

The pointer specifications are defined as macro constants.

WPAD_DPD_MAX_OBJECTS The maximum number of objects that the pointer can detect simultaneously.
WPAD_DPD_ANGLE The pointer view angle (in degrees).
WPAD_DPD_IMG_RESO_WX Pointer resolution along the x-axis.
WPAD_DPD_IMG_RESO_WY Pointer resolution along the y-axis.

Motion Sensor

The motion sensor specifications are defined as macro constants.

WPAD_ACC_RESO The resolution of the Wii remote motion sensor.

Controller Type

Controller types are defined with the following macro constants.

WPAD_DEV_NOT_FOUND Nothing is connected to the specified channel.
WPAD_DEV_CORE Wii remote.
WPAD_DEV_FREESTYLE Nunchuk Style.
WPAD_DEV_CLASSIC Classic Style.
WPAD_DEV_FUTURE A device that will be supported in the future. The device is legitimate, but this External Extension Controller cannot be used with this title. It may be operated as a Wii remote.
WPAD_DEV_NOT_SUPPORTED A device that cannot be used. This type is selected when device recognition fails or an illegal device is plugged in. It may be operated as a Wii remote.
WPAD_DEV_UNKNOWN Unknown device. This type is selected during the period between insertion of an External Extension Controller and completion of the recognition process. It may be operated as a Wii remote.

Error Status

Error statuses are defined with the following macro constants.

WPAD_ERR_NONE Indicates the Wii remote is connected. The WPADFSStatus structure contains valid data.
WPAD_ERR_NO_CONTROLLER The Wii remote is not connected. The WPADFSStatus structure does not contain valid data. (Members other than err are undefined.)
WPAD_ERR_BUSY Processing is being carried out for the Wii remote. Only Wii remote button information is valid for the WPADFSStatus structure.
WPAD_ERR_TRANSFER An issue occurred during communications. The WPADFSStatus structure does not contain valid data. (Members other than err are undefined.)
WPAD_ERR_INVALID The data format of data received from the Wii remote differs from that set by the WPADSetDataFormat function. (Structure members other than err are undefined.)
WPAD_ERR_CORRUPTED The data in the External Extension Controller is corrupted. The structure members of the External Extension Controller are undefined.

Description

The WPADFSStatus structure represents the status of the Nunchuk style. The tables above describe the information that is obtained.

The Wii remote is equipped with +Control Pad, A, B, 1, 2, - (minus), + (plus), and HOME digital buttons; the Nunchuk is equipped with Z and C digital buttons.

Object data items are stored in the obj array in the order that they are detected by the pointer. The pointer scans the image captured by sensor internally from top left to bottom right and outputs object data in the order detected. At the same time, trace ID(s) are assigned in the order that the objects are detected.

The trace ID helps to determine whether previously obtained data is the same as the currently obtained data. Consider a case where objects A (trace ID=0) and B (trace ID=1) are detected as A and B, respectively, by the previous scan, and then they are detected as B and A, respectively, after the pointer is moved. The output order for the current scan is the reverse of the previous one. However, the trace IDs are in the order of B (using the previously assigned trace ID of 1) and A (using the previously assigned trace ID of 0), and the fact that the data is the same is preserved.

Revision History

2013/05/08 Automated cleanup pass.
2011/12/19 Replaced wpad definitions WPAD_CL_TRIGGER_ZR, WPAD_CL_TRIGGER_ZL, WPAD_CL_TRIGGER_R, WPAD_CL_TRIGGER_L with WPAD_CL_BUTTON_ZR, WPAD_CL_BUTTON_ZL, WPAD_CL_BUTTON_R, WPAD_CL_BUTTON_L
2006/09/22 Added WPAD_ERR_CORRUPTED.
2006/08/15 Changed the description of WPAD_ERR_INVALID.
2006/06/19 Added define, changed names of game remote controls, changed the name of the External Extension Controller, changed names of buttons, changed the order of members in the structure, changed descriptions during error status for the wireless library, deleted defined macros for motion sensor gravity acceleration.
2005/10/27 Initial version.


CONFIDENTIAL