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.