diff --git a/java/header.bat b/java/header.bat new file mode 100644 index 0000000..ff77e28 --- /dev/null +++ b/java/header.bat @@ -0,0 +1,2 @@ +javah -classpath bin wiiusej.WiiUseApi +pause \ No newline at end of file diff --git a/java/native/WiiUseJ.dll b/java/native/WiiUseJ.dll index a7a3a68..abf3690 100644 Binary files a/java/native/WiiUseJ.dll and b/java/native/WiiUseJ.dll differ diff --git a/java/src/pm/device/wiimote/WiimoteDevice.java b/java/src/pm/device/wiimote/WiimoteDevice.java index 4e1590e..21d3ed9 100644 --- a/java/src/pm/device/wiimote/WiimoteDevice.java +++ b/java/src/pm/device/wiimote/WiimoteDevice.java @@ -17,6 +17,8 @@ import pm.macro.event.Press; import pm.macro.event.Release; import wiiusej.Wiimote; +import wiiusej.values.Acceleration; +import wiiusej.values.Calibration; import wiiusej.values.RawAcceleration; import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent; @@ -27,8 +29,8 @@ public class WiimoteDevice extends Device implements GestureListener { protected static WiimoteService wiimoteService; protected Wiimote wiimote; + protected Calibration calibration; protected GestureDevice gestureDevice; - protected int gestureId = 0; static { @@ -109,13 +111,13 @@ public class WiimoteDevice extends Device implements GestureListener { } public void onMotionSensingEvent(MotionSensingEvent event) { + if (calibration == null) { + calibration = wiimote.getCalibration(); + } RawAcceleration rawAcceleration = event.getRawAcceleration(); - System.out.println(event); - double[] vector = new double[] { - rawAcceleration.getX(), - rawAcceleration.getY(), - rawAcceleration.getZ()}; - gestureDevice.add(vector); + Acceleration acceleration = calibration.getAcceleration(rawAcceleration); + //System.out.println(event); + gestureDevice.add(acceleration.toArray()); } public void gestureReceived(GestureEvent event) { diff --git a/java/src/pm/device/wiimote/WiimoteService.java b/java/src/pm/device/wiimote/WiimoteService.java index 1cf2825..521a85d 100644 --- a/java/src/pm/device/wiimote/WiimoteService.java +++ b/java/src/pm/device/wiimote/WiimoteService.java @@ -22,7 +22,7 @@ import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent; import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent; public class WiimoteService extends WiiUseApiManager implements WiimoteListener { - protected final boolean RUMBLE = true; + protected final boolean RUMBLE = false; protected ArrayList wiimoteList; protected Wiimote[] wiimoteArray; @@ -75,7 +75,6 @@ public class WiimoteService extends WiiUseApiManager implements WiimoteListener public void onStatusEvent(StatusEvent event) { if (event.isConnected()) { - } } diff --git a/java/src/pm/device/wiimote/gesture/GestureDevice.java b/java/src/pm/device/wiimote/gesture/GestureDevice.java index c6e322e..81b9d63 100644 --- a/java/src/pm/device/wiimote/gesture/GestureDevice.java +++ b/java/src/pm/device/wiimote/gesture/GestureDevice.java @@ -28,6 +28,7 @@ public class GestureDevice extends Device /*implements AccelerationListener */{ } public void add(double[] vector) { + //System.out.printf("%f %f %f\n", vector[0], vector[1], vector[2]); fireAccelerationEvent(vector); } diff --git a/java/src/wiiusej/WiiUseApi.java b/java/src/wiiusej/WiiUseApi.java index 428f522..4e35a42 100644 --- a/java/src/wiiusej/WiiUseApi.java +++ b/java/src/wiiusej/WiiUseApi.java @@ -348,4 +348,5 @@ public class WiiUseApi { */ native void specialPoll(EventsGatherer gath); + native short[] getCalibration(int id); } diff --git a/java/src/wiiusej/WiiUseApiManager.java b/java/src/wiiusej/WiiUseApiManager.java index 05797c5..b3f4a63 100644 --- a/java/src/wiiusej/WiiUseApiManager.java +++ b/java/src/wiiusej/WiiUseApiManager.java @@ -21,6 +21,8 @@ import java.util.concurrent.atomic.AtomicBoolean; import javax.swing.event.EventListenerList; +import wiiusej.values.Calibration; +import wiiusej.values.RawAcceleration; import wiiusej.wiiusejevents.utils.EventsGatherer; import wiiusej.wiiusejevents.utils.WiiUseApiListener; import wiiusej.wiiusejevents.wiiuseapievents.WiiUseApiEvent; @@ -661,4 +663,11 @@ public class WiiUseApiManager extends Thread { shutdown(); } + public Calibration getCalibration(int id) { + short[] data = wiiuse.getCalibration(id); + return new Calibration( + new RawAcceleration(data[0], data[1], data[2]), + new RawAcceleration(data[3], data[4], data[5])); + } + } diff --git a/java/src/wiiusej/Wiimote.java b/java/src/wiiusej/Wiimote.java index aabb0f0..3b992c4 100644 --- a/java/src/wiiusej/Wiimote.java +++ b/java/src/wiiusej/Wiimote.java @@ -18,6 +18,7 @@ package wiiusej; import javax.swing.event.EventListenerList; +import wiiusej.values.Calibration; import wiiusej.wiiusejevents.utils.WiiUseApiListener; import wiiusej.wiiusejevents.utils.WiimoteListener; import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent; @@ -492,4 +493,7 @@ public class Wiimote implements WiiUseApiListener { return "Wiimote with ID : " + id; } + public Calibration getCalibration() { + return manager.getCalibration(id); + } } diff --git a/java/src/wiiusej/values/Acceleration.java b/java/src/wiiusej/values/Acceleration.java new file mode 100644 index 0000000..68a7d14 --- /dev/null +++ b/java/src/wiiusej/values/Acceleration.java @@ -0,0 +1,33 @@ +package wiiusej.values; + +public class Acceleration { + protected double x; + protected double y; + protected double z; + + public Acceleration(double x, double y, double z) { + this.x = x; + this.y = y; + this.z = z; + } + + public double getX() { + return x; + } + + public double getY() { + return y; + } + + public double getZ() { + return y; + } + + public double[] toArray() { + return new double[] {getX(), getY(), getZ()}; + } + + public String toString() { + return "Acceleration : (" + x + ", " + y + ", " + z + ")"; + } +} diff --git a/java/src/wiiusej/values/Calibration.java b/java/src/wiiusej/values/Calibration.java new file mode 100644 index 0000000..eaa55ce --- /dev/null +++ b/java/src/wiiusej/values/Calibration.java @@ -0,0 +1,36 @@ +package wiiusej.values; + +public class Calibration { + protected RawAcceleration zeroAcceleration; + protected RawAcceleration gAcceleration; + protected RawAcceleration differenceAcceleration; + + public Calibration(RawAcceleration zeroAcceleration, RawAcceleration gAcceleration) { + this.zeroAcceleration = zeroAcceleration; + this.gAcceleration = gAcceleration; + differenceAcceleration = new RawAcceleration( + (short) (zeroAcceleration.getX() - gAcceleration.getX()), + (short) (zeroAcceleration.getY() - gAcceleration.getY()), + (short) (zeroAcceleration.getZ() - gAcceleration.getZ())); + System.out.println(zeroAcceleration); + System.out.println(gAcceleration); + System.out.println(differenceAcceleration); + System.out.println("<"); + //System.exit(0); + } + + public RawAcceleration getZeroAcceleration() { + return zeroAcceleration; + } + + public RawAcceleration getGAcceleration() { + return gAcceleration; + } + + public Acceleration getAcceleration(RawAcceleration rawAcceleration) { + return new Acceleration( + (rawAcceleration.getX() - zeroAcceleration.getX()),// / (double) gAcceleration.getX(), + (rawAcceleration.getY() - zeroAcceleration.getY()),// / (double) gAcceleration.getY(), + (rawAcceleration.getZ() - zeroAcceleration.getZ()));// / (double) gAcceleration.getZ()); + } +} diff --git a/java/src/wiiusej/values/RawAcceleration.java b/java/src/wiiusej/values/RawAcceleration.java index 83f9578..f38fac6 100644 --- a/java/src/wiiusej/values/RawAcceleration.java +++ b/java/src/wiiusej/values/RawAcceleration.java @@ -75,7 +75,7 @@ public class RawAcceleration { @Override public String toString() { - return "Raw acceleration : (" + x + ", " + y + "," + z + ")"; + return "Raw acceleration : (" + x + ", " + y + ", " + z + ")"; } }