diff --git a/WiiUseJ/src/wiiusej/WiiUseApiManager.java b/WiiUseJ/src/wiiusej/WiiUseApiManager.java index f336d49..435c68d 100644 --- a/WiiUseJ/src/wiiusej/WiiUseApiManager.java +++ b/WiiUseJ/src/wiiusej/WiiUseApiManager.java @@ -516,7 +516,7 @@ public class WiiUseApiManager extends Thread { * Notify WiiUseApiListeners that an event occured. * * @param evt - * WiimoteEvent occured + * GenericEvent occured */ private void notifyWiiUseApiListener(WiiUseApiEvent evt) { for (WiiUseApiListener listener : getWiiUseApiListeners()) { diff --git a/WiiUseJ/src/wiiusej/Wiimote.java b/WiiUseJ/src/wiiusej/Wiimote.java index 9504aee..dbbe291 100644 --- a/WiiUseJ/src/wiiusej/Wiimote.java +++ b/WiiUseJ/src/wiiusej/Wiimote.java @@ -19,7 +19,7 @@ package wiiusej; import javax.swing.event.EventListenerList; import wiiusej.wiiuseapievents.DisconnectionEvent; -import wiiusej.wiiuseapievents.GenericEvent; +import wiiusej.wiiuseapievents.WiimoteEvent; import wiiusej.wiiuseapievents.StatusEvent; import wiiusej.wiiuseapievents.WiiUseApiEvent; import wiiusej.wiiuseapievents.WiiUseApiListener; @@ -265,7 +265,7 @@ public class Wiimote implements WiiUseApiListener { public void onWiiUseApiEvent(WiiUseApiEvent e) { if (e.getWiimoteId() == id) { if (e.getEventType() == WiiUseApiEvent.GENERIC_EVENT) { - notifyWiiMoteEventListeners((GenericEvent) e); + notifyWiiMoteEventListeners((WiimoteEvent) e); } else if (e.getEventType() == WiiUseApiEvent.STATUS_EVENT || e.getEventType() == WiiUseApiEvent.WIIUSE_NUNCHUK_INSERTED || e.getEventType() == WiiUseApiEvent.WIIUSE_NUNCHUK_REMOVED @@ -315,9 +315,9 @@ public class Wiimote implements WiiUseApiListener { * third the listeners for Motion sensing events. * * @param evt - * WiimoteEvent occured + * GenericEvent occured */ - private void notifyWiiMoteEventListeners(GenericEvent evt) { + private void notifyWiiMoteEventListeners(WiimoteEvent evt) { for (WiimoteListener listener : getWiiMoteEventListeners()) { listener.onButtonsEvent(evt.getButtonsEvent()); if (evt.isThereIrEvent()) { diff --git a/WiiUseJ/src/wiiusej/test/Tests.java b/WiiUseJ/src/wiiusej/test/Tests.java index 1a82547..d18ccae 100644 --- a/WiiUseJ/src/wiiusej/test/Tests.java +++ b/WiiUseJ/src/wiiusej/test/Tests.java @@ -23,12 +23,11 @@ import java.awt.event.InputEvent; import wiiusej.WiiUseApiManager; import wiiusej.Wiimote; import wiiusej.values.IRSource; -import wiiusej.wiiuseapievents.ButtonsEvent; import wiiusej.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiuseapievents.WiimoteButtonsEvent; import wiiusej.wiiuseapievents.IREvent; import wiiusej.wiiuseapievents.MotionSensingEvent; import wiiusej.wiiuseapievents.StatusEvent; -import wiiusej.wiiuseapievents.GenericEvent; import wiiusej.wiiuseapievents.WiimoteListener; /** @@ -61,7 +60,7 @@ public class Tests implements WiimoteListener { private static int nb = 0; - public void onButtonsEvent(ButtonsEvent e) { + public void onButtonsEvent(WiimoteButtonsEvent e) { if (dump == DISPLAY_EACH_VALUE) { // System.out.println("*********** WIIMOTE ID : "+ // e.getWiimoteId() + " **************"); diff --git a/WiiUseJ/src/wiiusej/test/WiiuseJGuiTest.java b/WiiUseJ/src/wiiusej/test/WiiuseJGuiTest.java index 8bac8ae..f2b129b 100644 --- a/WiiUseJ/src/wiiusej/test/WiiuseJGuiTest.java +++ b/WiiUseJ/src/wiiusej/test/WiiuseJGuiTest.java @@ -21,14 +21,15 @@ import java.awt.Robot; import java.awt.event.InputEvent; import java.util.logging.Level; import java.util.logging.Logger; -import wiiusej.utils.IRPanel; + import wiiusej.Wiimote; import wiiusej.utils.AccelerationPanel; -import wiiusej.utils.GForcePanel; import wiiusej.utils.ButtonsEventPanel; +import wiiusej.utils.GForcePanel; +import wiiusej.utils.IRPanel; import wiiusej.utils.OrientationPanel; -import wiiusej.wiiuseapievents.ButtonsEvent; import wiiusej.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiuseapievents.WiimoteButtonsEvent; import wiiusej.wiiuseapievents.IREvent; import wiiusej.wiiuseapievents.MotionSensingEvent; import wiiusej.wiiuseapievents.StatusEvent; @@ -63,7 +64,7 @@ public class WiiuseJGuiTest extends javax.swing.JFrame implements WiimoteListene this.addWindowListener(new CloseGuiTestCleanly(wiimote)); } - public void onButtonsEvent(ButtonsEvent arg0) { + public void onButtonsEvent(WiimoteButtonsEvent arg0) { if (robot != null) { if (arg0.isButtonAPressed()) { robot.mousePress(InputEvent.BUTTON1_MASK); diff --git a/WiiUseJ/src/wiiusej/utils/AccelerationPanel.java b/WiiUseJ/src/wiiusej/utils/AccelerationPanel.java index 0403255..1be340e 100644 --- a/WiiUseJ/src/wiiusej/utils/AccelerationPanel.java +++ b/WiiUseJ/src/wiiusej/utils/AccelerationPanel.java @@ -24,9 +24,10 @@ import java.awt.Image; import java.awt.RenderingHints; import java.awt.geom.AffineTransform; import java.util.ArrayList; + import wiiusej.values.RawAcceleration; -import wiiusej.wiiuseapievents.ButtonsEvent; import wiiusej.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiuseapievents.WiimoteButtonsEvent; import wiiusej.wiiuseapievents.IREvent; import wiiusej.wiiuseapievents.MotionSensingEvent; import wiiusej.wiiuseapievents.StatusEvent; @@ -129,7 +130,7 @@ public class AccelerationPanel extends javax.swing.JPanel implements WiimoteList } } - public void onButtonsEvent(ButtonsEvent arg0) { + public void onButtonsEvent(WiimoteButtonsEvent arg0) { //nothing } diff --git a/WiiUseJ/src/wiiusej/utils/ButtonsEventPanel.java b/WiiUseJ/src/wiiusej/utils/ButtonsEventPanel.java index 2a4a48f..8c0ab04 100644 --- a/WiiUseJ/src/wiiusej/utils/ButtonsEventPanel.java +++ b/WiiUseJ/src/wiiusej/utils/ButtonsEventPanel.java @@ -25,8 +25,10 @@ import java.awt.RenderingHints; import java.awt.Shape; import java.awt.Toolkit; import java.awt.geom.AffineTransform; + import wiiusej.wiiuseapievents.ButtonsEvent; import wiiusej.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiuseapievents.WiimoteButtonsEvent; import wiiusej.wiiuseapievents.IREvent; import wiiusej.wiiuseapievents.MotionSensingEvent; import wiiusej.wiiuseapievents.StatusEvent; @@ -41,7 +43,7 @@ public class ButtonsEventPanel extends javax.swing.JPanel implements WiimoteList private Image mImage;//image for double buffering private Image wiimoteImage;//image for double buffering - private ButtonsEvent buttons; + private WiimoteButtonsEvent buttons; private Color pressedColor = Color.RED; private Color heldColor = Color.ORANGE; private Color releasedColor = Color.YELLOW; @@ -250,7 +252,7 @@ public class ButtonsEventPanel extends javax.swing.JPanel implements WiimoteList } } - public void onButtonsEvent(ButtonsEvent arg0) { + public void onButtonsEvent(WiimoteButtonsEvent arg0) { setSize(wiimoteImage.getWidth(this), wiimoteImage.getHeight(this)); buttons = arg0; repaint(); diff --git a/WiiUseJ/src/wiiusej/utils/GForcePanel.java b/WiiUseJ/src/wiiusej/utils/GForcePanel.java index 9802688..c5ed5be 100644 --- a/WiiUseJ/src/wiiusej/utils/GForcePanel.java +++ b/WiiUseJ/src/wiiusej/utils/GForcePanel.java @@ -24,9 +24,10 @@ import java.awt.Image; import java.awt.RenderingHints; import java.awt.geom.AffineTransform; import java.util.ArrayList; + import wiiusej.values.GForce; -import wiiusej.wiiuseapievents.ButtonsEvent; import wiiusej.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiuseapievents.WiimoteButtonsEvent; import wiiusej.wiiuseapievents.IREvent; import wiiusej.wiiuseapievents.MotionSensingEvent; import wiiusej.wiiuseapievents.StatusEvent; @@ -149,7 +150,7 @@ public class GForcePanel extends javax.swing.JPanel implements WiimoteListener { } } - public void onButtonsEvent(ButtonsEvent arg0) { + public void onButtonsEvent(WiimoteButtonsEvent arg0) { //nothing } diff --git a/WiiUseJ/src/wiiusej/utils/IRPanel.java b/WiiUseJ/src/wiiusej/utils/IRPanel.java index 4526206..2b14f9f 100644 --- a/WiiUseJ/src/wiiusej/utils/IRPanel.java +++ b/WiiUseJ/src/wiiusej/utils/IRPanel.java @@ -24,8 +24,9 @@ import java.awt.Image; import java.awt.RenderingHints; import java.awt.Shape; import java.awt.geom.AffineTransform; -import wiiusej.wiiuseapievents.ButtonsEvent; + import wiiusej.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiuseapievents.WiimoteButtonsEvent; import wiiusej.wiiuseapievents.IREvent; import wiiusej.wiiuseapievents.MotionSensingEvent; import wiiusej.wiiuseapievents.StatusEvent; @@ -129,7 +130,7 @@ public class IRPanel extends javax.swing.JPanel implements WiimoteListener { } } - public void onButtonsEvent(ButtonsEvent arg0) { + public void onButtonsEvent(WiimoteButtonsEvent arg0) { //nothing repaint(); } diff --git a/WiiUseJ/src/wiiusej/utils/OrientationPanel.java b/WiiUseJ/src/wiiusej/utils/OrientationPanel.java index b50a2ce..a4fdd1c 100644 --- a/WiiUseJ/src/wiiusej/utils/OrientationPanel.java +++ b/WiiUseJ/src/wiiusej/utils/OrientationPanel.java @@ -24,9 +24,10 @@ import java.awt.Image; import java.awt.RenderingHints; import java.awt.geom.AffineTransform; import java.util.ArrayList; + import wiiusej.values.Orientation; -import wiiusej.wiiuseapievents.ButtonsEvent; import wiiusej.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiuseapievents.WiimoteButtonsEvent; import wiiusej.wiiuseapievents.IREvent; import wiiusej.wiiuseapievents.MotionSensingEvent; import wiiusej.wiiuseapievents.StatusEvent; @@ -153,7 +154,7 @@ public class OrientationPanel extends javax.swing.JPanel implements WiimoteListe } } - public void onButtonsEvent(ButtonsEvent arg0) { + public void onButtonsEvent(WiimoteButtonsEvent arg0) { //nothing } diff --git a/WiiUseJ/src/wiiusej/wiiuseapievents/ButtonsEvent.java b/WiiUseJ/src/wiiusej/wiiuseapievents/ButtonsEvent.java index ce78551..f9e3bae 100644 --- a/WiiUseJ/src/wiiusej/wiiuseapievents/ButtonsEvent.java +++ b/WiiUseJ/src/wiiusej/wiiuseapievents/ButtonsEvent.java @@ -20,27 +20,8 @@ package wiiusej.wiiuseapievents; * Class which represents a buttons event. * @author guiguito */ -public class ButtonsEvent extends WiimoteEvent{ - - /* Buttons MACRO */ - private static short WIIMOTE_BUTTON_TWO = 0x0001; - private static short WIIMOTE_BUTTON_ONE = 0x0002; - private static short WIIMOTE_BUTTON_B = 0x0004; - private static short WIIMOTE_BUTTON_A = 0x0008; - private static short WIIMOTE_BUTTON_MINUS = 0x0010; - private static short WIIMOTE_BUTTON_ZACCEL_BIT6 = 0x0020; - private static short WIIMOTE_BUTTON_ZACCEL_BIT7 = 0x0040; - private static short WIIMOTE_BUTTON_HOME = 0x0080; - private static short WIIMOTE_BUTTON_LEFT = 0x0100; - private static short WIIMOTE_BUTTON_RIGHT = 0x0200; - private static short WIIMOTE_BUTTON_DOWN = 0x0400; - private static short WIIMOTE_BUTTON_UP = 0x0800; - private static short WIIMOTE_BUTTON_PLUS = 0x1000; - private static short WIIMOTE_BUTTON_ZACCEL_BIT4 = 0x2000; - private static short WIIMOTE_BUTTON_ZACCEL_BIT5 = 0x4000; - private static int WIIMOTE_BUTTON_UNKNOWN = 0x8000; - private static short WIIMOTE_BUTTON_ALL = 0x1F9F; - +public abstract class ButtonsEvent extends GenericEvent{ + /* Buttons */ private short buttonsJustPressed = 0; private short buttonsJustReleased = 0; @@ -103,223 +84,26 @@ public class ButtonsEvent extends WiimoteEvent{ /** **************** BUTTONS Methods ***************** */ /* generic button functions */ - private boolean buttonTest(short buttonBitsDefinition, short buttons) { + protected boolean buttonTest(short buttonBitsDefinition, short buttons) { return (buttons & buttonBitsDefinition) == buttonBitsDefinition; } - private boolean isButtonJustPressed(short buttonBitsDefinition) { + protected boolean isButtonJustPressed(short buttonBitsDefinition) { return buttonTest(buttonBitsDefinition, buttonsJustPressed) && !isButtonHeld(buttonBitsDefinition); } - private boolean isButtonJustReleased(short buttonBitsDefinition) { + protected boolean isButtonJustReleased(short buttonBitsDefinition) { return buttonTest(buttonBitsDefinition, buttonsJustReleased); } - private boolean isButtonHeld(short buttonBitsDefinition) { + protected boolean isButtonHeld(short buttonBitsDefinition) { return buttonTest(buttonBitsDefinition, buttonsHeld); } - private boolean isButtonPressed(short buttonBitsDefinition) { + protected boolean isButtonPressed(short buttonBitsDefinition) { return isButtonHeld(buttonBitsDefinition)||isButtonJustPressed(buttonBitsDefinition); - } - /* Button ONE */ - - public boolean isButtonOneJustPressed() { - return isButtonJustPressed(WIIMOTE_BUTTON_ONE); - } - - public boolean isButtonOneJustReleased() { - return isButtonJustReleased(WIIMOTE_BUTTON_ONE); - } - - public boolean isButtonOneHeld() { - return isButtonHeld(WIIMOTE_BUTTON_ONE); - } - - public boolean isButtonOnePressed() { - return isButtonPressed(WIIMOTE_BUTTON_ONE); - } - - /* Button TWO */ - - public boolean isButtonTwoJustPressed() { - return isButtonJustPressed(WIIMOTE_BUTTON_TWO); - } - - public boolean isButtonTwoJustReleased() { - return isButtonJustReleased(WIIMOTE_BUTTON_TWO); - } - - public boolean isButtonTwoHeld() { - return isButtonHeld(WIIMOTE_BUTTON_TWO); - } - - public boolean isButtonTwoPressed() { - return isButtonPressed(WIIMOTE_BUTTON_TWO); - } - - /* Button A */ - - public boolean isButtonAJustPressed() { - return isButtonJustPressed(WIIMOTE_BUTTON_A); - } - - public boolean isButtonAJustReleased() { - return isButtonJustReleased(WIIMOTE_BUTTON_A); - } - - public boolean isButtonAHeld() { - return isButtonHeld(WIIMOTE_BUTTON_A); - } - - public boolean isButtonAPressed() { - return isButtonPressed(WIIMOTE_BUTTON_A); - } - - /* Button B */ - - public boolean isButtonBJustPressed() { - return isButtonJustPressed(WIIMOTE_BUTTON_B); - } - - public boolean isButtonBJustReleased() { - return isButtonJustReleased(WIIMOTE_BUTTON_B); - } - - public boolean isButtonBHeld() { - return isButtonHeld(WIIMOTE_BUTTON_B); - } - - public boolean isButtonBPressed() { - return isButtonPressed(WIIMOTE_BUTTON_B); - } - - /* Button LEFT */ - - public boolean isButtonLeftJustPressed() { - return isButtonJustPressed(WIIMOTE_BUTTON_LEFT); - } - - public boolean isButtonLeftJustReleased() { - return isButtonJustReleased(WIIMOTE_BUTTON_LEFT); - } - - public boolean isButtonLeftHeld() { - return isButtonHeld(WIIMOTE_BUTTON_LEFT); - } - - public boolean isButtonLeftPressed() { - return isButtonPressed(WIIMOTE_BUTTON_LEFT); - } - - /* Button RIGHT */ - - public boolean isButtonRightJustPressed() { - return isButtonJustPressed(WIIMOTE_BUTTON_RIGHT); - } - - public boolean isButtonRightJustReleased() { - return isButtonJustReleased(WIIMOTE_BUTTON_RIGHT); - } - - public boolean isButtonRightHeld() { - return isButtonHeld(WIIMOTE_BUTTON_RIGHT); - } - - public boolean isButtonRightPressed() { - return isButtonPressed(WIIMOTE_BUTTON_RIGHT); - } - - /* Button UP */ - - public boolean isButtonUpJustPressed() { - return isButtonJustPressed(WIIMOTE_BUTTON_UP); - } - - public boolean isButtonUpJustReleased() { - return isButtonJustReleased(WIIMOTE_BUTTON_UP); - } - - public boolean isButtonUpHeld() { - return isButtonHeld(WIIMOTE_BUTTON_UP); - } - - public boolean isButtonUpPressed() { - return isButtonPressed(WIIMOTE_BUTTON_UP); - } - - /* Button DOWN */ - - public boolean isButtonDownJustPressed() { - return isButtonJustPressed(WIIMOTE_BUTTON_DOWN); - } - - public boolean isButtonDownJustReleased() { - return isButtonJustReleased(WIIMOTE_BUTTON_DOWN); - } - - public boolean isButtonDownHeld() { - return isButtonHeld(WIIMOTE_BUTTON_DOWN); - } - - public boolean isButtonDownPressed() { - return isButtonPressed(WIIMOTE_BUTTON_DOWN); - } - - /* Button - */ - - public boolean isButtonMinusJustPressed() { - return isButtonJustPressed(WIIMOTE_BUTTON_MINUS); - } - - public boolean isButtonMinusJustReleased() { - return isButtonJustReleased(WIIMOTE_BUTTON_MINUS); - } - - public boolean isButtonMinusHeld() { - return isButtonHeld(WIIMOTE_BUTTON_MINUS); - } - - public boolean isButtonMinusPressed() { - return isButtonPressed(WIIMOTE_BUTTON_MINUS); - } - - /* Button + */ - - public boolean isButtonPlusJustPressed() { - return isButtonJustPressed(WIIMOTE_BUTTON_PLUS); - } - - public boolean isButtonPlusJustReleased() { - return isButtonJustReleased(WIIMOTE_BUTTON_PLUS); - } - - public boolean isButtonPlusHeld() { - return isButtonHeld(WIIMOTE_BUTTON_PLUS); - } - - public boolean isButtonPlusPressed() { - return isButtonPressed(WIIMOTE_BUTTON_PLUS); - } - - /* Button HOME */ - - public boolean isButtonHomeJustPressed() { - return isButtonJustPressed(WIIMOTE_BUTTON_HOME); - } - - public boolean isButtonHomeJustReleased() { - return isButtonJustReleased(WIIMOTE_BUTTON_HOME); - } - - public boolean isButtonHomeHeld() { - return isButtonHeld(WIIMOTE_BUTTON_HOME); - } - - public boolean isButtonHomePressed() { - return isButtonPressed(WIIMOTE_BUTTON_HOME); - } + } @Override public String toString() { diff --git a/WiiUseJ/src/wiiusej/wiiuseapievents/DisconnectionEvent.java b/WiiUseJ/src/wiiusej/wiiuseapievents/DisconnectionEvent.java index 341b626..0a0c094 100644 --- a/WiiUseJ/src/wiiusej/wiiuseapievents/DisconnectionEvent.java +++ b/WiiUseJ/src/wiiusej/wiiuseapievents/DisconnectionEvent.java @@ -37,7 +37,6 @@ public class DisconnectionEvent extends WiiUseApiEvent { String out = ""; /* Status */ out += "/*********** DISCONNECTION EVENT : WIIMOTE ID :" + super.getWiimoteId() + " ********/\n"; - return out; } diff --git a/WiiUseJ/src/wiiusej/wiiuseapievents/EventsGatherer.java b/WiiUseJ/src/wiiusej/wiiuseapievents/EventsGatherer.java index aae5ca2..d289f93 100644 --- a/WiiUseJ/src/wiiusej/wiiuseapievents/EventsGatherer.java +++ b/WiiUseJ/src/wiiusej/wiiuseapievents/EventsGatherer.java @@ -25,7 +25,7 @@ public class EventsGatherer { private WiiUseApiEvent[] events; private int index = 0; - private GenericEvent genericEvent = null; + private WiimoteEvent genericEvent = null; /** * Create EventsGatherer. @@ -62,7 +62,7 @@ public class EventsGatherer { */ public void prepareWiiMoteEvent(int id, short buttonsJustPressed, short buttonsJustReleased, short buttonsHeld) { - genericEvent = new GenericEvent(id, buttonsJustPressed, + genericEvent = new WiimoteEvent(id, buttonsJustPressed, buttonsJustReleased, buttonsHeld); } @@ -226,6 +226,28 @@ public class EventsGatherer { DisconnectionEvent evt = new DisconnectionEvent(id); addEvent(evt); } + + /** + * Add a NunchukInsertedEvent to the gatherer. + * + * @param id + * id of the wiimote + */ + public void addNunchukInsertedEvent(int id) { + NunchukInsertedEvent evt = new NunchukInsertedEvent(id); + addEvent(evt); + } + + /** + * Add a NunchukRemovedEvent to the gatherer. + * + * @param id + * id of the wiimote + */ + public void addNunchukRemovedEvent(int id) { + NunchukRemovedEvent evt = new NunchukRemovedEvent(id); + addEvent(evt); + } /** * Return an array containing the events. diff --git a/WiiUseJ/src/wiiusej/wiiuseapievents/GenericEvent.java b/WiiUseJ/src/wiiusej/wiiuseapievents/GenericEvent.java index d9142a2..39594ea 100644 --- a/WiiUseJ/src/wiiusej/wiiuseapievents/GenericEvent.java +++ b/WiiUseJ/src/wiiusej/wiiuseapievents/GenericEvent.java @@ -17,219 +17,43 @@ package wiiusej.wiiuseapievents; /** - * Class that is a bean to be filled by the wiiuse API. + * Abstract mother class representing an event with a wiimote id. * * @author guiguito */ -public class GenericEvent extends WiiUseApiEvent { - - ButtonsEvent buttonsEvent = null; - IREvent infraredEvent = null; - MotionSensingEvent motionSensingEvent = null; - +public abstract class GenericEvent { + + /* ID */ + private int wiimoteId = -1; + /** - * Construct the Wiimote setting up the id. + * Construct the WiiUseApiEvent setting up the id. * * @param id - * the Wiimote id + * the Wiimote id */ public GenericEvent(int id) { - super(id, WiiUseApiEvent.GENERIC_EVENT); + wiimoteId = id; } - + /** - * Construct the Wiimote setting up the id and the buttons. + * Get Wiimote ID * - * @param id - * the Wiimote id - * @param buttonsJustPressed - * buttons just pressed - * @param buttonsJustReleased - * buttons just released - * @param buttonsHeld - * buttons held + * @return the wiimote id. */ - public GenericEvent(int id, short buttonsJustPressed, - short buttonsJustReleased, short buttonsHeld) { - super(id, WiiUseApiEvent.GENERIC_EVENT); - buttonsEvent = new ButtonsEvent(id, buttonsJustPressed, - buttonsJustReleased, buttonsHeld); + public int getWiimoteId() { + return wiimoteId; } - + /** - * Tell if there is an IR Event. + * Set Wiimote ID * - * @return TRUE if there is an IR event. + * @param wiimoteId + * id of the wiimote */ - public boolean isThereIrEvent() { - return infraredEvent != null; + void setWiimoteId(int wiimoteId) { + this.wiimoteId = wiimoteId; } - - /** - * Tell if there is a motion sensing Event. - * - * @return TRUE if there is a motion sensing event. - */ - public boolean isThereMotionSensingEvent() { - return motionSensingEvent != null; - } - - /** - * Get buttons event. - * - * @return the buttons event. - */ - public ButtonsEvent getButtonsEvent() { - return buttonsEvent; - } - - /** - * Get IR event. - * - * @return the IR event if there is one or null. - */ - public IREvent getIREvent() { - return infraredEvent; - } - - /** - * Get motion sensing event. - * - * @return the motion sensing event if there is one or null. - */ - public MotionSensingEvent getMotionSensingEvent() { - return motionSensingEvent; - } - - /** - * Prepare an IR event to populate. - * - * @param x - * calculated X coordinate. - * @param y - * calculated Y coordinate. - * @param z - * calculated distance. - * @param ax - * absolute X coordinate. - * @param ay - * absolute Y coordinate - * @param xVRes - * IR virtual screen x resolution. - * @param yVRes - * IR virtual screen y resolution. - * @param xOffset - * IR X correction offset. - * @param yOffset - * IR Y correction offset. - * @param sensorBarPostion - * aspect ratio of the screen. - * @param screenAsPectRatio - * IR sensor bar position. - * @param irSensitivity - * Sensitivity of the infrared camera. - * @param distance - * Pixel Distance between first two dots - */ - public void prepareIRevent(int x, int y, int z, int ax, int ay, int xVRes, - int yVRes, int xOffset, int yOffset, short sensorBarPostion, - short screenAsPectRatio, short irSensitivity, float distance) { - if (infraredEvent == null) { - infraredEvent = new IREvent(getWiimoteId(), x, y, z, ax, ay, xVRes, - yVRes, xOffset, yOffset, sensorBarPostion, - screenAsPectRatio, irSensitivity, distance); - } - } - - /** - * Add an IR point to the generic event. Create an IR Event if it's not - * created yet. - * - * @param x - * x coordinates. - * @param y - * y coordinates - * @param rx - * raw X coordinate (0-1023). - * @param ry - * raw Y coordinate (0-1023). - * @param size - * size of the IR dot (0-15). - */ - public void addIRpoint(int x, int y, short rx, short ry, short size) { - if (infraredEvent != null) - infraredEvent.addIRpoint(x, y, rx, ry, size); - } - - /** - * Set the Motion Sensing Event. - * - * @param orientationThreshold - * value of the minimum angle between two events with the - * accelerometer - * @param accelerationThreshold - * value of the value variation between two events with the - * accelerometer - * @param smoothingState - * true if smoothing flag is activated - * @param alphaSmooth - * value of the alpha smoothing parameter - * @param r - * roll - * @param p - * pitch - * @param ya - * yaw - * @param ar - * absolute roll - * @param ap - * absolute pitch - * @param x - * gravity force on x axis - * @param y - * gravity force on y axis - * @param z - * gravity force on z axis - * @param xx - * raw acceleration on x axis - * @param yy - * raw acceleration on y axis - * @param zz - * raw acceleration on z axis - */ - public void setMotionSensingEvent(float orientationThreshold, - int accelerationThreshold, boolean smoothingState, - float alphaSmooth, float r, float p, float ya, float ar, float ap, - float x, float y, float z, short xx, short yy, short zz) { - motionSensingEvent = new MotionSensingEvent(getWiimoteId(), - orientationThreshold, accelerationThreshold, smoothingState, - alphaSmooth, r, p, ya, ar, ap, x, y, z, xx, yy, zz); - } - - @Override - public String toString() { - String out = ""; - /* Status */ - out += "/*********** GENERIC EVENT : WIIMOTE ID :" - + super.getWiimoteId() + " ********/\n"; - - out += buttonsEvent; - - if (infraredEvent != null) { - out += infraredEvent; - } else { - out += "/******** IR Tracking ********/\n"; - out += "--- Active : false\n"; - } - - if (motionSensingEvent != null) { - out += motionSensingEvent; - } else { - out += "/******** Motion sensing ********/\n"; - out += "--- Motion sensing : false \n"; - } - - return out; - } - + + public abstract String toString(); } diff --git a/WiiUseJ/src/wiiusej/wiiuseapievents/IREvent.java b/WiiUseJ/src/wiiusej/wiiuseapievents/IREvent.java index 28add02..cc9bb19 100644 --- a/WiiUseJ/src/wiiusej/wiiuseapievents/IREvent.java +++ b/WiiUseJ/src/wiiusej/wiiuseapievents/IREvent.java @@ -23,7 +23,7 @@ import wiiusej.values.IRSource; * * @author guiguito */ -public class IREvent extends WiimoteEvent { +public class IREvent extends GenericEvent { /* IR Tracking */ private IRSource[] IRPoints; @@ -285,13 +285,15 @@ public class IREvent extends WiimoteEvent { out += "--- Active : true\n"; out += "--- calculated X coordinate : " + x + "\n"; out += "--- calculated Y coordinate : " + y + "\n"; - out += "--- calculated distance : " + z + "\n"; + out += "--- calculated Z coordinate : " + z + "\n"; + out += "--- calculated distance : " + distance + "\n"; out += "--- absolute X coordinate : " + ax + "\n"; out += "--- absolute Y coordinate : " + ay + "\n"; out += "--- IR virtual screen x resolution : " + xVRes + "\n"; out += "--- IR virtual screen y resolution : " + yVRes + "\n"; out += "--- IR X correction offset : " + xOffset + "\n"; out += "--- IR Y correction offset : " + yOffset + "\n"; + out += "--- IR Sensitivity (between 1-5) : " + irSensitivity + "\n"; if (isScreenAspectRatio43()) { out += "--- aspect ratio of the screen : 4/3\n"; } else if (isScreenAspectRatio169()) { @@ -301,7 +303,7 @@ public class IREvent extends WiimoteEvent { out += "--- IR sensor bar position. : Above\n"; } else if (isSensorBarBelow()) { out += "--- IR sensor bar position. : Below\n"; - } + } out += "--- Seen points\n"; for (int i = 0; i < IRPoints.length; i++) { if (IRPoints[i] != null) { diff --git a/WiiUseJ/src/wiiusej/wiiuseapievents/MotionSensingEvent.java b/WiiUseJ/src/wiiusej/wiiuseapievents/MotionSensingEvent.java index b709ff3..eb5bcb5 100644 --- a/WiiUseJ/src/wiiusej/wiiuseapievents/MotionSensingEvent.java +++ b/WiiUseJ/src/wiiusej/wiiuseapievents/MotionSensingEvent.java @@ -25,7 +25,7 @@ import wiiusej.values.RawAcceleration; * * @author guiguito */ -public class MotionSensingEvent extends WiimoteEvent { +public class MotionSensingEvent extends GenericEvent { /* Motion Sensing */ private Orientation orientation; diff --git a/WiiUseJ/src/wiiusej/wiiuseapievents/NunchukButtonsEvent.java b/WiiUseJ/src/wiiusej/wiiuseapievents/NunchukButtonsEvent.java new file mode 100644 index 0000000..8c0205f --- /dev/null +++ b/WiiUseJ/src/wiiusej/wiiuseapievents/NunchukButtonsEvent.java @@ -0,0 +1,86 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.wiiuseapievents; + +/** + * Class which represents a buttons event for a generic event. It means buttons + * from a wiimote. + * + * @author guiguito + */ +public class NunchukButtonsEvent extends ButtonsEvent { + + private static short NUNCHUK_BUTTON_Z = 0x01; + private static short NUNCHUK_BUTTON_C = 0x02; + private static short NUNCHUK_BUTTON_ALL = 0x03; + + /** + * Constructor of the nunchuk button Event. + * @param id id of the wiimote. + * @param buttonsJustPressed buttons just pressed. + * @param buttonsJustReleased buttons just released. + * @param buttonsHeld buttons just pressed. + */ + public NunchukButtonsEvent(int id, short buttonsJustPressed, + short buttonsJustReleased, short buttonsHeld) { + super(id, buttonsJustPressed, buttonsJustReleased, buttonsHeld); + } + + /* Button Z */ + + public boolean isButtonZJustPressed() { + return isButtonJustPressed(NUNCHUK_BUTTON_Z); + } + + public boolean isButtonZJustReleased() { + return isButtonJustReleased(NUNCHUK_BUTTON_Z); + } + + public boolean isButtonZeHeld() { + return isButtonHeld(NUNCHUK_BUTTON_Z); + } + + public boolean isButtonZPressed() { + return isButtonPressed(NUNCHUK_BUTTON_Z); + } + + /* Button Z */ + + public boolean isButtonCJustPressed() { + return isButtonJustPressed(NUNCHUK_BUTTON_C); + } + + public boolean isButtonCJustReleased() { + return isButtonJustReleased(NUNCHUK_BUTTON_C); + } + + public boolean isButtonCHeld() { + return isButtonHeld(NUNCHUK_BUTTON_C); + } + + public boolean isButtonCPressed() { + return isButtonPressed(NUNCHUK_BUTTON_C); + } + + @Override + public String toString() { + return "/******** Buttons for Nunchhuk Event ********/\n" + + super.toString(); + } + + +} diff --git a/WiiUseJ/src/wiiusej/wiiuseapievents/NunchukInsertedEvent.java b/WiiUseJ/src/wiiusej/wiiuseapievents/NunchukInsertedEvent.java new file mode 100644 index 0000000..6ec2b92 --- /dev/null +++ b/WiiUseJ/src/wiiusej/wiiuseapievents/NunchukInsertedEvent.java @@ -0,0 +1,45 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.wiiuseapievents; + +/** + * Event that represents the connection of a nunchuk to a wiimote. + * @author guiguito + * + */ +public class NunchukInsertedEvent extends WiiUseApiEvent { + + /** + * Construct the NunchukInsertedEvent setting up the id. + * @param id id of the wiimote. + */ + public NunchukInsertedEvent(int id) { + super(id, WIIUSE_NUNCHUK_INSERTED); + } + + /* (non-Javadoc) + * @see wiiusej.wiiuseapievents.WiiUseApiEvent#toString() + */ + @Override + public String toString() { + String out = ""; + /* Status */ + out += "/*********** NUNCHUK INSERTED EVENT : WIIMOTE ID :" + super.getWiimoteId() + " ********/\n"; + return out; + } + +} diff --git a/WiiUseJ/src/wiiusej/wiiuseapievents/NunchukRemovedEvent.java b/WiiUseJ/src/wiiusej/wiiuseapievents/NunchukRemovedEvent.java new file mode 100644 index 0000000..66dde16 --- /dev/null +++ b/WiiUseJ/src/wiiusej/wiiuseapievents/NunchukRemovedEvent.java @@ -0,0 +1,44 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.wiiuseapievents; + +/** + * Event that represents the connection of a nunchuk to a wiimote. + * @author guiguito + */ +public class NunchukRemovedEvent extends WiiUseApiEvent { + + /** + * Construct the NunchukInsertedEvent setting up the id. + * @param id id of the wiimote. + */ + public NunchukRemovedEvent(int id) { + super(id, WIIUSE_NUNCHUK_REMOVED); + } + + /* (non-Javadoc) + * @see wiiusej.wiiuseapievents.WiiUseApiEvent#toString() + */ + @Override + public String toString() { + String out = ""; + /* Status */ + out += "/*********** NUNCHUK REMOVED EVENT : WIIMOTE ID :" + super.getWiimoteId() + " ********/\n"; + return out; + } + +} diff --git a/WiiUseJ/src/wiiusej/wiiuseapievents/WiiUseApiEvent.java b/WiiUseJ/src/wiiusej/wiiuseapievents/WiiUseApiEvent.java index 880c632..d8be3b4 100644 --- a/WiiUseJ/src/wiiusej/wiiuseapievents/WiiUseApiEvent.java +++ b/WiiUseJ/src/wiiusej/wiiuseapievents/WiiUseApiEvent.java @@ -21,7 +21,7 @@ package wiiusej.wiiuseapievents; * * @author guiguito */ -public abstract class WiiUseApiEvent extends WiimoteEvent{ +public abstract class WiiUseApiEvent extends GenericEvent{ public static int GENERIC_EVENT = 1; public static int STATUS_EVENT = 2; diff --git a/WiiUseJ/src/wiiusej/wiiuseapievents/WiiUseApiListener.java b/WiiUseJ/src/wiiusej/wiiuseapievents/WiiUseApiListener.java index 3f6bb22..dd7904d 100644 --- a/WiiUseJ/src/wiiusej/wiiuseapievents/WiiUseApiListener.java +++ b/WiiUseJ/src/wiiusej/wiiuseapievents/WiiUseApiListener.java @@ -28,7 +28,7 @@ public interface WiiUseApiListener extends java.util.EventListener { /** * Method called when a WiiUseApiEvent occurs. * A WiiUseApiEvent can be : - * - GenericEvent (Storing ButtonsEvent and + * - WiimoteEvent (Storing ButtonsEvent and * eventually IREvent and MotionSensingEvent) * - StatusEvent * - DisconnectionEvent diff --git a/WiiUseJ/src/wiiusej/wiiuseapievents/WiimoteButtonsEvent.java b/WiiUseJ/src/wiiusej/wiiuseapievents/WiimoteButtonsEvent.java new file mode 100644 index 0000000..93abee8 --- /dev/null +++ b/WiiUseJ/src/wiiusej/wiiuseapievents/WiimoteButtonsEvent.java @@ -0,0 +1,262 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.wiiuseapievents; + +/** + * Class which represents a buttons event for a generic event. It means buttons + * from a wiimote. + * + * @author guiguito + */ +public class WiimoteButtonsEvent extends ButtonsEvent { + + /* Buttons MACRO */ + private static short WIIMOTE_BUTTON_TWO = 0x0001; + private static short WIIMOTE_BUTTON_ONE = 0x0002; + private static short WIIMOTE_BUTTON_B = 0x0004; + private static short WIIMOTE_BUTTON_A = 0x0008; + private static short WIIMOTE_BUTTON_MINUS = 0x0010; + private static short WIIMOTE_BUTTON_ZACCEL_BIT6 = 0x0020; + private static short WIIMOTE_BUTTON_ZACCEL_BIT7 = 0x0040; + private static short WIIMOTE_BUTTON_HOME = 0x0080; + private static short WIIMOTE_BUTTON_LEFT = 0x0100; + private static short WIIMOTE_BUTTON_RIGHT = 0x0200; + private static short WIIMOTE_BUTTON_DOWN = 0x0400; + private static short WIIMOTE_BUTTON_UP = 0x0800; + private static short WIIMOTE_BUTTON_PLUS = 0x1000; + private static short WIIMOTE_BUTTON_ZACCEL_BIT4 = 0x2000; + private static short WIIMOTE_BUTTON_ZACCEL_BIT5 = 0x4000; + private static int WIIMOTE_BUTTON_UNKNOWN = 0x8000; + private static short WIIMOTE_BUTTON_ALL = 0x1F9F; + + /** + * Constructor of the wiimote button Event. + * @param id id of the wiimote. + * @param buttonsJustPressed buttons just pressed. + * @param buttonsJustReleased buttons just released. + * @param buttonsHeld buttons held. + */ + public WiimoteButtonsEvent(int id, short buttonsJustPressed, + short buttonsJustReleased, short buttonsHeld) { + super(id, buttonsJustPressed, buttonsJustReleased, buttonsHeld); + } + + /* Button ONE */ + + public boolean isButtonOneJustPressed() { + return isButtonJustPressed(WIIMOTE_BUTTON_ONE); + } + + public boolean isButtonOneJustReleased() { + return isButtonJustReleased(WIIMOTE_BUTTON_ONE); + } + + public boolean isButtonOneHeld() { + return isButtonHeld(WIIMOTE_BUTTON_ONE); + } + + public boolean isButtonOnePressed() { + return isButtonPressed(WIIMOTE_BUTTON_ONE); + } + + /* Button TWO */ + + public boolean isButtonTwoJustPressed() { + return isButtonJustPressed(WIIMOTE_BUTTON_TWO); + } + + public boolean isButtonTwoJustReleased() { + return isButtonJustReleased(WIIMOTE_BUTTON_TWO); + } + + public boolean isButtonTwoHeld() { + return isButtonHeld(WIIMOTE_BUTTON_TWO); + } + + public boolean isButtonTwoPressed() { + return isButtonPressed(WIIMOTE_BUTTON_TWO); + } + + /* Button A */ + + public boolean isButtonAJustPressed() { + return isButtonJustPressed(WIIMOTE_BUTTON_A); + } + + public boolean isButtonAJustReleased() { + return isButtonJustReleased(WIIMOTE_BUTTON_A); + } + + public boolean isButtonAHeld() { + return isButtonHeld(WIIMOTE_BUTTON_A); + } + + public boolean isButtonAPressed() { + return isButtonPressed(WIIMOTE_BUTTON_A); + } + + /* Button B */ + + public boolean isButtonBJustPressed() { + return isButtonJustPressed(WIIMOTE_BUTTON_B); + } + + public boolean isButtonBJustReleased() { + return isButtonJustReleased(WIIMOTE_BUTTON_B); + } + + public boolean isButtonBHeld() { + return isButtonHeld(WIIMOTE_BUTTON_B); + } + + public boolean isButtonBPressed() { + return isButtonPressed(WIIMOTE_BUTTON_B); + } + + /* Button LEFT */ + + public boolean isButtonLeftJustPressed() { + return isButtonJustPressed(WIIMOTE_BUTTON_LEFT); + } + + public boolean isButtonLeftJustReleased() { + return isButtonJustReleased(WIIMOTE_BUTTON_LEFT); + } + + public boolean isButtonLeftHeld() { + return isButtonHeld(WIIMOTE_BUTTON_LEFT); + } + + public boolean isButtonLeftPressed() { + return isButtonPressed(WIIMOTE_BUTTON_LEFT); + } + + /* Button RIGHT */ + + public boolean isButtonRightJustPressed() { + return isButtonJustPressed(WIIMOTE_BUTTON_RIGHT); + } + + public boolean isButtonRightJustReleased() { + return isButtonJustReleased(WIIMOTE_BUTTON_RIGHT); + } + + public boolean isButtonRightHeld() { + return isButtonHeld(WIIMOTE_BUTTON_RIGHT); + } + + public boolean isButtonRightPressed() { + return isButtonPressed(WIIMOTE_BUTTON_RIGHT); + } + + /* Button UP */ + + public boolean isButtonUpJustPressed() { + return isButtonJustPressed(WIIMOTE_BUTTON_UP); + } + + public boolean isButtonUpJustReleased() { + return isButtonJustReleased(WIIMOTE_BUTTON_UP); + } + + public boolean isButtonUpHeld() { + return isButtonHeld(WIIMOTE_BUTTON_UP); + } + + public boolean isButtonUpPressed() { + return isButtonPressed(WIIMOTE_BUTTON_UP); + } + + /* Button DOWN */ + + public boolean isButtonDownJustPressed() { + return isButtonJustPressed(WIIMOTE_BUTTON_DOWN); + } + + public boolean isButtonDownJustReleased() { + return isButtonJustReleased(WIIMOTE_BUTTON_DOWN); + } + + public boolean isButtonDownHeld() { + return isButtonHeld(WIIMOTE_BUTTON_DOWN); + } + + public boolean isButtonDownPressed() { + return isButtonPressed(WIIMOTE_BUTTON_DOWN); + } + + /* Button - */ + + public boolean isButtonMinusJustPressed() { + return isButtonJustPressed(WIIMOTE_BUTTON_MINUS); + } + + public boolean isButtonMinusJustReleased() { + return isButtonJustReleased(WIIMOTE_BUTTON_MINUS); + } + + public boolean isButtonMinusHeld() { + return isButtonHeld(WIIMOTE_BUTTON_MINUS); + } + + public boolean isButtonMinusPressed() { + return isButtonPressed(WIIMOTE_BUTTON_MINUS); + } + + /* Button + */ + + public boolean isButtonPlusJustPressed() { + return isButtonJustPressed(WIIMOTE_BUTTON_PLUS); + } + + public boolean isButtonPlusJustReleased() { + return isButtonJustReleased(WIIMOTE_BUTTON_PLUS); + } + + public boolean isButtonPlusHeld() { + return isButtonHeld(WIIMOTE_BUTTON_PLUS); + } + + public boolean isButtonPlusPressed() { + return isButtonPressed(WIIMOTE_BUTTON_PLUS); + } + + /* Button HOME */ + + public boolean isButtonHomeJustPressed() { + return isButtonJustPressed(WIIMOTE_BUTTON_HOME); + } + + public boolean isButtonHomeJustReleased() { + return isButtonJustReleased(WIIMOTE_BUTTON_HOME); + } + + public boolean isButtonHomeHeld() { + return isButtonHeld(WIIMOTE_BUTTON_HOME); + } + + public boolean isButtonHomePressed() { + return isButtonPressed(WIIMOTE_BUTTON_HOME); + } + + @Override + public String toString() { + return "/******** Buttons for Wiimote generic Event ********/\n" + + super.toString(); + } + +} diff --git a/WiiUseJ/src/wiiusej/wiiuseapievents/WiimoteEvent.java b/WiiUseJ/src/wiiusej/wiiuseapievents/WiimoteEvent.java index 1504a37..c04e2cd 100644 --- a/WiiUseJ/src/wiiusej/wiiuseapievents/WiimoteEvent.java +++ b/WiiUseJ/src/wiiusej/wiiuseapievents/WiimoteEvent.java @@ -16,44 +16,224 @@ */ package wiiusej.wiiuseapievents; +import wiiusej.values.Expansion; + /** - * Abstract mother class representing an event with a wiimote id. + * Class that is a bean to be filled by the wiiuse API on an event that occurs + * on a wiimote. * * @author guiguito */ -public abstract class WiimoteEvent { - - /* ID */ - private int wiimoteId = -1; - +public class WiimoteEvent extends WiiUseApiEvent { + + WiimoteButtonsEvent buttonsEvent = null; + IREvent infraredEvent = null; + MotionSensingEvent motionSensingEvent = null; + Expansion expansion = null; + /** - * Construct the WiiUseApiEvent setting up the id. + * Construct the Wiimote setting up the id. * * @param id - * the Wiimote id + * the Wiimote id */ public WiimoteEvent(int id) { - wiimoteId = id; + super(id, WiiUseApiEvent.GENERIC_EVENT); } - + /** - * Get Wiimote ID + * Construct the Wiimote setting up the id and the buttons. * - * @return the wiimote id. + * @param id + * the Wiimote id + * @param buttonsJustPressed + * buttons just pressed + * @param buttonsJustReleased + * buttons just released + * @param buttonsHeld + * buttons held */ - public int getWiimoteId() { - return wiimoteId; + public WiimoteEvent(int id, short buttonsJustPressed, + short buttonsJustReleased, short buttonsHeld) { + super(id, WiiUseApiEvent.GENERIC_EVENT); + buttonsEvent = new WiimoteButtonsEvent(id, buttonsJustPressed, + buttonsJustReleased, buttonsHeld); } - + /** - * Set Wiimote ID + * Tell if there is an IR Event. * - * @param wiimoteId - * id of the wiimote + * @return TRUE if there is an IR event. */ - void setWiimoteId(int wiimoteId) { - this.wiimoteId = wiimoteId; + public boolean isThereIrEvent() { + return infraredEvent != null; } - - public abstract String toString(); + + /** + * Tell if there is a motion sensing Event. + * + * @return TRUE if there is a motion sensing event. + */ + public boolean isThereMotionSensingEvent() { + return motionSensingEvent != null; + } + + /** + * Get buttons event. + * + * @return the buttons event. + */ + public WiimoteButtonsEvent getButtonsEvent() { + return buttonsEvent; + } + + /** + * Get IR event. + * + * @return the IR event if there is one or null. + */ + public IREvent getIREvent() { + return infraredEvent; + } + + /** + * Get motion sensing event. + * + * @return the motion sensing event if there is one or null. + */ + public MotionSensingEvent getMotionSensingEvent() { + return motionSensingEvent; + } + + /** + * Prepare an IR event to populate. + * + * @param x + * calculated X coordinate. + * @param y + * calculated Y coordinate. + * @param z + * calculated distance. + * @param ax + * absolute X coordinate. + * @param ay + * absolute Y coordinate + * @param xVRes + * IR virtual screen x resolution. + * @param yVRes + * IR virtual screen y resolution. + * @param xOffset + * IR X correction offset. + * @param yOffset + * IR Y correction offset. + * @param sensorBarPostion + * aspect ratio of the screen. + * @param screenAsPectRatio + * IR sensor bar position. + * @param irSensitivity + * Sensitivity of the infrared camera. + * @param distance + * Pixel Distance between first two dots + */ + public void prepareIRevent(int x, int y, int z, int ax, int ay, int xVRes, + int yVRes, int xOffset, int yOffset, short sensorBarPostion, + short screenAsPectRatio, short irSensitivity, float distance) { + if (infraredEvent == null) { + infraredEvent = new IREvent(getWiimoteId(), x, y, z, ax, ay, xVRes, + yVRes, xOffset, yOffset, sensorBarPostion, + screenAsPectRatio, irSensitivity, distance); + } + } + + /** + * Add an IR point to the generic event. Create an IR Event if it's not + * created yet. + * + * @param x + * x coordinates. + * @param y + * y coordinates + * @param rx + * raw X coordinate (0-1023). + * @param ry + * raw Y coordinate (0-1023). + * @param size + * size of the IR dot (0-15). + */ + public void addIRpoint(int x, int y, short rx, short ry, short size) { + if (infraredEvent != null) + infraredEvent.addIRpoint(x, y, rx, ry, size); + } + + /** + * Set the Motion Sensing Event. + * + * @param orientationThreshold + * value of the minimum angle between two events with the + * accelerometer + * @param accelerationThreshold + * value of the value variation between two events with the + * accelerometer + * @param smoothingState + * true if smoothing flag is activated + * @param alphaSmooth + * value of the alpha smoothing parameter + * @param r + * roll + * @param p + * pitch + * @param ya + * yaw + * @param ar + * absolute roll + * @param ap + * absolute pitch + * @param x + * gravity force on x axis + * @param y + * gravity force on y axis + * @param z + * gravity force on z axis + * @param xx + * raw acceleration on x axis + * @param yy + * raw acceleration on y axis + * @param zz + * raw acceleration on z axis + */ + public void setMotionSensingEvent(float orientationThreshold, + int accelerationThreshold, boolean smoothingState, + float alphaSmooth, float r, float p, float ya, float ar, float ap, + float x, float y, float z, short xx, short yy, short zz) { + motionSensingEvent = new MotionSensingEvent(getWiimoteId(), + orientationThreshold, accelerationThreshold, smoothingState, + alphaSmooth, r, p, ya, ar, ap, x, y, z, xx, yy, zz); + } + + @Override + public String toString() { + String out = ""; + /* Status */ + out += "/*********** GENERIC EVENT : WIIMOTE ID :" + + super.getWiimoteId() + " ********/\n"; + + out += buttonsEvent; + + if (infraredEvent != null) { + out += infraredEvent; + } else { + out += "/******** IR Tracking ********/\n"; + out += "--- Active : false\n"; + } + + if (motionSensingEvent != null) { + out += motionSensingEvent; + } else { + out += "/******** Motion sensing ********/\n"; + out += "--- Motion sensing : false \n"; + } + + return out; + } + } diff --git a/WiiUseJ/src/wiiusej/wiiuseapievents/WiimoteListener.java b/WiiUseJ/src/wiiusej/wiiuseapievents/WiimoteListener.java index 3ea3c05..7b9386f 100644 --- a/WiiUseJ/src/wiiusej/wiiuseapievents/WiimoteListener.java +++ b/WiiUseJ/src/wiiusej/wiiuseapievents/WiimoteListener.java @@ -30,7 +30,7 @@ public interface WiimoteListener extends java.util.EventListener { * @param e the buttonEvent with the last informations * about the buttons of the wiimote. */ - void onButtonsEvent(ButtonsEvent e); + void onButtonsEvent(WiimoteButtonsEvent e); /** * Method called when an IR event occurs.