From 3bc30fa80d02c50fb8d1b596e5dfc7547a4fc90d Mon Sep 17 00:00:00 2001 From: "guilhem.duche" Date: Tue, 5 Feb 2008 15:46:12 +0000 Subject: [PATCH] git-svn-id: http://wiiusej.googlecode.com/svn/trunk@4 ae48ae66-6a45-0410-b38e-211266189506 --- WiiuseJ/.classpath | 6 + WiiuseJ/.project | 17 + WiiuseJ/bin/tests/LedsTask.class | Bin 0 -> 711 bytes WiiuseJ/bin/tests/Tests.class | Bin 0 -> 8175 bytes WiiuseJ/bin/wiiusej/GForce.class | Bin 0 -> 1337 bytes WiiuseJ/bin/wiiusej/LedsRequest.class | Bin 0 -> 1265 bytes .../bin/wiiusej/OrientThresholdRequest.class | Bin 0 -> 696 bytes WiiuseJ/bin/wiiusej/Orientation.class | Bin 0 -> 1393 bytes WiiuseJ/bin/wiiusej/Point2DInteger.class | Bin 0 -> 996 bytes WiiuseJ/bin/wiiusej/WiiMoteEvent.class | Bin 0 -> 11947 bytes WiiuseJ/bin/wiiusej/WiiUseApi.class | Bin 0 -> 2010 bytes WiiuseJ/bin/wiiusej/WiiUseApiListener.class | Bin 0 -> 205 bytes WiiuseJ/bin/wiiusej/WiiUseApiManager.class | Bin 0 -> 7304 bytes WiiuseJ/bin/wiiusej/WiiUseApiRequest.class | Bin 0 -> 1800 bytes WiiuseJ/doc/allclasses-frame.html | 45 + WiiuseJ/doc/allclasses-noframe.html | 45 + WiiuseJ/doc/constant-values.html | 146 ++ WiiuseJ/doc/deprecated-list.html | 146 ++ WiiuseJ/doc/help-doc.html | 223 +++ WiiuseJ/doc/index-files/index-1.html | 157 ++ WiiuseJ/doc/index-files/index-10.html | 148 ++ WiiuseJ/doc/index-files/index-11.html | 145 ++ WiiuseJ/doc/index-files/index-12.html | 148 ++ WiiuseJ/doc/index-files/index-13.html | 226 +++ WiiuseJ/doc/index-files/index-14.html | 157 ++ WiiuseJ/doc/index-files/index-15.html | 160 ++ WiiuseJ/doc/index-files/index-2.html | 148 ++ WiiuseJ/doc/index-files/index-3.html | 151 ++ WiiuseJ/doc/index-files/index-4.html | 145 ++ WiiuseJ/doc/index-files/index-5.html | 211 ++ WiiuseJ/doc/index-files/index-6.html | 259 +++ WiiuseJ/doc/index-files/index-7.html | 145 ++ WiiuseJ/doc/index-files/index-8.html | 148 ++ WiiuseJ/doc/index-files/index-9.html | 145 ++ WiiuseJ/doc/index.html | 39 + WiiuseJ/doc/overview-frame.html | 44 + WiiuseJ/doc/overview-summary.html | 160 ++ WiiuseJ/doc/overview-tree.html | 166 ++ WiiuseJ/doc/package-list | 2 + WiiuseJ/doc/resources/inherit.gif | Bin 0 -> 57 bytes WiiuseJ/doc/stylesheet.css | 29 + WiiuseJ/doc/tests/Tests.html | 280 +++ WiiuseJ/doc/tests/class-use/Tests.html | 144 ++ WiiuseJ/doc/tests/package-frame.html | 32 + WiiuseJ/doc/tests/package-summary.html | 157 ++ WiiuseJ/doc/tests/package-tree.html | 154 ++ WiiuseJ/doc/tests/package-use.html | 144 ++ WiiuseJ/doc/wiiusej/GForce.html | 404 ++++ WiiuseJ/doc/wiiusej/Orientation.html | 404 ++++ WiiuseJ/doc/wiiusej/Point2DInteger.html | 357 ++++ WiiuseJ/doc/wiiusej/WiiMoteEvent.html | 1710 +++++++++++++++++ WiiuseJ/doc/wiiusej/WiiUseApi.html | 260 +++ WiiuseJ/doc/wiiusej/WiiUseApiListener.html | 215 +++ WiiuseJ/doc/wiiusej/WiiUseApiManager.html | 652 +++++++ WiiuseJ/doc/wiiusej/class-use/GForce.html | 180 ++ .../doc/wiiusej/class-use/Orientation.html | 180 ++ .../doc/wiiusej/class-use/Point2DInteger.html | 180 ++ .../doc/wiiusej/class-use/WiiMoteEvent.html | 217 +++ WiiuseJ/doc/wiiusej/class-use/WiiUseApi.html | 144 ++ .../wiiusej/class-use/WiiUseApiListener.html | 233 +++ .../wiiusej/class-use/WiiUseApiManager.html | 180 ++ WiiuseJ/doc/wiiusej/package-frame.html | 53 + WiiuseJ/doc/wiiusej/package-summary.html | 191 ++ WiiuseJ/doc/wiiusej/package-tree.html | 166 ++ WiiuseJ/doc/wiiusej/package-use.html | 225 +++ WiiuseJ/libWiiuseJ.dll | Bin 0 -> 25232 bytes WiiuseJ/src/tests/LedsTask.java | 30 + WiiuseJ/src/tests/Tests.java | 374 ++++ WiiuseJ/src/wiiusej/GForce.java | 81 + WiiuseJ/src/wiiusej/LedsRequest.java | 109 ++ .../src/wiiusej/OrientThresholdRequest.java | 54 + WiiuseJ/src/wiiusej/Orientation.java | 77 + WiiuseJ/src/wiiusej/Point2DInteger.java | 35 + WiiuseJ/src/wiiusej/WiiMoteEvent.java | 706 +++++++ WiiuseJ/src/wiiusej/WiiUseApi.java | 174 ++ WiiuseJ/src/wiiusej/WiiUseApiListener.java | 9 + WiiuseJ/src/wiiusej/WiiUseApiManager.java | 374 ++++ WiiuseJ/src/wiiusej/WiiUseApiRequest.java | 82 + WiiuseJ/wiiuse.dll | Bin 0 -> 114688 bytes 79 files changed, 12528 insertions(+) create mode 100644 WiiuseJ/.classpath create mode 100644 WiiuseJ/.project create mode 100644 WiiuseJ/bin/tests/LedsTask.class create mode 100644 WiiuseJ/bin/tests/Tests.class create mode 100644 WiiuseJ/bin/wiiusej/GForce.class create mode 100644 WiiuseJ/bin/wiiusej/LedsRequest.class create mode 100644 WiiuseJ/bin/wiiusej/OrientThresholdRequest.class create mode 100644 WiiuseJ/bin/wiiusej/Orientation.class create mode 100644 WiiuseJ/bin/wiiusej/Point2DInteger.class create mode 100644 WiiuseJ/bin/wiiusej/WiiMoteEvent.class create mode 100644 WiiuseJ/bin/wiiusej/WiiUseApi.class create mode 100644 WiiuseJ/bin/wiiusej/WiiUseApiListener.class create mode 100644 WiiuseJ/bin/wiiusej/WiiUseApiManager.class create mode 100644 WiiuseJ/bin/wiiusej/WiiUseApiRequest.class create mode 100644 WiiuseJ/doc/allclasses-frame.html create mode 100644 WiiuseJ/doc/allclasses-noframe.html create mode 100644 WiiuseJ/doc/constant-values.html create mode 100644 WiiuseJ/doc/deprecated-list.html create mode 100644 WiiuseJ/doc/help-doc.html create mode 100644 WiiuseJ/doc/index-files/index-1.html create mode 100644 WiiuseJ/doc/index-files/index-10.html create mode 100644 WiiuseJ/doc/index-files/index-11.html create mode 100644 WiiuseJ/doc/index-files/index-12.html create mode 100644 WiiuseJ/doc/index-files/index-13.html create mode 100644 WiiuseJ/doc/index-files/index-14.html create mode 100644 WiiuseJ/doc/index-files/index-15.html create mode 100644 WiiuseJ/doc/index-files/index-2.html create mode 100644 WiiuseJ/doc/index-files/index-3.html create mode 100644 WiiuseJ/doc/index-files/index-4.html create mode 100644 WiiuseJ/doc/index-files/index-5.html create mode 100644 WiiuseJ/doc/index-files/index-6.html create mode 100644 WiiuseJ/doc/index-files/index-7.html create mode 100644 WiiuseJ/doc/index-files/index-8.html create mode 100644 WiiuseJ/doc/index-files/index-9.html create mode 100644 WiiuseJ/doc/index.html create mode 100644 WiiuseJ/doc/overview-frame.html create mode 100644 WiiuseJ/doc/overview-summary.html create mode 100644 WiiuseJ/doc/overview-tree.html create mode 100644 WiiuseJ/doc/package-list create mode 100644 WiiuseJ/doc/resources/inherit.gif create mode 100644 WiiuseJ/doc/stylesheet.css create mode 100644 WiiuseJ/doc/tests/Tests.html create mode 100644 WiiuseJ/doc/tests/class-use/Tests.html create mode 100644 WiiuseJ/doc/tests/package-frame.html create mode 100644 WiiuseJ/doc/tests/package-summary.html create mode 100644 WiiuseJ/doc/tests/package-tree.html create mode 100644 WiiuseJ/doc/tests/package-use.html create mode 100644 WiiuseJ/doc/wiiusej/GForce.html create mode 100644 WiiuseJ/doc/wiiusej/Orientation.html create mode 100644 WiiuseJ/doc/wiiusej/Point2DInteger.html create mode 100644 WiiuseJ/doc/wiiusej/WiiMoteEvent.html create mode 100644 WiiuseJ/doc/wiiusej/WiiUseApi.html create mode 100644 WiiuseJ/doc/wiiusej/WiiUseApiListener.html create mode 100644 WiiuseJ/doc/wiiusej/WiiUseApiManager.html create mode 100644 WiiuseJ/doc/wiiusej/class-use/GForce.html create mode 100644 WiiuseJ/doc/wiiusej/class-use/Orientation.html create mode 100644 WiiuseJ/doc/wiiusej/class-use/Point2DInteger.html create mode 100644 WiiuseJ/doc/wiiusej/class-use/WiiMoteEvent.html create mode 100644 WiiuseJ/doc/wiiusej/class-use/WiiUseApi.html create mode 100644 WiiuseJ/doc/wiiusej/class-use/WiiUseApiListener.html create mode 100644 WiiuseJ/doc/wiiusej/class-use/WiiUseApiManager.html create mode 100644 WiiuseJ/doc/wiiusej/package-frame.html create mode 100644 WiiuseJ/doc/wiiusej/package-summary.html create mode 100644 WiiuseJ/doc/wiiusej/package-tree.html create mode 100644 WiiuseJ/doc/wiiusej/package-use.html create mode 100644 WiiuseJ/libWiiuseJ.dll create mode 100644 WiiuseJ/src/tests/LedsTask.java create mode 100644 WiiuseJ/src/tests/Tests.java create mode 100644 WiiuseJ/src/wiiusej/GForce.java create mode 100644 WiiuseJ/src/wiiusej/LedsRequest.java create mode 100644 WiiuseJ/src/wiiusej/OrientThresholdRequest.java create mode 100644 WiiuseJ/src/wiiusej/Orientation.java create mode 100644 WiiuseJ/src/wiiusej/Point2DInteger.java create mode 100644 WiiuseJ/src/wiiusej/WiiMoteEvent.java create mode 100644 WiiuseJ/src/wiiusej/WiiUseApi.java create mode 100644 WiiuseJ/src/wiiusej/WiiUseApiListener.java create mode 100644 WiiuseJ/src/wiiusej/WiiUseApiManager.java create mode 100644 WiiuseJ/src/wiiusej/WiiUseApiRequest.java create mode 100644 WiiuseJ/wiiuse.dll diff --git a/WiiuseJ/.classpath b/WiiuseJ/.classpath new file mode 100644 index 0000000..d171cd4 --- /dev/null +++ b/WiiuseJ/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/WiiuseJ/.project b/WiiuseJ/.project new file mode 100644 index 0000000..e58d767 --- /dev/null +++ b/WiiuseJ/.project @@ -0,0 +1,17 @@ + + + WiiUseJ + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/WiiuseJ/bin/tests/LedsTask.class b/WiiuseJ/bin/tests/LedsTask.class new file mode 100644 index 0000000000000000000000000000000000000000..76fe5560b3756e9e8f2e7590033b96ac93a24fab GIT binary patch literal 711 zcmZ`$&2G~`7@Un=+ez%WO-V^<3luJ?K}0IYBBX*qisW)>D1uYB?y78?IF)}uqHn^f zH_k{D5Cn((UC-bVbthAl(7=HohU2)MZ_OdJAU zZ}5tb@fYkCGCA3ir!$R>-AS1x>Zvv^g3I*onc%Qa%N8T9@nr(livFvaq%e^*SUuss z;2cI@(2T4L1d)A#@MCpwfnyssNB$DF)Y;PFx=qBNwqX%hSP69gQ2yjKhVm@>gy20E zzGBI?EzA0h)em@NK>K`(T7)a~u0iK6QNk6vWKicEEyF+po9L9&Ga`f8wine*@sfv$ zg!?Rvd<#bYCWWFB9a7>v)`;Grf%_D`P3Z%oLk7Q(F2-2KJFNU=?`&r8COJGfold9S LG{)Ci*Kq4MND_Y; literal 0 HcmV?d00001 diff --git a/WiiuseJ/bin/tests/Tests.class b/WiiuseJ/bin/tests/Tests.class new file mode 100644 index 0000000000000000000000000000000000000000..fdaedc1d5d5938567b5277dee8bae5f7cbbfe75a GIT binary patch literal 8175 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 U3<&b!6cGIv(IC5gu@>t80iSP(Q~&?~ literal 0 HcmV?d00001 diff --git a/WiiuseJ/bin/wiiusej/OrientThresholdRequest.class b/WiiuseJ/bin/wiiusej/OrientThresholdRequest.class new file mode 100644 index 0000000000000000000000000000000000000000..a5ac9a8c1c6c9a46a5f37cae38c3767ee1e2f38b GIT binary patch literal 696 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 literal 0 HcmV?d00001 diff --git a/WiiuseJ/bin/wiiusej/WiiUseApi.class b/WiiuseJ/bin/wiiusej/WiiUseApi.class new file mode 100644 index 0000000000000000000000000000000000000000..ec9732b5dab6bc7e54120919c7c975c7e3a78c05 GIT binary patch literal 2010 zcmZ`(ZBrXn6n-uQ62kHpnqrk|uvG&{qxG#4T5SNl-3!I2q%fWO9HP<`%ZL&A&6WKZ_obMAT0bDwkne)Q*G04~D~qeEb5 z*EDNYwVAqOnzyU!dc_PQBrv!scVxFXChk-EqkJQNTRXtTUFo+?6UdxfCtXXiSyC)D& zW?NYDo@?6c>G9Plh{C`bLmUW8KT9vM; z-+gBkofsxcZ^Nvz>bmkWhaJX~#xeqZC1=*LZPH>oHggAxmQz(N7dK62Gy}cW zjha_-c5U)1&@Y*=BR!QPG7W05q>j5{O-ClT;>zL{+Z8y|ifebro3RUy29j5H)ej$O zg&$i9SCyAlB|?rQGk5vXAY*hcxu&wcl?_)_Hyo=Z(3Q;0>&2mFjeOa0$draN+}gj* zdx)Goc&1%*YAn-+yxrYHvh$wwbVzTtqKc-pmL1CyIG1eao$%G%4w3Q5NorY|HV-*@ z@Bbw6s+Q3C9!l(rf!8rjB|0@~H{M7vozyY~#L}*k<#ZS`0wc%Ob)#llCFMpy9rw3M zF)^KpB8@k->W1{c8wO_a7WF496=jpNQ6BmUWWjc6oiT6VZM;MBJ*S~$5=5aLN5I&d z$cAx?RQqd3aT{3BV-l|DRxDeO!jgd}aXx}~wWiv&Nzh^BS*C4Z4@r$8hhd$*YTyMV zB6yFJ+Bg>GMK$8Py2pD0Q|(jOxDnDPfj4`N-~$0f@R2}b?8qmfPnjZWxpjSM;6+^4 zT^Dt8r1HqrH|ufgbNIx-x}N&JxpKwZ%jA|FvOpPyq`OWte2O;6Rax3{UAfftj2$@h1i2_~Eyzl6heY#E%`K{VQ_pVy;e~lgpAp8`M<*{bHOetT2hOy ziG7@FrFQ$yMvBo0z~erM2%f+wJsQGAe+39VMEqBOb6vKP8*i55?i?XqRZGgZPa)yk zF~ZRPr-SzkfxQ^mX9D|dV4n+Y661c}1SWm^eBhr7?4`h_0!uCWanuCy_24DE+~`2W z5aJj3BH%AOS;s3^AL6wGq}O6s_wmMP9oOrat0Tju#lxlLBTEO!k^Pm$$xt1)o7s05 zGF8V~Bb(mX``ks_5A|+b`j{^?1^(27fBzwlPXFMhd0@boWalg1Joj+{Un7Zca1GyL z9^c^>zK6sQF!3X{@c=vc8K2=7e2$-d)+ZW0VS^ERY(B-Ne=2?0#TG2eW1f4JVY8mY V2%hjGY=$cIkGXmYi&cFd;F>nG&CI&75 DN!B;t literal 0 HcmV?d00001 diff --git a/WiiuseJ/bin/wiiusej/WiiUseApiManager.class b/WiiuseJ/bin/wiiusej/WiiUseApiManager.class new file mode 100644 index 0000000000000000000000000000000000000000..9bcf20a6136bca42fa1015ce1ac39e83466f7e38 GIT binary patch literal 7304 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 Y*bBzzdHTsK+j;+CA1S-Yr9dwGKV5xUp#T5? literal 0 HcmV?d00001 diff --git a/WiiuseJ/bin/wiiusej/WiiUseApiRequest.class b/WiiuseJ/bin/wiiusej/WiiUseApiRequest.class new file mode 100644 index 0000000000000000000000000000000000000000..59271ce732180185f5f8693ad48596111fee19d1 GIT binary patch literal 1800 zcma)*>rxY06oprZTnHYqy?_ELH!mTIQFLUKz)VP5(;Cuc(n0^F0(LpgASelA`6@nx zf2RWfEx34wF zwViUkYL%-81XG6vk1CxEOY&hb6F4vrHY?lr@_A9&Ct5vD3 zt(L5g+0Skl7isY>#X{$)qDw4E{a9pU&mEDvUYTJ#4 zb`(dRdn2?gzzU5sjPf92>A$h`o{1(Y`vdMML7@vmK?4ukY*tt;*~EKj45`&DnJjk^ qh__pcw+TG#+sJZnBZa<=6#F;Q#Y#6)Vk2uuG$Kb+60p^$Kl%y9T`rUW literal 0 HcmV?d00001 diff --git a/WiiuseJ/doc/allclasses-frame.html b/WiiuseJ/doc/allclasses-frame.html new file mode 100644 index 0000000..fdc2c10 --- /dev/null +++ b/WiiuseJ/doc/allclasses-frame.html @@ -0,0 +1,45 @@ + + + + + + +All Classes + + + + + + + + + + + +All Classes +
+ + + + + +
GForce +
+Orientation +
+Point2DInteger +
+Tests +
+WiiMoteEvent +
+WiiUseApi +
+WiiUseApiListener +
+WiiUseApiManager +
+
+ + + diff --git a/WiiuseJ/doc/allclasses-noframe.html b/WiiuseJ/doc/allclasses-noframe.html new file mode 100644 index 0000000..a2199a8 --- /dev/null +++ b/WiiuseJ/doc/allclasses-noframe.html @@ -0,0 +1,45 @@ + + + + + + +All Classes + + + + + + + + + + + +All Classes +
+ + + + + +
GForce +
+Orientation +
+Point2DInteger +
+Tests +
+WiiMoteEvent +
+WiiUseApi +
+WiiUseApiListener +
+WiiUseApiManager +
+
+ + + diff --git a/WiiuseJ/doc/constant-values.html b/WiiuseJ/doc/constant-values.html new file mode 100644 index 0000000..684d4c7 --- /dev/null +++ b/WiiuseJ/doc/constant-values.html @@ -0,0 +1,146 @@ + + + + + + +Constant Field Values + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Constant Field Values

+
+
+Contents
    +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/deprecated-list.html b/WiiuseJ/doc/deprecated-list.html new file mode 100644 index 0000000..ad4903c --- /dev/null +++ b/WiiuseJ/doc/deprecated-list.html @@ -0,0 +1,146 @@ + + + + + + +Deprecated List + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Deprecated API

+
+
+Contents
    +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/help-doc.html b/WiiuseJ/doc/help-doc.html new file mode 100644 index 0000000..6521a9c --- /dev/null +++ b/WiiuseJ/doc/help-doc.html @@ -0,0 +1,223 @@ + + + + + + +API Help + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+How This API Document Is Organized

+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

+Overview

+
+ +

+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+

+Package

+
+ +

+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

    +
  • Interfaces (italic)
  • Classes
  • Enums
  • Exceptions
  • Errors
  • Annotation Types
+
+

+Class/Interface

+
+ +

+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description +

    +

  • Nested Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary +

    +

  • Field Detail
  • Constructor Detail
  • Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+ +

+Annotation Type

+
+ +

+Each annotation type has its own separate page with the following sections:

    +
  • Annotation Type declaration
  • Annotation Type description
  • Required Element Summary
  • Optional Element Summary
  • Element Detail
+
+ +

+Enum

+
+ +

+Each enum has its own separate page with the following sections:

    +
  • Enum declaration
  • Enum description
  • Enum Constant Summary
  • Enum Constant Detail
+
+

+Use

+
+Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.
+

+Tree (Class Hierarchy)

+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+

+Deprecated API

+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+

+Index

+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+

+Prev/Next

+These links take you to the next or previous class, interface, package, or related page.

+Frames/No Frames

+These links show and hide the HTML frames. All pages are available with or without frames. +

+

+Serialized Form

+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. +

+

+Constant Field Values

+The Constant Field Values page lists the static final fields and their values. +

+ + +This help file applies to API documentation generated using the standard doclet. + +
+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/index-files/index-1.html b/WiiuseJ/doc/index-files/index-1.html new file mode 100644 index 0000000..657c785 --- /dev/null +++ b/WiiuseJ/doc/index-files/index-1.html @@ -0,0 +1,157 @@ + + + + + + +A-Index + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+

+A

+
+
activateIRTRacking(int) - +Method in class wiiusej.WiiUseApiManager +
Activate IR Tracking for the wiimotes with the given id. +
activateMotionSensing(int) - +Method in class wiiusej.WiiUseApiManager +
Activate IR Tracking of the wiimotes with the given id. +
activateRumble(int) - +Method in class wiiusej.WiiUseApiManager +
Activate the rumble for the wiimotes with the given id. +
addIRpoint(int, int) - +Method in class wiiusej.WiiMoteEvent +
Add IR Point in the list (Max 4 points) +
addWiiUseApiListener(WiiUseApiListener) - +Method in class wiiusej.WiiUseApiManager +
  +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+ + + diff --git a/WiiuseJ/doc/index-files/index-10.html b/WiiuseJ/doc/index-files/index-10.html new file mode 100644 index 0000000..b86df5a --- /dev/null +++ b/WiiuseJ/doc/index-files/index-10.html @@ -0,0 +1,148 @@ + + + + + + +O-Index + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+

+O

+
+
Orientation - Class in wiiusej
Class that represents the orientation of the wiimote.
Orientation() - +Constructor for class wiiusej.Orientation +
Default constructor. +
Orientation(float, float, float) - +Constructor for class wiiusej.Orientation +
Contructor with raw, pitch , yaw. +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+ + + diff --git a/WiiuseJ/doc/index-files/index-11.html b/WiiuseJ/doc/index-files/index-11.html new file mode 100644 index 0000000..35b592a --- /dev/null +++ b/WiiuseJ/doc/index-files/index-11.html @@ -0,0 +1,145 @@ + + + + + + +P-Index + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+

+P

+
+
Point2DInteger - Class in wiiusej
 
Point2DInteger(int, int) - +Constructor for class wiiusej.Point2DInteger +
  +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+ + + diff --git a/WiiuseJ/doc/index-files/index-12.html b/WiiuseJ/doc/index-files/index-12.html new file mode 100644 index 0000000..5c75716 --- /dev/null +++ b/WiiuseJ/doc/index-files/index-12.html @@ -0,0 +1,148 @@ + + + + + + +R-Index + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+

+R

+
+
removeWiiUseApiListener(WiiUseApiListener) - +Method in class wiiusej.WiiUseApiManager +
  +
run() - +Method in class wiiusej.WiiUseApiManager +
  +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+ + + diff --git a/WiiuseJ/doc/index-files/index-13.html b/WiiuseJ/doc/index-files/index-13.html new file mode 100644 index 0000000..63bcd31 --- /dev/null +++ b/WiiuseJ/doc/index-files/index-13.html @@ -0,0 +1,226 @@ + + + + + + +S-Index + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+

+S

+
+
setBatteryLevel(float) - +Method in class wiiusej.WiiMoteEvent +
Set level battery. +
setButtonsHeld(short) - +Method in class wiiusej.WiiMoteEvent +
set the int storing the buttons held +
setButtonsJustPressed(short) - +Method in class wiiusej.WiiMoteEvent +
set the int storing the buttons just pressed +
setButtonsJustReleased(short) - +Method in class wiiusej.WiiMoteEvent +
set the int storing the buttons just released +
setConnected() - +Method in class wiiusej.WiiMoteEvent +
Set the connected value to true. +
setDisconnected() - +Method in class wiiusej.WiiMoteEvent +
Set the connected value to false. +
setGforce(float, float, float) - +Method in class wiiusej.WiiMoteEvent +
Set the gravity force. +
setIrActive() - +Method in class wiiusej.WiiMoteEvent +
Set the value isIrActive to true +
setIrInactive() - +Method in class wiiusej.WiiMoteEvent +
Set the value isIrActive to true +
setLeds(short) - +Method in class wiiusej.WiiMoteEvent +
Set Status of the leds. +
setLocation(double, double) - +Method in class wiiusej.Point2DInteger +
  +
setMotionSensingActive() - +Method in class wiiusej.WiiMoteEvent +
Set the motion sensing flag to active. +
setMotionSensingInactive() - +Method in class wiiusej.WiiMoteEvent +
Set the motion sensing flag to inactive. +
setOrientation(float, float, float) - +Method in class wiiusej.WiiMoteEvent +
Set orientation of the wiimote. +
setPitch(float) - +Method in class wiiusej.Orientation +
  +
setRoll(float) - +Method in class wiiusej.Orientation +
  +
setRumbleActive() - +Method in class wiiusej.WiiMoteEvent +
Set Rumble flag to Active. +
setRumbleInactive() - +Method in class wiiusej.WiiMoteEvent +
Set Rumble flag to Inactive. +
setSpeakerDisabled() - +Method in class wiiusej.WiiMoteEvent +
Set the flag for the speaker to "disabled" +
setSpeakerEnabled() - +Method in class wiiusej.WiiMoteEvent +
Set the flag for the speaker to "enabled" +
setThereIsAnAttachment() - +Method in class wiiusej.WiiMoteEvent +
Set the flag for the attachment to true +
setThereIsNoAttachment() - +Method in class wiiusej.WiiMoteEvent +
Set the flag for the attachment to false +
setWiimoteId(int) - +Method in class wiiusej.WiiMoteEvent +
Set Wiimote ID +
setX(float) - +Method in class wiiusej.GForce +
  +
setY(float) - +Method in class wiiusej.GForce +
  +
setYaw(float) - +Method in class wiiusej.Orientation +
  +
setZ(float) - +Method in class wiiusej.GForce +
  +
shutdown() - +Method in class wiiusej.WiiUseApiManager +
Stop thread and shutdown wiiuse Api. +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+ + + diff --git a/WiiuseJ/doc/index-files/index-14.html b/WiiuseJ/doc/index-files/index-14.html new file mode 100644 index 0000000..a43b146 --- /dev/null +++ b/WiiuseJ/doc/index-files/index-14.html @@ -0,0 +1,157 @@ + + + + + + +T-Index + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+

+T

+
+
tests - package tests
 
Tests - Class in tests
 
Tests() - +Constructor for class tests.Tests +
  +
toString() - +Method in class wiiusej.GForce +
  +
toString() - +Method in class wiiusej.Orientation +
  +
toString() - +Method in class wiiusej.Point2DInteger +
  +
toString() - +Method in class wiiusej.WiiMoteEvent +
  +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+ + + diff --git a/WiiuseJ/doc/index-files/index-15.html b/WiiuseJ/doc/index-files/index-15.html new file mode 100644 index 0000000..46ad773 --- /dev/null +++ b/WiiuseJ/doc/index-files/index-15.html @@ -0,0 +1,160 @@ + + + + + + +W-Index + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+

+W

+
+
wiimoteEvent(WiiMoteEvent) - +Method in class tests.Tests +
  +
WiiMoteEvent - Class in wiiusej
Class that is a bean to be filled by the wiiuse API.
WiiMoteEvent() - +Constructor for class wiiusej.WiiMoteEvent +
Default constructor +
WiiMoteEvent(int) - +Constructor for class wiiusej.WiiMoteEvent +
Construct the Wiimote setting up the id. +
wiimoteEvent(WiiMoteEvent) - +Method in interface wiiusej.WiiUseApiListener +
  +
WiiUseApi - Class in wiiusej
Singleton used to manipulate WiiUse Api.
WiiUseApi() - +Constructor for class wiiusej.WiiUseApi +
  +
WiiUseApiListener - Interface in wiiusej
 
WiiUseApiManager - Class in wiiusej
 
WiiUseApiManager() - +Constructor for class wiiusej.WiiUseApiManager +
  +
wiiusej - package wiiusej
 
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+ + + diff --git a/WiiuseJ/doc/index-files/index-2.html b/WiiuseJ/doc/index-files/index-2.html new file mode 100644 index 0000000..5168d49 --- /dev/null +++ b/WiiuseJ/doc/index-files/index-2.html @@ -0,0 +1,148 @@ + + + + + + +C-Index + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+

+C

+
+
closeConnection(int) - +Method in class wiiusej.WiiUseApiManager +
Ask the thread to close a connection. +
connectWiimotes() - +Method in class wiiusej.WiiUseApiManager +
Connect wiimote and get the nu ber of wiimotes connected. +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+ + + diff --git a/WiiuseJ/doc/index-files/index-3.html b/WiiuseJ/doc/index-files/index-3.html new file mode 100644 index 0000000..d08ee3d --- /dev/null +++ b/WiiuseJ/doc/index-files/index-3.html @@ -0,0 +1,151 @@ + + + + + + +D-Index + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+

+D

+
+
deactivateIRTRacking(int) - +Method in class wiiusej.WiiUseApiManager +
Deactivate IR Tracking for the wiimotes with the given id. +
deactivateMotionSensing(int) - +Method in class wiiusej.WiiUseApiManager +
  +
deactivateRumble(int) - +Method in class wiiusej.WiiUseApiManager +
Deactivate the rumble for the wiimotes with the given id. +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+ + + diff --git a/WiiuseJ/doc/index-files/index-4.html b/WiiuseJ/doc/index-files/index-4.html new file mode 100644 index 0000000..f3d56c9 --- /dev/null +++ b/WiiuseJ/doc/index-files/index-4.html @@ -0,0 +1,145 @@ + + + + + + +E-Index + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+

+E

+
+
EmptyIRPoints() - +Method in class wiiusej.WiiMoteEvent +
Clear IR points. +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+ + + diff --git a/WiiuseJ/doc/index-files/index-5.html b/WiiuseJ/doc/index-files/index-5.html new file mode 100644 index 0000000..ac664cc --- /dev/null +++ b/WiiuseJ/doc/index-files/index-5.html @@ -0,0 +1,211 @@ + + + + + + +G-Index + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+

+G

+
+
getBatteryLevel() - +Method in class wiiusej.WiiMoteEvent +
Get battery level. +
getButtonsHeld() - +Method in class wiiusej.WiiMoteEvent +
get the int storing the buttons held +
getButtonsJustPressed() - +Method in class wiiusej.WiiMoteEvent +
Get the int storing the buttons just pressed +
getButtonsJustReleased() - +Method in class wiiusej.WiiMoteEvent +
Get the int storing the buttons just released +
getGforce() - +Method in class wiiusej.WiiMoteEvent +
Get the gravity force. +
getInstance() - +Static method in class wiiusej.WiiUseApiManager +
  +
getIRPoints() - +Method in class wiiusej.WiiMoteEvent +
Get list of IR points. +
getLeds() - +Method in class wiiusej.WiiMoteEvent +
Get status of the leds . +
getNbConnectedWiimotes() - +Method in class wiiusej.WiiUseApiManager +
Get the number of wiimotes connected. +
getOrientation() - +Method in class wiiusej.WiiMoteEvent +
  +
getPitch() - +Method in class wiiusej.Orientation +
  +
getRoll() - +Method in class wiiusej.Orientation +
  +
getStatus(int) - +Method in class wiiusej.WiiUseApiManager +
  +
getWiimoteId() - +Method in class wiiusej.WiiMoteEvent +
Get Wiimote ID +
getWiiUseApiListeners() - +Method in class wiiusej.WiiUseApiManager +
  +
getX() - +Method in class wiiusej.GForce +
  +
getX() - +Method in class wiiusej.Point2DInteger +
  +
getY() - +Method in class wiiusej.GForce +
  +
getY() - +Method in class wiiusej.Point2DInteger +
  +
getYaw() - +Method in class wiiusej.Orientation +
  +
getZ() - +Method in class wiiusej.GForce +
  +
GForce - Class in wiiusej
Represents gravity force on each axis.
GForce() - +Constructor for class wiiusej.GForce +
Default constructor; +
GForce(float, float, float) - +Constructor for class wiiusej.GForce +
Constructor with gravity force on each axis. +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+ + + diff --git a/WiiuseJ/doc/index-files/index-6.html b/WiiuseJ/doc/index-files/index-6.html new file mode 100644 index 0000000..ab97170 --- /dev/null +++ b/WiiuseJ/doc/index-files/index-6.html @@ -0,0 +1,259 @@ + + + + + + +I-Index + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+

+I

+
+
isButtonAHeld() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonAJustPressed() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonAJustReleased() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonBHeld() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonBJustPressed() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonBJustReleased() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonDownHeld() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonDownJustPressed() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonDownJustReleased() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonHomeHeld() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonHomeJustPressed() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonHomeJustReleased() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonLeftHeld() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonLeftJustPressed() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonLeftJustReleased() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonMinusHeld() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonMinusJustPressed() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonMinusJustReleased() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonOneHeld() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonOneJustPressed() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonOneJustReleased() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonPlusHeld() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonPlusJustPressed() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonPlusJustReleased() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonRightHeld() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonRightJustPressed() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonRightJustReleased() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonTwoHeld() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonTwoJustPressed() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonTwoJustReleased() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonUpHeld() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonUpJustPressed() - +Method in class wiiusej.WiiMoteEvent +
  +
isButtonUpJustReleased() - +Method in class wiiusej.WiiMoteEvent +
  +
isConnected() - +Method in class wiiusej.WiiMoteEvent +
True if the wiimote is connected false otherwise. +
isIrActive() - +Method in class wiiusej.WiiMoteEvent +
Tell if the IR Tracking is active. +
isMotionSensingActive() - +Method in class wiiusej.WiiMoteEvent +
Get the flag indicating if the motion sensing is active. +
isRumbleActive() - +Method in class wiiusej.WiiMoteEvent +
Get the status of rumble. +
isSpeakerEnabled() - +Method in class wiiusej.WiiMoteEvent +
Tell if the speaker is enable for this wiimote +
isThereAttachment() - +Method in class wiiusej.WiiMoteEvent +
Tell if there is an attachment to the Wiimote +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+ + + diff --git a/WiiuseJ/doc/index-files/index-7.html b/WiiuseJ/doc/index-files/index-7.html new file mode 100644 index 0000000..8d6ffdc --- /dev/null +++ b/WiiuseJ/doc/index-files/index-7.html @@ -0,0 +1,145 @@ + + + + + + +L-Index + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+

+L

+
+
loadLibrary() - +Method in class wiiusej.WiiUseApiManager +
Load the wiimote library. +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+ + + diff --git a/WiiuseJ/doc/index-files/index-8.html b/WiiuseJ/doc/index-files/index-8.html new file mode 100644 index 0000000..edf71e2 --- /dev/null +++ b/WiiuseJ/doc/index-files/index-8.html @@ -0,0 +1,148 @@ + + + + + + +M-Index + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+

+M

+
+
main(String[]) - +Static method in class tests.Tests +
  +
main(String[]) - +Static method in class wiiusej.WiiUseApi +
  +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+ + + diff --git a/WiiuseJ/doc/index-files/index-9.html b/WiiuseJ/doc/index-files/index-9.html new file mode 100644 index 0000000..1895a90 --- /dev/null +++ b/WiiuseJ/doc/index-files/index-9.html @@ -0,0 +1,145 @@ + + + + + + +N-Index + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+

+N

+
+
notifyWiiUseApiListener(WiiMoteEvent) - +Method in class wiiusej.WiiUseApiManager +
  +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I L M N O P R S T W
+ + + diff --git a/WiiuseJ/doc/index.html b/WiiuseJ/doc/index.html new file mode 100644 index 0000000..03c9b83 --- /dev/null +++ b/WiiuseJ/doc/index.html @@ -0,0 +1,39 @@ + + + + + + +Generated Documentation (Untitled) + + + + + + + + + + + +<H2> +Frame Alert</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to<A HREF="overview-summary.html">Non-frame version.</A> + + + diff --git a/WiiuseJ/doc/overview-frame.html b/WiiuseJ/doc/overview-frame.html new file mode 100644 index 0000000..13c4496 --- /dev/null +++ b/WiiuseJ/doc/overview-frame.html @@ -0,0 +1,44 @@ + + + + + + +Overview List + + + + + + + + + + + + + + + +
+
+ + + + + +
All Classes +

+ +Packages +
+tests +
+wiiusej +
+

+ +

+  + + diff --git a/WiiuseJ/doc/overview-summary.html b/WiiuseJ/doc/overview-summary.html new file mode 100644 index 0000000..4de0dff --- /dev/null +++ b/WiiuseJ/doc/overview-summary.html @@ -0,0 +1,160 @@ + + + + + + +Overview + + + + + + + + + + + + +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+WiiuseJ javadoc +

+
+ + + + + + + + + + + + + +
+Packages
tests 
wiiusej 
+ +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/overview-tree.html b/WiiuseJ/doc/overview-tree.html new file mode 100644 index 0000000..3bf44c8 --- /dev/null +++ b/WiiuseJ/doc/overview-tree.html @@ -0,0 +1,166 @@ + + + + + + +Class Hierarchy + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For All Packages

+
+
+
Package Hierarchies:
tests, wiiusej
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/package-list b/WiiuseJ/doc/package-list new file mode 100644 index 0000000..1223bb2 --- /dev/null +++ b/WiiuseJ/doc/package-list @@ -0,0 +1,2 @@ +tests +wiiusej diff --git a/WiiuseJ/doc/resources/inherit.gif b/WiiuseJ/doc/resources/inherit.gif new file mode 100644 index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e GIT binary patch literal 57 zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C; KYxQGgum%9JOA&7X literal 0 HcmV?d00001 diff --git a/WiiuseJ/doc/stylesheet.css b/WiiuseJ/doc/stylesheet.css new file mode 100644 index 0000000..cbd3428 --- /dev/null +++ b/WiiuseJ/doc/stylesheet.css @@ -0,0 +1,29 @@ +/* Javadoc style sheet */ + +/* Define colors, fonts and other style attributes here to override the defaults */ + +/* Page background color */ +body { background-color: #FFFFFF; color:#000000 } + +/* Headings */ +h1 { font-size: 145% } + +/* Table colors */ +.TableHeadingColor { background: #CCCCFF; color:#000000 } /* Dark mauve */ +.TableSubHeadingColor { background: #EEEEFF; color:#000000 } /* Light mauve */ +.TableRowColor { background: #FFFFFF; color:#000000 } /* White */ + +/* Font used in left-hand frame lists */ +.FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } + +/* Navigation bar fonts and colors */ +.NavBarCell1 { background-color:#EEEEFF; color:#000000} /* Light mauve */ +.NavBarCell1Rev { background-color:#00008B; color:#FFFFFF} /* Dark Blue */ +.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;} +.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;} + +.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} +.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} + diff --git a/WiiuseJ/doc/tests/Tests.html b/WiiuseJ/doc/tests/Tests.html new file mode 100644 index 0000000..0d5d962 --- /dev/null +++ b/WiiuseJ/doc/tests/Tests.html @@ -0,0 +1,280 @@ + + + + + + +Tests + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +tests +
+Class Tests

+
+java.lang.Object
+  extended by tests.Tests
+
+
+
All Implemented Interfaces:
java.util.EventListener, WiiUseApiListener
+
+
+
+
public class Tests
extends java.lang.Object
implements WiiUseApiListener
+ + +

+


+ +

+ + + + + + + + + + + +
+Constructor Summary
Tests() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+static voidmain(java.lang.String[] args) + +
+           
+ voidwiimoteEvent(WiiMoteEvent e) + +
+           
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+Tests

+
+public Tests()
+
+
+ + + + + + + + +
+Method Detail
+ +

+wiimoteEvent

+
+public void wiimoteEvent(WiiMoteEvent e)
+
+
+
Specified by:
wiimoteEvent in interface WiiUseApiListener
+
+
+
+
+
+
+ +

+main

+
+public static void main(java.lang.String[] args)
+
+
+
+
+
+
Parameters:
args -
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/tests/class-use/Tests.html b/WiiuseJ/doc/tests/class-use/Tests.html new file mode 100644 index 0000000..4e7714d --- /dev/null +++ b/WiiuseJ/doc/tests/class-use/Tests.html @@ -0,0 +1,144 @@ + + + + + + +Uses of Class tests.Tests + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
tests.Tests

+
+No usage of tests.Tests +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/tests/package-frame.html b/WiiuseJ/doc/tests/package-frame.html new file mode 100644 index 0000000..22893f0 --- /dev/null +++ b/WiiuseJ/doc/tests/package-frame.html @@ -0,0 +1,32 @@ + + + + + + +tests + + + + + + + + + + + +tests + + + + +
+Classes  + +
+Tests
+ + + + diff --git a/WiiuseJ/doc/tests/package-summary.html b/WiiuseJ/doc/tests/package-summary.html new file mode 100644 index 0000000..31b57ce --- /dev/null +++ b/WiiuseJ/doc/tests/package-summary.html @@ -0,0 +1,157 @@ + + + + + + +tests + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package tests +

+ + + + + + + + + +
+Class Summary
Tests 
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/tests/package-tree.html b/WiiuseJ/doc/tests/package-tree.html new file mode 100644 index 0000000..8b767e7 --- /dev/null +++ b/WiiuseJ/doc/tests/package-tree.html @@ -0,0 +1,154 @@ + + + + + + +tests Class Hierarchy + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package tests +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/tests/package-use.html b/WiiuseJ/doc/tests/package-use.html new file mode 100644 index 0000000..ed5dd61 --- /dev/null +++ b/WiiuseJ/doc/tests/package-use.html @@ -0,0 +1,144 @@ + + + + + + +Uses of Package tests + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
tests

+
+No usage of tests +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/wiiusej/GForce.html b/WiiuseJ/doc/wiiusej/GForce.html new file mode 100644 index 0000000..fe79aac --- /dev/null +++ b/WiiuseJ/doc/wiiusej/GForce.html @@ -0,0 +1,404 @@ + + + + + + +GForce + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +wiiusej +
+Class GForce

+
+java.lang.Object
+  extended by wiiusej.GForce
+
+
+
+
public class GForce
extends java.lang.Object
+ + +

+Represents gravity force on each axis. +

+ +

+

+
Author:
+
gduche
+
+
+ +

+ + + + + + + + + + + + + + +
+Constructor Summary
GForce() + +
+          Default constructor;
GForce(float xx, + float yy, + float zz) + +
+          Constructor with gravity force on each axis.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ floatgetX() + +
+           
+ floatgetY() + +
+           
+ floatgetZ() + +
+           
+ voidsetX(float x) + +
+           
+ voidsetY(float y) + +
+           
+ voidsetZ(float z) + +
+           
+ java.lang.StringtoString() + +
+           
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+GForce

+
+public GForce()
+
+
Default constructor; +

+

+
+ +

+GForce

+
+public GForce(float xx,
+              float yy,
+              float zz)
+
+
Constructor with gravity force on each axis. +

+

+
Parameters:
xx - x value
yy - x value
zz - x value
+
+ + + + + + + + +
+Method Detail
+ +

+getX

+
+public float getX()
+
+
+ +
Returns:
the x
+
+
+
+ +

+setX

+
+public void setX(float x)
+
+
+
Parameters:
x - the x to set
+
+
+
+ +

+getY

+
+public float getY()
+
+
+ +
Returns:
the y
+
+
+
+ +

+setY

+
+public void setY(float y)
+
+
+
Parameters:
y - the y to set
+
+
+
+ +

+getZ

+
+public float getZ()
+
+
+ +
Returns:
the z
+
+
+
+ +

+setZ

+
+public void setZ(float z)
+
+
+
Parameters:
z - the z to set
+
+
+
+ +

+toString

+
+public java.lang.String toString()
+
+
+
Overrides:
toString in class java.lang.Object
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/wiiusej/Orientation.html b/WiiuseJ/doc/wiiusej/Orientation.html new file mode 100644 index 0000000..91f6b4c --- /dev/null +++ b/WiiuseJ/doc/wiiusej/Orientation.html @@ -0,0 +1,404 @@ + + + + + + +Orientation + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +wiiusej +
+Class Orientation

+
+java.lang.Object
+  extended by wiiusej.Orientation
+
+
+
+
public class Orientation
extends java.lang.Object
+ + +

+Class that represents the orientation of the wiimote. +

+ +

+

+
Author:
+
gduche
+
+
+ +

+ + + + + + + + + + + + + + +
+Constructor Summary
Orientation() + +
+          Default constructor.
Orientation(float r, + float p, + float y) + +
+          Contructor with raw, pitch , yaw.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ floatgetPitch() + +
+           
+ floatgetRoll() + +
+           
+ floatgetYaw() + +
+           
+ voidsetPitch(float pitch) + +
+           
+ voidsetRoll(float roll) + +
+           
+ voidsetYaw(float yaw) + +
+           
+ java.lang.StringtoString() + +
+           
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+Orientation

+
+public Orientation()
+
+
Default constructor. +

+

+
+ +

+Orientation

+
+public Orientation(float r,
+                   float p,
+                   float y)
+
+
Contructor with raw, pitch , yaw. +

+

+
Parameters:
r - raw
p - pitch
y - yaw
+
+ + + + + + + + +
+Method Detail
+ +

+getRoll

+
+public float getRoll()
+
+
+ +
Returns:
the roll
+
+
+
+ +

+setRoll

+
+public void setRoll(float roll)
+
+
+
Parameters:
roll - the roll to set
+
+
+
+ +

+getPitch

+
+public float getPitch()
+
+
+ +
Returns:
the pitch
+
+
+
+ +

+setPitch

+
+public void setPitch(float pitch)
+
+
+
Parameters:
pitch - the pitch to set
+
+
+
+ +

+getYaw

+
+public float getYaw()
+
+
+ +
Returns:
the yaw
+
+
+
+ +

+setYaw

+
+public void setYaw(float yaw)
+
+
+
Parameters:
yaw - the yaw to set
+
+
+
+ +

+toString

+
+public java.lang.String toString()
+
+
+
Overrides:
toString in class java.lang.Object
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/wiiusej/Point2DInteger.html b/WiiuseJ/doc/wiiusej/Point2DInteger.html new file mode 100644 index 0000000..fad2098 --- /dev/null +++ b/WiiuseJ/doc/wiiusej/Point2DInteger.html @@ -0,0 +1,357 @@ + + + + + + +Point2DInteger + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +wiiusej +
+Class Point2DInteger

+
+java.lang.Object
+  extended by java.awt.geom.Point2D
+      extended by wiiusej.Point2DInteger
+
+
+
All Implemented Interfaces:
java.lang.Cloneable
+
+
+
+
public class Point2DInteger
extends java.awt.geom.Point2D
+ + +

+


+ +

+ + + + + + + +
+Nested Class Summary
+ + + + + + + +
Nested classes/interfaces inherited from class java.awt.geom.Point2D
java.awt.geom.Point2D.Double, java.awt.geom.Point2D.Float
+  + + + + + + + + + + + +
+Constructor Summary
Point2DInteger(int xx, + int yy) + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ doublegetX() + +
+           
+ doublegetY() + +
+           
+ voidsetLocation(double xx, + double yy) + +
+           
+ java.lang.StringtoString() + +
+           
+ + + + + + + +
Methods inherited from class java.awt.geom.Point2D
clone, distance, distance, distance, distanceSq, distanceSq, distanceSq, equals, hashCode, setLocation
+ + + + + + + +
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+Point2DInteger

+
+public Point2DInteger(int xx,
+                      int yy)
+
+
+ + + + + + + + +
+Method Detail
+ +

+getX

+
+public double getX()
+
+
+
Specified by:
getX in class java.awt.geom.Point2D
+
+
+
+
+
+
+ +

+getY

+
+public double getY()
+
+
+
Specified by:
getY in class java.awt.geom.Point2D
+
+
+
+
+
+
+ +

+setLocation

+
+public void setLocation(double xx,
+                        double yy)
+
+
+
Specified by:
setLocation in class java.awt.geom.Point2D
+
+
+
+
+
+
+ +

+toString

+
+public java.lang.String toString()
+
+
+
Overrides:
toString in class java.lang.Object
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/wiiusej/WiiMoteEvent.html b/WiiuseJ/doc/wiiusej/WiiMoteEvent.html new file mode 100644 index 0000000..1753a06 --- /dev/null +++ b/WiiuseJ/doc/wiiusej/WiiMoteEvent.html @@ -0,0 +1,1710 @@ + + + + + + +WiiMoteEvent + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +wiiusej +
+Class WiiMoteEvent

+
+java.lang.Object
+  extended by wiiusej.WiiMoteEvent
+
+
+
+
public class WiiMoteEvent
extends java.lang.Object
+ + +

+Class that is a bean to be filled by the wiiuse API. +

+ +

+

+
Author:
+
gduche
+
+
+ +

+ + + + + + + + + + + + + + +
+Constructor Summary
WiiMoteEvent() + +
+          Default constructor
WiiMoteEvent(int id) + +
+          Construct the Wiimote setting up the id.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidaddIRpoint(int x, + int y) + +
+          Add IR Point in the list (Max 4 points)
+ voidEmptyIRPoints() + +
+          Clear IR points.
+ floatgetBatteryLevel() + +
+          Get battery level.
+ shortgetButtonsHeld() + +
+          get the int storing the buttons held
+ shortgetButtonsJustPressed() + +
+          Get the int storing the buttons just pressed
+ shortgetButtonsJustReleased() + +
+          Get the int storing the buttons just released
+ GForcegetGforce() + +
+          Get the gravity force.
+ Point2DInteger[]getIRPoints() + +
+          Get list of IR points.
+ shortgetLeds() + +
+          Get status of the leds .
+ OrientationgetOrientation() + +
+           
+ intgetWiimoteId() + +
+          Get Wiimote ID
+ booleanisButtonAHeld() + +
+           
+ booleanisButtonAJustPressed() + +
+           
+ booleanisButtonAJustReleased() + +
+           
+ booleanisButtonBHeld() + +
+           
+ booleanisButtonBJustPressed() + +
+           
+ booleanisButtonBJustReleased() + +
+           
+ booleanisButtonDownHeld() + +
+           
+ booleanisButtonDownJustPressed() + +
+           
+ booleanisButtonDownJustReleased() + +
+           
+ booleanisButtonHomeHeld() + +
+           
+ booleanisButtonHomeJustPressed() + +
+           
+ booleanisButtonHomeJustReleased() + +
+           
+ booleanisButtonLeftHeld() + +
+           
+ booleanisButtonLeftJustPressed() + +
+           
+ booleanisButtonLeftJustReleased() + +
+           
+ booleanisButtonMinusHeld() + +
+           
+ booleanisButtonMinusJustPressed() + +
+           
+ booleanisButtonMinusJustReleased() + +
+           
+ booleanisButtonOneHeld() + +
+           
+ booleanisButtonOneJustPressed() + +
+           
+ booleanisButtonOneJustReleased() + +
+           
+ booleanisButtonPlusHeld() + +
+           
+ booleanisButtonPlusJustPressed() + +
+           
+ booleanisButtonPlusJustReleased() + +
+           
+ booleanisButtonRightHeld() + +
+           
+ booleanisButtonRightJustPressed() + +
+           
+ booleanisButtonRightJustReleased() + +
+           
+ booleanisButtonTwoHeld() + +
+           
+ booleanisButtonTwoJustPressed() + +
+           
+ booleanisButtonTwoJustReleased() + +
+           
+ booleanisButtonUpHeld() + +
+           
+ booleanisButtonUpJustPressed() + +
+           
+ booleanisButtonUpJustReleased() + +
+           
+ booleanisConnected() + +
+          True if the wiimote is connected false otherwise.
+ booleanisIrActive() + +
+          Tell if the IR Tracking is active.
+ booleanisMotionSensingActive() + +
+          Get the flag indicating if the motion sensing is active.
+ booleanisRumbleActive() + +
+          Get the status of rumble.
+ booleanisSpeakerEnabled() + +
+          Tell if the speaker is enable for this wiimote
+ booleanisThereAttachment() + +
+          Tell if there is an attachment to the Wiimote
+ voidsetBatteryLevel(float batteryLevel) + +
+          Set level battery.
+ voidsetButtonsHeld(short buttonsHeld) + +
+          set the int storing the buttons held
+ voidsetButtonsJustPressed(short buttonsJustPressed) + +
+          set the int storing the buttons just pressed
+ voidsetButtonsJustReleased(short buttonsJustReleased) + +
+          set the int storing the buttons just released
+ voidsetConnected() + +
+          Set the connected value to true.
+ voidsetDisconnected() + +
+          Set the connected value to false.
+ voidsetGforce(float x, + float y, + float z) + +
+          Set the gravity force.
+ voidsetIrActive() + +
+          Set the value isIrActive to true
+ voidsetIrInactive() + +
+          Set the value isIrActive to true
+ voidsetLeds(short leds) + +
+          Set Status of the leds.
+ voidsetMotionSensingActive() + +
+          Set the motion sensing flag to active.
+ voidsetMotionSensingInactive() + +
+          Set the motion sensing flag to inactive.
+ voidsetOrientation(float r, + float p, + float y) + +
+          Set orientation of the wiimote.
+ voidsetRumbleActive() + +
+          Set Rumble flag to Active.
+ voidsetRumbleInactive() + +
+          Set Rumble flag to Inactive.
+ voidsetSpeakerDisabled() + +
+          Set the flag for the speaker to "disabled"
+ voidsetSpeakerEnabled() + +
+          Set the flag for the speaker to "enabled"
+ voidsetThereIsAnAttachment() + +
+          Set the flag for the attachment to true
+ voidsetThereIsNoAttachment() + +
+          Set the flag for the attachment to false
+ voidsetWiimoteId(int wiimoteId) + +
+          Set Wiimote ID
+ java.lang.StringtoString() + +
+           
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+WiiMoteEvent

+
+public WiiMoteEvent()
+
+
Default constructor +

+

+
+ +

+WiiMoteEvent

+
+public WiiMoteEvent(int id)
+
+
Construct the Wiimote setting up the id. +

+

+
Parameters:
id - the Wiimote id
+
+ + + + + + + + +
+Method Detail
+ +

+getWiimoteId

+
+public int getWiimoteId()
+
+
Get Wiimote ID +

+

+ +
Returns:
the wiimote id.
+
+
+
+ +

+setWiimoteId

+
+public void setWiimoteId(int wiimoteId)
+
+
Set Wiimote ID +

+

+
Parameters:
wiimoteId - id of the wiimote
+
+
+
+ +

+isConnected

+
+public boolean isConnected()
+
+
True if the wiimote is connected false otherwise. +

+

+ +
Returns:
return the connected status.
+
+
+
+ +

+setConnected

+
+public void setConnected()
+
+
Set the connected value to true. +

+

+
+
+
+
+ +

+setDisconnected

+
+public void setDisconnected()
+
+
Set the connected value to false. +

+

+
+
+
+
+ +

+getBatteryLevel

+
+public float getBatteryLevel()
+
+
Get battery level. +

+

+ +
Returns:
battery level. 1 = 100%
+
+
+
+ +

+setBatteryLevel

+
+public void setBatteryLevel(float batteryLevel)
+
+
Set level battery. +

+

+
Parameters:
batteryLevel - must be between 0 and 1
+
+
+
+ +

+getLeds

+
+public short getLeds()
+
+
Get status of the leds . +

+

+ +
Returns:
an int representing LEDS turned on.
+
+
+
+ +

+setLeds

+
+public void setLeds(short leds)
+
+
Set Status of the leds. +

+

+
Parameters:
leds -
+
+
+
+ +

+isSpeakerEnabled

+
+public boolean isSpeakerEnabled()
+
+
Tell if the speaker is enable for this wiimote +

+

+ +
Returns:
TRUE if it enabled false otherwise
+
+
+
+ +

+setSpeakerEnabled

+
+public void setSpeakerEnabled()
+
+
Set the flag for the speaker to "enabled" +

+

+
+
+
+
+ +

+setSpeakerDisabled

+
+public void setSpeakerDisabled()
+
+
Set the flag for the speaker to "disabled" +

+

+
+
+
+
+ +

+isThereAttachment

+
+public boolean isThereAttachment()
+
+
Tell if there is an attachment to the Wiimote +

+

+ +
Returns:
TRUE if it there is one false otherwise
+
+
+
+ +

+setThereIsAnAttachment

+
+public void setThereIsAnAttachment()
+
+
Set the flag for the attachment to true +

+

+
+
+
+
+ +

+setThereIsNoAttachment

+
+public void setThereIsNoAttachment()
+
+
Set the flag for the attachment to false +

+

+
+
+
+
+ +

+isRumbleActive

+
+public boolean isRumbleActive()
+
+
Get the status of rumble. +

+

+ +
Returns:
true if the rumble is active false otherwise
+
+
+
+ +

+setRumbleActive

+
+public void setRumbleActive()
+
+
Set Rumble flag to Active. +

+

+
+
+
+
+ +

+setRumbleInactive

+
+public void setRumbleInactive()
+
+
Set Rumble flag to Inactive. +

+

+
+
+
+
+ +

+getButtonsJustPressed

+
+public short getButtonsJustPressed()
+
+
Get the int storing the buttons just pressed +

+

+ +
Returns:
the int storing the buttons just pressed
+
+
+
+ +

+setButtonsJustPressed

+
+public void setButtonsJustPressed(short buttonsJustPressed)
+
+
set the int storing the buttons just pressed +

+

+
Parameters:
buttonsJustPressed -
+
+
+
+ +

+getButtonsJustReleased

+
+public short getButtonsJustReleased()
+
+
Get the int storing the buttons just released +

+

+ +
Returns:
the int storing the buttons just released
+
+
+
+ +

+setButtonsJustReleased

+
+public void setButtonsJustReleased(short buttonsJustReleased)
+
+
set the int storing the buttons just released +

+

+
Parameters:
buttonsJustReleased -
+
+
+
+ +

+getButtonsHeld

+
+public short getButtonsHeld()
+
+
get the int storing the buttons held +

+

+ +
Returns:
the int storing the buttons held
+
+
+
+ +

+setButtonsHeld

+
+public void setButtonsHeld(short buttonsHeld)
+
+
set the int storing the buttons held +

+

+
Parameters:
buttonsHeld -
+
+
+
+ +

+isIrActive

+
+public boolean isIrActive()
+
+
Tell if the IR Tracking is active. +

+

+ +
Returns:
TRUE if it is active or false otherwise.
+
+
+
+ +

+setIrActive

+
+public void setIrActive()
+
+
Set the value isIrActive to true +

+

+
+
+
+
+ +

+setIrInactive

+
+public void setIrInactive()
+
+
Set the value isIrActive to true +

+

+
+
+
+
+ +

+getIRPoints

+
+public Point2DInteger[] getIRPoints()
+
+
Get list of IR points. +

+

+ +
Returns:
the list of 2D points
+
+
+
+ +

+addIRpoint

+
+public void addIRpoint(int x,
+                       int y)
+
+
Add IR Point in the list (Max 4 points) +

+

+
Parameters:
x - x value
y - y value
+
+
+
+ +

+EmptyIRPoints

+
+public void EmptyIRPoints()
+
+
Clear IR points. +

+

+
+
+
+
+ +

+isMotionSensingActive

+
+public boolean isMotionSensingActive()
+
+
Get the flag indicating if the motion sensing is active. +

+

+ +
Returns:
true if the motion sensing is active false otherwise
+
+
+
+ +

+setMotionSensingActive

+
+public void setMotionSensingActive()
+
+
Set the motion sensing flag to active. +

+

+
+
+
+
+ +

+setMotionSensingInactive

+
+public void setMotionSensingInactive()
+
+
Set the motion sensing flag to inactive. +

+

+
+
+
+
+ +

+getOrientation

+
+public Orientation getOrientation()
+
+
+ +
Returns:
the orientation
+
+
+
+ +

+setOrientation

+
+public void setOrientation(float r,
+                           float p,
+                           float y)
+
+
Set orientation of the wiimote. +

+

+
Parameters:
r - roll
p - pitch
y - yaw
+
+
+
+ +

+getGforce

+
+public GForce getGforce()
+
+
Get the gravity force. +

+

+ +
Returns:
the gforce
+
+
+
+ +

+setGforce

+
+public void setGforce(float x,
+                      float y,
+                      float z)
+
+
Set the gravity force. +

+

+
Parameters:
x - gravity force on x axis
y - gravity force on y axis
z - gravity force on z axis
+
+
+
+ +

+isButtonOneJustPressed

+
+public boolean isButtonOneJustPressed()
+
+
+
+
+
+
+ +

+isButtonOneJustReleased

+
+public boolean isButtonOneJustReleased()
+
+
+
+
+
+
+ +

+isButtonOneHeld

+
+public boolean isButtonOneHeld()
+
+
+
+
+
+
+ +

+isButtonTwoJustPressed

+
+public boolean isButtonTwoJustPressed()
+
+
+
+
+
+
+ +

+isButtonTwoJustReleased

+
+public boolean isButtonTwoJustReleased()
+
+
+
+
+
+
+ +

+isButtonTwoHeld

+
+public boolean isButtonTwoHeld()
+
+
+
+
+
+
+ +

+isButtonAJustPressed

+
+public boolean isButtonAJustPressed()
+
+
+
+
+
+
+ +

+isButtonAJustReleased

+
+public boolean isButtonAJustReleased()
+
+
+
+
+
+
+ +

+isButtonAHeld

+
+public boolean isButtonAHeld()
+
+
+
+
+
+
+ +

+isButtonBJustPressed

+
+public boolean isButtonBJustPressed()
+
+
+
+
+
+
+ +

+isButtonBJustReleased

+
+public boolean isButtonBJustReleased()
+
+
+
+
+
+
+ +

+isButtonBHeld

+
+public boolean isButtonBHeld()
+
+
+
+
+
+
+ +

+isButtonLeftJustPressed

+
+public boolean isButtonLeftJustPressed()
+
+
+
+
+
+
+ +

+isButtonLeftJustReleased

+
+public boolean isButtonLeftJustReleased()
+
+
+
+
+
+
+ +

+isButtonLeftHeld

+
+public boolean isButtonLeftHeld()
+
+
+
+
+
+
+ +

+isButtonRightJustPressed

+
+public boolean isButtonRightJustPressed()
+
+
+
+
+
+
+ +

+isButtonRightJustReleased

+
+public boolean isButtonRightJustReleased()
+
+
+
+
+
+
+ +

+isButtonRightHeld

+
+public boolean isButtonRightHeld()
+
+
+
+
+
+
+ +

+isButtonUpJustPressed

+
+public boolean isButtonUpJustPressed()
+
+
+
+
+
+
+ +

+isButtonUpJustReleased

+
+public boolean isButtonUpJustReleased()
+
+
+
+
+
+
+ +

+isButtonUpHeld

+
+public boolean isButtonUpHeld()
+
+
+
+
+
+
+ +

+isButtonDownJustPressed

+
+public boolean isButtonDownJustPressed()
+
+
+
+
+
+
+ +

+isButtonDownJustReleased

+
+public boolean isButtonDownJustReleased()
+
+
+
+
+
+
+ +

+isButtonDownHeld

+
+public boolean isButtonDownHeld()
+
+
+
+
+
+
+ +

+isButtonMinusJustPressed

+
+public boolean isButtonMinusJustPressed()
+
+
+
+
+
+
+ +

+isButtonMinusJustReleased

+
+public boolean isButtonMinusJustReleased()
+
+
+
+
+
+
+ +

+isButtonMinusHeld

+
+public boolean isButtonMinusHeld()
+
+
+
+
+
+
+ +

+isButtonPlusJustPressed

+
+public boolean isButtonPlusJustPressed()
+
+
+
+
+
+
+ +

+isButtonPlusJustReleased

+
+public boolean isButtonPlusJustReleased()
+
+
+
+
+
+
+ +

+isButtonPlusHeld

+
+public boolean isButtonPlusHeld()
+
+
+
+
+
+
+ +

+isButtonHomeJustPressed

+
+public boolean isButtonHomeJustPressed()
+
+
+
+
+
+
+ +

+isButtonHomeJustReleased

+
+public boolean isButtonHomeJustReleased()
+
+
+
+
+
+
+ +

+isButtonHomeHeld

+
+public boolean isButtonHomeHeld()
+
+
+
+
+
+
+ +

+toString

+
+public java.lang.String toString()
+
+
+
Overrides:
toString in class java.lang.Object
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/wiiusej/WiiUseApi.html b/WiiuseJ/doc/wiiusej/WiiUseApi.html new file mode 100644 index 0000000..ba93758 --- /dev/null +++ b/WiiuseJ/doc/wiiusej/WiiUseApi.html @@ -0,0 +1,260 @@ + + + + + + +WiiUseApi + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +wiiusej +
+Class WiiUseApi

+
+java.lang.Object
+  extended by wiiusej.WiiUseApi
+
+
+
+
public class WiiUseApi
extends java.lang.Object
+ + +

+Singleton used to manipulate WiiUse Api. +

+ +

+

+
Author:
+
gduche
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
WiiUseApi() + +
+           
+  + + + + + + + + + + + +
+Method Summary
+static voidmain(java.lang.String[] args) + +
+           
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+WiiUseApi

+
+public WiiUseApi()
+
+
+ + + + + + + + +
+Method Detail
+ +

+main

+
+public static void main(java.lang.String[] args)
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/wiiusej/WiiUseApiListener.html b/WiiuseJ/doc/wiiusej/WiiUseApiListener.html new file mode 100644 index 0000000..6b6b328 --- /dev/null +++ b/WiiuseJ/doc/wiiusej/WiiUseApiListener.html @@ -0,0 +1,215 @@ + + + + + + +WiiUseApiListener + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +wiiusej +
+Interface WiiUseApiListener

+
+
All Superinterfaces:
java.util.EventListener
+
+
+
All Known Implementing Classes:
Tests
+
+
+
+
public interface WiiUseApiListener
extends java.util.EventListener
+ + +

+


+ +

+ + + + + + + + + + + + +
+Method Summary
+ voidwiimoteEvent(WiiMoteEvent e) + +
+           
+  +

+ + + + + + + + +
+Method Detail
+ +

+wiimoteEvent

+
+void wiimoteEvent(WiiMoteEvent e)
+
+
+
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/wiiusej/WiiUseApiManager.html b/WiiuseJ/doc/wiiusej/WiiUseApiManager.html new file mode 100644 index 0000000..26f981e --- /dev/null +++ b/WiiuseJ/doc/wiiusej/WiiUseApiManager.html @@ -0,0 +1,652 @@ + + + + + + +WiiUseApiManager + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +wiiusej +
+Class WiiUseApiManager

+
+java.lang.Object
+  extended by java.lang.Thread
+      extended by wiiusej.WiiUseApiManager
+
+
+
All Implemented Interfaces:
java.lang.Runnable
+
+
+
+
public class WiiUseApiManager
extends java.lang.Thread
+ + +

+


+ +

+ + + + + + + +
+Nested Class Summary
+ + + + + + + +
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
+  + + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
+  + + + + + + + + + + +
+Constructor Summary
WiiUseApiManager() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidactivateIRTRacking(int id) + +
+          Activate IR Tracking for the wiimotes with the given id.
+ voidactivateMotionSensing(int id) + +
+          Activate IR Tracking of the wiimotes with the given id.
+ voidactivateRumble(int id) + +
+          Activate the rumble for the wiimotes with the given id.
+ voidaddWiiUseApiListener(WiiUseApiListener listener) + +
+           
+ voidcloseConnection(int id) + +
+          Ask the thread to close a connection.
+ intconnectWiimotes() + +
+          Connect wiimote and get the nu ber of wiimotes connected.
+ voiddeactivateIRTRacking(int id) + +
+          Deactivate IR Tracking for the wiimotes with the given id.
+ voiddeactivateMotionSensing(int id) + +
+           
+ voiddeactivateRumble(int id) + +
+          Deactivate the rumble for the wiimotes with the given id.
+static WiiUseApiManagergetInstance() + +
+           
+ intgetNbConnectedWiimotes() + +
+          Get the number of wiimotes connected.
+ voidgetStatus(int id) + +
+           
+ WiiUseApiListener[]getWiiUseApiListeners() + +
+           
+ booleanloadLibrary() + +
+          Load the wiimote library.
+ voidnotifyWiiUseApiListener(WiiMoteEvent evt) + +
+           
+ voidremoveWiiUseApiListener(WiiUseApiListener listener) + +
+           
+ voidrun() + +
+           
+ voidshutdown() + +
+          Stop thread and shutdown wiiuse Api.
+ + + + + + + +
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+WiiUseApiManager

+
+public WiiUseApiManager()
+
+
+ + + + + + + + +
+Method Detail
+ +

+getInstance

+
+public static WiiUseApiManager getInstance()
+
+
+
+
+
+
+ +

+loadLibrary

+
+public boolean loadLibrary()
+
+
Load the wiimote library. +

+

+ +
Returns:
false if the library is not loaded true otherwise.
+
+
+
+ +

+connectWiimotes

+
+public int connectWiimotes()
+
+
Connect wiimote and get the nu ber of wiimotes connected. Supposed to be + used once. +

+

+ +
Returns:
0 if nothing connected or the number of wiimotes connected.
+
+
+
+ +

+closeConnection

+
+public void closeConnection(int id)
+
+
Ask the thread to close a connection. +

+

+
Parameters:
id - id of the wiimote to disconnect.
+
+
+
+ +

+getNbConnectedWiimotes

+
+public int getNbConnectedWiimotes()
+
+
Get the number of wiimotes connected. +

+

+ +
Returns:
the number of wiimotes connected.
+
+
+
+ +

+shutdown

+
+public void shutdown()
+
+
Stop thread and shutdown wiiuse Api. +

+

+
+
+
+
+ +

+activateRumble

+
+public void activateRumble(int id)
+
+
Activate the rumble for the wiimotes with the given id. +

+

+
Parameters:
id - the id of the wiimote.
+
+
+
+ +

+deactivateRumble

+
+public void deactivateRumble(int id)
+
+
Deactivate the rumble for the wiimotes with the given id. +

+

+
Parameters:
id - the id of the wiimote.
+
+
+
+ +

+activateIRTRacking

+
+public void activateIRTRacking(int id)
+
+
Activate IR Tracking for the wiimotes with the given id. +

+

+
Parameters:
id - the id of the wiimote.
+
+
+
+ +

+deactivateIRTRacking

+
+public void deactivateIRTRacking(int id)
+
+
Deactivate IR Tracking for the wiimotes with the given id. +

+

+
Parameters:
id - the id of the wiimote.
+
+
+
+ +

+activateMotionSensing

+
+public void activateMotionSensing(int id)
+
+
Activate IR Tracking of the wiimotes with the given id. +

+

+
Parameters:
id - the id of the wiimote.
+
+
+
+ +

+deactivateMotionSensing

+
+public void deactivateMotionSensing(int id)
+
+
+
+
+
+
+ +

+getStatus

+
+public void getStatus(int id)
+
+
+
+
+
+
+ +

+run

+
+public void run()
+
+
+
Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread
+
+
+
+
+
+
+ +

+addWiiUseApiListener

+
+public void addWiiUseApiListener(WiiUseApiListener listener)
+
+
+
+
+
+
+ +

+removeWiiUseApiListener

+
+public void removeWiiUseApiListener(WiiUseApiListener listener)
+
+
+
+
+
+
+ +

+getWiiUseApiListeners

+
+public WiiUseApiListener[] getWiiUseApiListeners()
+
+
+
+
+
+
+ +

+notifyWiiUseApiListener

+
+public void notifyWiiUseApiListener(WiiMoteEvent evt)
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/wiiusej/class-use/GForce.html b/WiiuseJ/doc/wiiusej/class-use/GForce.html new file mode 100644 index 0000000..fd7eff6 --- /dev/null +++ b/WiiuseJ/doc/wiiusej/class-use/GForce.html @@ -0,0 +1,180 @@ + + + + + + +Uses of Class wiiusej.GForce + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
wiiusej.GForce

+
+ + + + + + + + + +
+Packages that use GForce
wiiusej  
+  +

+ + + + + +
+Uses of GForce in wiiusej
+  +

+ + + + + + + + + +
Methods in wiiusej that return GForce
+ GForceWiiMoteEvent.getGforce() + +
+          Get the gravity force.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/wiiusej/class-use/Orientation.html b/WiiuseJ/doc/wiiusej/class-use/Orientation.html new file mode 100644 index 0000000..33b181a --- /dev/null +++ b/WiiuseJ/doc/wiiusej/class-use/Orientation.html @@ -0,0 +1,180 @@ + + + + + + +Uses of Class wiiusej.Orientation + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
wiiusej.Orientation

+
+ + + + + + + + + +
+Packages that use Orientation
wiiusej  
+  +

+ + + + + +
+Uses of Orientation in wiiusej
+  +

+ + + + + + + + + +
Methods in wiiusej that return Orientation
+ OrientationWiiMoteEvent.getOrientation() + +
+           
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/wiiusej/class-use/Point2DInteger.html b/WiiuseJ/doc/wiiusej/class-use/Point2DInteger.html new file mode 100644 index 0000000..cbc766f --- /dev/null +++ b/WiiuseJ/doc/wiiusej/class-use/Point2DInteger.html @@ -0,0 +1,180 @@ + + + + + + +Uses of Class wiiusej.Point2DInteger + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
wiiusej.Point2DInteger

+
+ + + + + + + + + +
+Packages that use Point2DInteger
wiiusej  
+  +

+ + + + + +
+Uses of Point2DInteger in wiiusej
+  +

+ + + + + + + + + +
Methods in wiiusej that return Point2DInteger
+ Point2DInteger[]WiiMoteEvent.getIRPoints() + +
+          Get list of IR points.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/wiiusej/class-use/WiiMoteEvent.html b/WiiuseJ/doc/wiiusej/class-use/WiiMoteEvent.html new file mode 100644 index 0000000..f98961d --- /dev/null +++ b/WiiuseJ/doc/wiiusej/class-use/WiiMoteEvent.html @@ -0,0 +1,217 @@ + + + + + + +Uses of Class wiiusej.WiiMoteEvent + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
wiiusej.WiiMoteEvent

+
+ + + + + + + + + + + + + +
+Packages that use WiiMoteEvent
tests  
wiiusej  
+  +

+ + + + + +
+Uses of WiiMoteEvent in tests
+  +

+ + + + + + + + + +
Methods in tests with parameters of type WiiMoteEvent
+ voidTests.wiimoteEvent(WiiMoteEvent e) + +
+           
+  +

+ + + + + +
+Uses of WiiMoteEvent in wiiusej
+  +

+ + + + + + + + + + + + + +
Methods in wiiusej with parameters of type WiiMoteEvent
+ voidWiiUseApiManager.notifyWiiUseApiListener(WiiMoteEvent evt) + +
+           
+ voidWiiUseApiListener.wiimoteEvent(WiiMoteEvent e) + +
+           
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/wiiusej/class-use/WiiUseApi.html b/WiiuseJ/doc/wiiusej/class-use/WiiUseApi.html new file mode 100644 index 0000000..122d1d7 --- /dev/null +++ b/WiiuseJ/doc/wiiusej/class-use/WiiUseApi.html @@ -0,0 +1,144 @@ + + + + + + +Uses of Class wiiusej.WiiUseApi + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
wiiusej.WiiUseApi

+
+No usage of wiiusej.WiiUseApi +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/wiiusej/class-use/WiiUseApiListener.html b/WiiuseJ/doc/wiiusej/class-use/WiiUseApiListener.html new file mode 100644 index 0000000..18def67 --- /dev/null +++ b/WiiuseJ/doc/wiiusej/class-use/WiiUseApiListener.html @@ -0,0 +1,233 @@ + + + + + + +Uses of Interface wiiusej.WiiUseApiListener + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
wiiusej.WiiUseApiListener

+
+ + + + + + + + + + + + + +
+Packages that use WiiUseApiListener
tests  
wiiusej  
+  +

+ + + + + +
+Uses of WiiUseApiListener in tests
+  +

+ + + + + + + + + +
Classes in tests that implement WiiUseApiListener
+ classTests + +
+           
+  +

+ + + + + +
+Uses of WiiUseApiListener in wiiusej
+  +

+ + + + + + + + + +
Methods in wiiusej that return WiiUseApiListener
+ WiiUseApiListener[]WiiUseApiManager.getWiiUseApiListeners() + +
+           
+  +

+ + + + + + + + + + + + + +
Methods in wiiusej with parameters of type WiiUseApiListener
+ voidWiiUseApiManager.addWiiUseApiListener(WiiUseApiListener listener) + +
+           
+ voidWiiUseApiManager.removeWiiUseApiListener(WiiUseApiListener listener) + +
+           
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/wiiusej/class-use/WiiUseApiManager.html b/WiiuseJ/doc/wiiusej/class-use/WiiUseApiManager.html new file mode 100644 index 0000000..575e9ed --- /dev/null +++ b/WiiuseJ/doc/wiiusej/class-use/WiiUseApiManager.html @@ -0,0 +1,180 @@ + + + + + + +Uses of Class wiiusej.WiiUseApiManager + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
wiiusej.WiiUseApiManager

+
+ + + + + + + + + +
+Packages that use WiiUseApiManager
wiiusej  
+  +

+ + + + + +
+Uses of WiiUseApiManager in wiiusej
+  +

+ + + + + + + + + +
Methods in wiiusej that return WiiUseApiManager
+static WiiUseApiManagerWiiUseApiManager.getInstance() + +
+           
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/wiiusej/package-frame.html b/WiiuseJ/doc/wiiusej/package-frame.html new file mode 100644 index 0000000..738c9c0 --- /dev/null +++ b/WiiuseJ/doc/wiiusej/package-frame.html @@ -0,0 +1,53 @@ + + + + + + +wiiusej + + + + + + + + + + + +wiiusej + + + + +
+Interfaces  + +
+WiiUseApiListener
+ + + + + + +
+Classes  + +
+GForce +
+Orientation +
+Point2DInteger +
+WiiMoteEvent +
+WiiUseApi +
+WiiUseApiManager
+ + + + diff --git a/WiiuseJ/doc/wiiusej/package-summary.html b/WiiuseJ/doc/wiiusej/package-summary.html new file mode 100644 index 0000000..ffa864b --- /dev/null +++ b/WiiuseJ/doc/wiiusej/package-summary.html @@ -0,0 +1,191 @@ + + + + + + +wiiusej + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package wiiusej +

+ + + + + + + + + +
+Interface Summary
WiiUseApiListener 
+  + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
GForceRepresents gravity force on each axis.
OrientationClass that represents the orientation of the wiimote.
Point2DInteger 
WiiMoteEventClass that is a bean to be filled by the wiiuse API.
WiiUseApiSingleton used to manipulate WiiUse Api.
WiiUseApiManager 
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/wiiusej/package-tree.html b/WiiuseJ/doc/wiiusej/package-tree.html new file mode 100644 index 0000000..31fe288 --- /dev/null +++ b/WiiuseJ/doc/wiiusej/package-tree.html @@ -0,0 +1,166 @@ + + + + + + +wiiusej Class Hierarchy + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package wiiusej +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/doc/wiiusej/package-use.html b/WiiuseJ/doc/wiiusej/package-use.html new file mode 100644 index 0000000..7fcd238 --- /dev/null +++ b/WiiuseJ/doc/wiiusej/package-use.html @@ -0,0 +1,225 @@ + + + + + + +Uses of Package wiiusej + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
wiiusej

+
+ + + + + + + + + + + + + +
+Packages that use wiiusej
tests  
wiiusej  
+  +

+ + + + + + + + + + + +
+Classes in wiiusej used by tests
WiiMoteEvent + +
+          Class that is a bean to be filled by the wiiuse API.
WiiUseApiListener + +
+           
+  +

+ + + + + + + + + + + + + + + + + + + + + + + +
+Classes in wiiusej used by wiiusej
GForce + +
+          Represents gravity force on each axis.
Orientation + +
+          Class that represents the orientation of the wiimote.
Point2DInteger + +
+           
WiiMoteEvent + +
+          Class that is a bean to be filled by the wiiuse API.
WiiUseApiListener + +
+           
WiiUseApiManager + +
+           
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/WiiuseJ/libWiiuseJ.dll b/WiiuseJ/libWiiuseJ.dll new file mode 100644 index 0000000000000000000000000000000000000000..a045dbdba80baf058bc85961a294da8e522b11f3 GIT binary patch literal 25232 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 literal 0 HcmV?d00001 diff --git a/WiiuseJ/src/tests/LedsTask.java b/WiiuseJ/src/tests/LedsTask.java new file mode 100644 index 0000000..d4adda2 --- /dev/null +++ b/WiiuseJ/src/tests/LedsTask.java @@ -0,0 +1,30 @@ +package tests; + +import java.util.TimerTask; + +import wiiusej.WiiUseApiManager; + +public class LedsTask extends TimerTask { + + private int i = 0; + private int inc = 1; + + @Override + public void run() { + if(i==0){ + WiiUseApiManager.getInstance().setLeds(1, true, false, false, false); + }else if(i==1){ + WiiUseApiManager.getInstance().setLeds(1, false, true, false, false); + }else if(i==2){ + WiiUseApiManager.getInstance().setLeds(1, false, false, true, false); + }else if(i==3){ + WiiUseApiManager.getInstance().setLeds(1, false, false, false, true); + } + if (i==0) i=1; + if (i==3) i=-1; + i = i+inc; + + } + +} + diff --git a/WiiuseJ/src/tests/Tests.java b/WiiuseJ/src/tests/Tests.java new file mode 100644 index 0000000..dbe4ccc --- /dev/null +++ b/WiiuseJ/src/tests/Tests.java @@ -0,0 +1,374 @@ +package tests; + +import java.awt.AWTException; +import java.awt.Robot; +import java.awt.event.InputEvent; +import java.util.ArrayList; + +import wiiusej.Point2DInteger; +import wiiusej.WiiMoteEvent; +import wiiusej.WiiUseApiListener; +import wiiusej.WiiUseApiManager; + +public class Tests implements WiiUseApiListener { + + Robot robot; + + private static int DISPLAY_EACH_VALUE = 1; + private static int DUMP = 2; + private static int MOVE_MOUSE = 3; + private static int ORIENT_THRESH_CONT = 4; + private static int TEST_LEDS = 5; + + int dump = ORIENT_THRESH_CONT; + + public Tests() { + try { + robot = new Robot(); + } catch (AWTException e) { + e.printStackTrace(); + } + } + + @Override + public void wiimoteEvent(WiiMoteEvent e) { + + /* leave if nothing is connected */ + if (WiiUseApiManager.getInstance().getNbConnectedWiimotes() == 0) { + WiiUseApiManager.getInstance().shutdown(); + } + + if (dump == DISPLAY_EACH_VALUE) { + if (e.isConnected()) { + // System.out.println("*********** WIIMOTE ID : "+ + // e.getWiimoteId() + " **************"); + /* button ONE */ + if (e.isButtonOneJustPressed()) { + System.out.println("button one pressed"); + } + if (e.isButtonOneHeld()) { + System.out.println("button one held"); + } + if (e.isButtonOneJustReleased()) { + System.out.println("button one released"); + } + + /* button TWO */ + if (e.isButtonTwoJustPressed()) { + System.out.println("button two pressed"); + } + if (e.isButtonTwoHeld()) { + System.out.println("button two held"); + } + if (e.isButtonTwoJustReleased()) { + System.out.println("button two released"); + } + + /* button A */ + if (e.isButtonAJustPressed()) { + System.out.println("button A pressed"); + } + if (e.isButtonAHeld()) { + System.out.println("button A held"); + } + if (e.isButtonAJustReleased()) { + System.out.println("button A released"); + } + + /* button B */ + if (e.isButtonBJustPressed()) { + System.out.println("button B pressed"); + } + if (e.isButtonBHeld()) { + System.out.println("button B held"); + } + if (e.isButtonBJustReleased()) { + System.out.println("button B released"); + } + + /* button LEFT */ + if (e.isButtonLeftJustPressed()) { + System.out.println("button Left pressed"); + } + if (e.isButtonLeftHeld()) { + System.out.println("button Left held"); + } + if (e.isButtonLeftJustReleased()) { + System.out.println("button Left released"); + } + + /* button RIGHT */ + if (e.isButtonRightJustPressed()) { + System.out.println("button Right pressed"); + } + if (e.isButtonRightHeld()) { + System.out.println("button Right held"); + } + if (e.isButtonRightJustReleased()) { + System.out.println("button Right released"); + } + + /* button UP */ + if (e.isButtonUpJustPressed()) { + System.out.println("button UP pressed"); + } + if (e.isButtonUpHeld()) { + System.out.println("button UP held"); + } + if (e.isButtonUpJustReleased()) { + System.out.println("button UP released"); + } + + /* button DOWN */ + if (e.isButtonDownJustPressed()) { + System.out.println("button DOWN pressed"); + } + if (e.isButtonDownHeld()) { + System.out.println("button DOWN held"); + } + if (e.isButtonDownJustReleased()) { + System.out.println("button DOWN released"); + } + + /* button MINUS */ + if (e.isButtonMinusJustPressed()) { + System.out.println("button MINUS pressed"); + } + if (e.isButtonMinusHeld()) { + System.out.println("button MINUS held"); + } + if (e.isButtonMinusJustReleased()) { + System.out.println("button MINUS released"); + } + + /* button PLUS */ + if (e.isButtonPlusJustPressed()) { + System.out.println("button PLUS pressed"); + } + if (e.isButtonPlusHeld()) { + System.out.println("button PLUS held"); + } + if (e.isButtonPlusJustReleased()) { + System.out.println("button PLUS released"); + } + + /* button HOME */ + if (e.isButtonHomeJustPressed()) { + System.out.println("button HOME pressed"); + } + if (e.isButtonHomeHeld()) { + System.out.println("button HOME held"); + } + if (e.isButtonHomeJustReleased()) { + System.out.println("button HOME released"); + } + + /* get status */ + if (e.isButtonMinusJustPressed()&&e.isButtonPlusJustPressed()) { + WiiUseApiManager.getInstance().getStatus(1); + } + + /* Activate rumble */ + if (e.isButtonOneJustPressed()) { + System.out.println("Rumble Activated"); + WiiUseApiManager.getInstance().activateRumble(1); + } + if (e.isButtonTwoJustPressed()) { + System.out.println("Rumble Deactivated"); + WiiUseApiManager.getInstance().deactivateRumble(1); + } + + /* Activate IR Tracking */ + if (e.isButtonAJustPressed()) { + System.out.println("IR Activated"); + WiiUseApiManager.getInstance().activateIRTRacking(1); + } + if (e.isButtonBJustPressed()) { + System.out.println("IR Deactivated"); + WiiUseApiManager.getInstance().deactivateIRTRacking(1); + } + + /* Activate Motion sensing */ + if (e.isButtonPlusJustPressed()){ + System.out.println("Motion sensing Activated"); + WiiUseApiManager.getInstance().activateMotionSensing(1); + } + if (e.isButtonMinusJustPressed()){ + System.out.println("Motion sensing Deactivated"); + WiiUseApiManager.getInstance().deactivateMotionSensing(1); + } + + /* display status */ + if (e.getBatteryLevel() != -1) { + System.out + .println("battery level : " + e.getBatteryLevel()); + System.out.println("= --- Leds : " + e.getLeds() + "\n"); + System.out.println("= --- Rumble : " + e.isRumbleActive() + "\n"); + } + + /* display ir points */ + if (e.isIrActive()) { + Point2DInteger[] list = e.getIRPoints(); + for (int i = 0; i < list.length; i++) { + if (list[i] != null) + System.out.print("Point :(" + list[i].getX() + "," + + list[i].getY() + ") "); + } + System.out.println(""); + } + + /* display motion sensing */ + if (e.isMotionSensingActive()){ + System.out.println("Motion Sensing :"+e.getOrientation()+" , "+e.getGforce()); + } + + /* leave test */ + if (e.isButtonHomeJustPressed()) { + System.out.println("LEAVING TEST"); + WiiUseApiManager.getInstance().closeConnection(1); + } + } else { + System.out.println(" WIIMOTE ID : " + e.getWiimoteId() + + " DISCONNECTED !!!!!"); + WiiUseApiManager.getInstance().closeConnection(1); + } + } else if (dump == DUMP) { + System.out.println(e); + /* Activate all */ + if (e.isButtonAJustPressed()) { + System.out.println("IR Activated"); + WiiUseApiManager.getInstance().activateIRTRacking(1); + WiiUseApiManager.getInstance().activateMotionSensing(1); + WiiUseApiManager.getInstance().activateRumble(1); + } + if (e.isButtonBJustPressed()) { + System.out.println("IR Deactivated"); + WiiUseApiManager.getInstance().deactivateIRTRacking(1); + WiiUseApiManager.getInstance().deactivateMotionSensing(1); + WiiUseApiManager.getInstance().deactivateRumble(1); + } + + /* leave test */ + if (e.isButtonHomeJustPressed()) { + System.out.println("LEAVING TEST"); + WiiUseApiManager.getInstance().closeConnection(1); + if (WiiUseApiManager.getInstance().getNbConnectedWiimotes() == 0) { + WiiUseApiManager.getInstance().shutdown(); + } + } + } else if (dump == MOVE_MOUSE) { + /* Activate IR Tracking */ + if (e.isButtonOneJustPressed()) { + System.out.println("IR Activated"); + WiiUseApiManager.getInstance().activateIRTRacking(1); + } + if (e.isButtonTwoJustPressed()) { + System.out.println("IR Deactivated"); + WiiUseApiManager.getInstance().deactivateIRTRacking(1); + } + + /* button A */ + if (e.isButtonAJustPressed()) { + robot.mousePress(InputEvent.BUTTON1_MASK); + } + if (e.isButtonAJustReleased()) { + robot.mouseRelease(InputEvent.BUTTON1_MASK); + } + + /* button B */ + if (e.isButtonBJustPressed()) { + robot.mousePress(InputEvent.BUTTON2_MASK); + } + if (e.isButtonBJustReleased()) { + robot.mouseRelease(InputEvent.BUTTON2_MASK); + } + + Point2DInteger[] list = e.getIRPoints(); + if (e.isIrActive() && list[0] != null) { + + int x1 = (int) list[0].getX(); + int y1 = (int) list[0].getY(); + + int mousex = (int) Math.round(((double) x1 / 1024.0) * 1280.0); + int mousey = (int) Math.round(((double) y1 / 768.0) * 1024.0); + robot.mouseMove(mousex, mousey); + } + + /* leave test */ + if (e.isButtonHomeJustPressed()) { + System.out.println("LEAVING TEST"); + WiiUseApiManager.getInstance().closeConnection(1); + } + }else if(dump == ORIENT_THRESH_CONT){ + WiiUseApiManager.getInstance().activateMotionSensing(1); + if (e.isButtonOneJustPressed()) { + System.out.println("Continous activated"); + WiiUseApiManager.getInstance().activateContinuous(1); + } + if (e.isButtonTwoJustPressed()) { + System.out.println("Continous deactivated"); + WiiUseApiManager.getInstance().deactivateContinuous(1); + } + if (e.isButtonAJustPressed()) { + System.out.println("Smoothing activated"); + WiiUseApiManager.getInstance().activateSmoothing(1); + } + if (e.isButtonBJustPressed()) { + System.out.println("Smoothing deactivated"); + WiiUseApiManager.getInstance().deactivateSmoothing(1); + } + if (e.isButtonPlusJustPressed()) { + System.out.println("Threshold orientation 10 degrees"); + WiiUseApiManager.getInstance().setOrientationThreshold(1, 10); + } + if (e.isButtonMinusJustPressed()) { + System.out.println("Threshold orientation 0.5 degrees"); + WiiUseApiManager.getInstance().setOrientationThreshold(1, (float)0.5); + } + System.out.println(e); + + + /* leave test */ + if (e.isButtonHomeJustPressed()) { + System.out.println("LEAVING TEST"); + WiiUseApiManager.getInstance().closeConnection(1); + } + }else if(dump == TEST_LEDS){ + WiiUseApiManager.getInstance().activateMotionSensing(1); + if (e.isButtonUpJustPressed()) { + WiiUseApiManager.getInstance().setLeds(1, true, false, false, false); + } + if (e.isButtonDownJustPressed()) { + WiiUseApiManager.getInstance().setLeds(1, false, true, false, false); + } + if (e.isButtonLeftJustPressed()) { + WiiUseApiManager.getInstance().setLeds(1, false, false, true, false); + } + if (e.isButtonRightJustPressed()) { + WiiUseApiManager.getInstance().setLeds(1, false, false, false, true); + } + + /* leave test */ + if (e.isButtonHomeJustPressed()) { + System.out.println("LEAVING TEST"); + WiiUseApiManager.getInstance().closeConnection(1); + } + } + } + + /** + * @param args + */ + public static void main(String[] args) { + Tests tests = new Tests(); + WiiUseApiManager manager = WiiUseApiManager.getInstance(); + manager.addWiiUseApiListener(tests); + manager.loadLibrary(); + manager.connectWiimotes(); + manager.start(); +// java.util.Timer timer = new java.util.Timer(); +// timer.scheduleAtFixedRate(new LedsTask(), 0, 100); + + } + +} diff --git a/WiiuseJ/src/wiiusej/GForce.java b/WiiuseJ/src/wiiusej/GForce.java new file mode 100644 index 0000000..3cd513d --- /dev/null +++ b/WiiuseJ/src/wiiusej/GForce.java @@ -0,0 +1,81 @@ +package wiiusej; + +/** + * Represents gravity force on each axis. + * @author gduche + * + */ +public class GForce { + + private float x; + private float y; + private float z; + + /** + * Default constructor; + */ + public GForce(){ + x = 0; + y = 0; + z = 0; + } + + /** + * Constructor with gravity force on each axis. + * @param xx x value + * @param yy x value + * @param zz x value + */ + public GForce(float xx, float yy, float zz){ + x = xx; + y = yy; + z = zz; + } + + /** + * @return the x + */ + public float getX() { + return x; + } + + /** + * @param x the x to set + */ + public void setX(float x) { + this.x = x; + } + + /** + * @return the y + */ + public float getY() { + return y; + } + + /** + * @param y the y to set + */ + public void setY(float y) { + this.y = y; + } + + /** + * @return the z + */ + public float getZ() { + return z; + } + + /** + * @param z the z to set + */ + public void setZ(float z) { + this.z = z; + } + + @Override + public String toString() { + return "Gravity force : ("+x+", "+y+","+z+")"; + } +} diff --git a/WiiuseJ/src/wiiusej/LedsRequest.java b/WiiuseJ/src/wiiusej/LedsRequest.java new file mode 100644 index 0000000..c068ba3 --- /dev/null +++ b/WiiuseJ/src/wiiusej/LedsRequest.java @@ -0,0 +1,109 @@ +package wiiusej; + +/** + * Represents a request to set leds of the wiimote with WiiUse API. + * @author gduche + * + */ +public class LedsRequest extends wiiusej.WiiUseApiRequest { + + private boolean led1, led2, led3, led4; + + /** + * Constructor setting the id of the wiimote concerned. + * + * @param id + * id of the wiimote concerned + * @param type + * type of the request + */ + public LedsRequest(int id, int type) { + super(id, type); + } + + /** + * Constructor setting the id of the wiimote concerned. + * + * @param id + * id of the wiimote concerned + * @param type + * type of the request + * @param l1 + * led1 status. True=ON, False=OFF + * @param l2 + * led2 status. True=ON, False=OFF + * @param l3 + * led3 status. True=ON, False=OFF + * @param l4 + * led4 status. True=ON, False=OFF + */ + public LedsRequest(int id, int type, boolean l1, boolean l2, boolean l3, + boolean l4) { + super(id, type); + led1 = l1; + led2 = l2; + led3 = l3; + led4 = l4; + } + + /** + * @return the led1 + */ + public boolean isLed1() { + return led1; + } + + /** + * @param led1 + * the led1 to set + */ + public void setLed1(boolean led1) { + this.led1 = led1; + } + + /** + * @return the led2 + */ + public boolean isLed2() { + return led2; + } + + /** + * @param led2 + * the led2 to set + */ + public void setLed2(boolean led2) { + this.led2 = led2; + } + + /** + * @return the led3 + */ + public boolean isLed3() { + return led3; + } + + /** + * @param led3 + * the led3 to set + */ + public void setLed3(boolean led3) { + this.led3 = led3; + } + + /** + * @return the led4 + */ + public boolean isLed4() { + return led4; + } + + /** + * @param led4 + * the led4 to set + */ + public void setLed4(boolean led4) { + this.led4 = led4; + } + +} diff --git a/WiiuseJ/src/wiiusej/OrientThresholdRequest.java b/WiiuseJ/src/wiiusej/OrientThresholdRequest.java new file mode 100644 index 0000000..0d3cc14 --- /dev/null +++ b/WiiuseJ/src/wiiusej/OrientThresholdRequest.java @@ -0,0 +1,54 @@ +package wiiusej; + +/** + * Represents a request to set orientation Threshold in Wiiuse API. + * Orientation Threshold is the minimum angle (in degrees) between two events. + * @author gduche + * + */ +public class OrientThresholdRequest extends WiiUseApiRequest { + + private float thresholhd; + + /** + * Constructor setting the id of the wiimote concerned. + * + * @param id + * the id of the wiimote concerned. + */ + public OrientThresholdRequest(int id, int type) { + super(id, type); + } + + /** + * Constructor setting the id of the wiimote concerned. + * + * @param id + * the id of the wiimote concerned. + * @param type + * type of the request + * @param th + * threshold in degrees + */ + public OrientThresholdRequest(int id, int type, float th) { + super(id, type); + thresholhd = th; + } + + /** + * @return the thresholhd + */ + public float getThresholhd() { + return thresholhd; + } + + /** + * @param thresholhd the thresholhd to set + */ + public void setThresholhd(float thresholhd) { + this.thresholhd = thresholhd; + } + + + +} diff --git a/WiiuseJ/src/wiiusej/Orientation.java b/WiiuseJ/src/wiiusej/Orientation.java new file mode 100644 index 0000000..52ebd7c --- /dev/null +++ b/WiiuseJ/src/wiiusej/Orientation.java @@ -0,0 +1,77 @@ +package wiiusej; + +/** + * Class that represents the orientation of the wiimote. + * @author gduche + * + */ +public class Orientation { + + private float roll; + private float pitch; + private float yaw; + + /** + * Default constructor. + */ + public Orientation(){ + roll = 0; + pitch = 0; + yaw = 0; + } + + /** + * Contructor with raw, pitch , yaw. + * @param r raw + * @param p pitch + * @param y yaw + */ + public Orientation(float r, float p, float y){ + roll = r; + pitch = p; + yaw = y; + } + + /** + * @return the roll + */ + public float getRoll() { + return roll; + } + /** + * @param roll the roll to set + */ + public void setRoll(float roll) { + this.roll = roll; + } + /** + * @return the pitch + */ + public float getPitch() { + return pitch; + } + /** + * @param pitch the pitch to set + */ + public void setPitch(float pitch) { + this.pitch = pitch; + } + /** + * @return the yaw + */ + public float getYaw() { + return yaw; + } + /** + * @param yaw the yaw to set + */ + public void setYaw(float yaw) { + this.yaw = yaw; + } + + @Override + public String toString() { + return "Orientation : (roll: "+roll+", pitch: "+pitch+", yaw: "+yaw+")"; + } + +} diff --git a/WiiuseJ/src/wiiusej/Point2DInteger.java b/WiiuseJ/src/wiiusej/Point2DInteger.java new file mode 100644 index 0000000..f2f9181 --- /dev/null +++ b/WiiuseJ/src/wiiusej/Point2DInteger.java @@ -0,0 +1,35 @@ +package wiiusej; + +import java.awt.geom.Point2D; + +public class Point2DInteger extends Point2D { + private int x; + private int y; + + public Point2DInteger(int xx, int yy) { + super(); + setLocation(xx,yy); + } + + @Override + public double getX() { + return x; + } + + @Override + public double getY() { + return y; + } + + @Override + public void setLocation(double xx, double yy) { + this.x = (int)xx; + this.y = (int)yy; + } + + @Override + public String toString() { + return "("+x+","+y+")"; + } + +} diff --git a/WiiuseJ/src/wiiusej/WiiMoteEvent.java b/WiiuseJ/src/wiiusej/WiiMoteEvent.java new file mode 100644 index 0000000..663298d --- /dev/null +++ b/WiiuseJ/src/wiiusej/WiiMoteEvent.java @@ -0,0 +1,706 @@ +package wiiusej; + +import java.util.ArrayList; +import java.util.Iterator; + +/** + * Class that is a bean to be filled by the wiiuse API. + * + * @author gduche + * + */ +public class 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; + + private static short WIIMOTE_LED_1 = 1; + private static short WIIMOTE_LED_2 = 2; + private static short WIIMOTE_LED_3 = 4; + private static short WIIMOTE_LED_4 = 8; + + private static short NB_LEDS = 4; + + /* ID */ + private int wiimoteId = -1; + + /* Status variables */ + private boolean connected = false; + + private float batteryLevel = -1; + + private short leds = 0; + + private boolean isSpeakerEnabled = false; + + private boolean isThereAttachment = false; + + private boolean isRumbleActive = false; + + private float orientationThreshold = 0; + + private boolean isContinuousActive = false; + + private boolean isSmoothingActive = false; + + /* Buttons */ + private short buttonsJustPressed = 0; + private short buttonsJustReleased = 0; + private short buttonsHeld = 0; + + /* IR Tracking */ + private boolean isIrActive = false; + private Point2DInteger[] IRPoints; + + /* Motion Sensing */ + private boolean isMotionSensingActive = false; + private Orientation orientation; + private GForce gforce; + + /** + * Default constructor + */ + public WiiMoteEvent() { + // init IRPoints array + IRPoints = new Point2DInteger[NB_LEDS]; + } + + /** + * Construct the Wiimote setting up the id. + * + * @param id + * the Wiimote id + */ + public WiiMoteEvent(int id) { + this(); + wiimoteId = id; + } + + /** + * Get Wiimote ID + * + * @return the wiimote id. + */ + public int getWiimoteId() { + return wiimoteId; + } + + /** + * Set Wiimote ID + * + * @param wiimoteId + * id of the wiimote + */ + void setWiimoteId(int wiimoteId) { + this.wiimoteId = wiimoteId; + } + + /** + * True if the wiimote is connected false otherwise. + * + * @return return the connected status. + */ + public boolean isConnected() { + return connected; + } + + /** + * Set the connected value to true. + */ + void setConnected() { + this.connected = true; + } + + /** + * Set the connected value to false. + */ + void setDisconnected() { + this.connected = false; + } + + /** + * Get battery level. + * + * @return battery level. 1 = 100% + */ + public float getBatteryLevel() { + return batteryLevel; + } + + /** + * Set level battery. + * + * @param batteryLevel + * must be between 0 and 1 + */ + void setBatteryLevel(float batteryLevel) { + this.batteryLevel = batteryLevel; + } + + /** + * Get status of the leds . + * + * @return a short representing LEDS turned on. + */ + public short getLeds() { + return leds; + } + + /** + * Set Status of the leds. + * + * @param leds + */ + void setLeds(short leds) { + this.leds = leds; + } + + /** + * Tell if the speaker is enable for this wiimote + * + * @return TRUE if it enabled false otherwise + */ + public boolean isSpeakerEnabled() { + return isSpeakerEnabled; + } + + /** + * Set the flag for the speaker to "enabled" + */ + void setSpeakerEnabled() { + this.isSpeakerEnabled = true; + } + + /** + * Set the flag for the speaker to "disabled" + */ + void setSpeakerDisabled() { + this.isSpeakerEnabled = false; + } + + /** + * Tell if there is an attachment to the Wiimote + * + * @return TRUE if it there is one false otherwise + */ + public boolean isThereAttachment() { + return isThereAttachment; + } + + /** + * Set the flag for the attachment to true + */ + void setThereIsAnAttachment() { + this.isThereAttachment = true; + } + + /** + * Set the flag for the attachment to false + */ + void setThereIsNoAttachment() { + this.isThereAttachment = false; + } + + /** + * Get the status of rumble. + * + * @return true if the rumble is active false otherwise + */ + public boolean isRumbleActive() { + return isRumbleActive; + } + + /** + * Set Rumble flag to Active. + */ + void setRumbleActive() { + this.isRumbleActive = true; + } + + /** + * Set Rumble flag to Inactive. + */ + void setRumbleInactive() { + this.isRumbleActive = false; + } + + /** + * Get orientation threshold. + * + * @return the orientationThreshold + */ + public float getOrientationThreshold() { + return orientationThreshold; + } + + /** + * Set the orientation threshold. + * + * @param orientationThreshold + * the orientationThreshold to set + */ + void setOrientationThreshold(float orientationThreshold) { + this.orientationThreshold = orientationThreshold; + } + + /** + * Tell if the CONTINUOUS option is activated. + * + * @return the isContinuousActive + */ + public boolean isContinuousActive() { + return isContinuousActive; + } + + /** + * Set the CONTINUOUS option active. + */ + void setContinuousActive() { + this.isContinuousActive = true; + } + + /** + * Set the CONTINUOUS option inactive. + */ + void setContinuousInactive() { + this.isContinuousActive = false; + } + + /** + * Tell if the option SMOOTHING is activated. + * + * @return the isSmoothingActive + */ + public boolean isSmoothingActive() { + return isSmoothingActive; + } + + /** + * Set SMOOTHING option to active. + */ + void setSmoothingActive() { + this.isSmoothingActive = true; + } + + /** + * Set SMOOTHING option to inactive. + */ + void setSmoothingInactive() { + this.isSmoothingActive = false; + } + + /** + * Get the short storing the buttons just pressed + * + * @return the short storing the buttons just pressed + */ + public short getButtonsJustPressed() { + return buttonsJustPressed; + } + + /** + * set the short storing the buttons just pressed + * + * @param buttonsJustPressed + */ + void setButtonsJustPressed(short buttonsJustPressed) { + this.buttonsJustPressed = buttonsJustPressed; + } + + /** + * Get the short storing the buttons just released + * + * @return the short storing the buttons just released + */ + public short getButtonsJustReleased() { + return buttonsJustReleased; + } + + /** + * set the short storing the buttons just released + * + * @param buttonsJustReleased + */ + void setButtonsJustReleased(short buttonsJustReleased) { + this.buttonsJustReleased = buttonsJustReleased; + } + + /** + * get the short storing the buttons held + * + * @return the short storing the buttons held + */ + public short getButtonsHeld() { + return buttonsHeld; + } + + /** + * set the short storing the buttons held + * + * @param buttonsHeld + */ + void setButtonsHeld(short buttonsHeld) { + this.buttonsHeld = buttonsHeld; + } + + /** + * Tell if the IR Tracking is active. + * + * @return TRUE if it is active or false otherwise. + */ + public boolean isIrActive() { + return isIrActive; + } + + /** + * Set the value isIrActive to true + */ + void setIrActive() { + this.isIrActive = true; + } + + /** + * Set the value isIrActive to true + */ + void setIrInactive() { + this.isIrActive = false; + } + + /** + * Get list of IR points. + * + * @return the list of 2D points + */ + public Point2DInteger[] getIRPoints() { + return IRPoints; + } + + /** + * Add IR Point in the list (Max 4 points) + * + * @param x + * x value + * @param y + * y value + */ + void addIRpoint(int x, int y) { + for (int i = 0; i < IRPoints.length; i++) { + if (IRPoints[i] == null) { + IRPoints[i] = new Point2DInteger(x, y); + return; + } + } + return; + } + + /** + * Clear IR points. + */ + void EmptyIRPoints() { + for (int i = 0; i < IRPoints.length; i++) { + IRPoints[i] = null; + } + } + + /** + * Get the flag indicating if the motion sensing is active. + * + * @return true if the motion sensing is active false otherwise + */ + public boolean isMotionSensingActive() { + return isMotionSensingActive; + } + + /** + * Set the motion sensing flag to active. + */ + void setMotionSensingActive() { + this.isMotionSensingActive = true; + } + + /** + * Set the motion sensing flag to inactive. + */ + void setMotionSensingInactive() { + this.isMotionSensingActive = false; + } + + /** + * @return the orientation + */ + public Orientation getOrientation() { + return orientation; + } + + /** + * Set orientation of the wiimote. + * + * @param r + * roll + * @param p + * pitch + * @param y + * yaw + */ + void setOrientation(float r, float p, float y) { + this.orientation = new Orientation(r, p, y); + } + + /** + * Get the gravity force. + * + * @return the gforce + */ + public GForce getGforce() { + return gforce; + } + + /** + * Set the gravity force. + * + * @param x + * gravity force on x axis + * @param y + * gravity force on y axis + * @param z + * gravity force on z axis + */ + void setGforce(float x, float y, float z) { + this.gforce = new GForce(x, y, z); + } + + /** **************** BUTTONS Methods ***************** */ + /* generic button functions */ + + private boolean buttonTest(short buttonBitsDefinition, short buttons) { + return (buttons & buttonBitsDefinition) == buttonBitsDefinition; + } + + private boolean isButtonJustPressed(short buttonBitsDefinition) { + return buttonTest(buttonBitsDefinition, buttonsJustPressed) + && !isButtonHeld(buttonBitsDefinition); + } + + private boolean isButtonJustReleased(short buttonBitsDefinition) { + return buttonTest(buttonBitsDefinition, buttonsJustReleased); + } + + private boolean isButtonHeld(short buttonBitsDefinition) { + return buttonTest(buttonBitsDefinition, 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); + } + + /* 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); + } + + /* 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); + } + + /* 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); + } + + /* 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); + } + + /* 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); + } + + /* 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); + } + + /* 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); + } + + /* 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); + } + + /* 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); + } + + /* 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); + } + + @Override + public String toString() { + super.toString(); + String out = ""; + /* Status */ + out += "/*********** WIIMOTE ID :" + wiimoteId + " ********/\n"; + out += "--- connected : " + connected + "\n"; + out += "--- Battery level : " + batteryLevel + "\n"; + out += "= --- Leds : " + leds + "\n"; + out += "--- Speaker enabled : " + isSpeakerEnabled + "\n"; + out += "--- Attachment ? : " + isThereAttachment + "\n"; + out += "--- Rumble ? : " + isRumbleActive + "\n"; + out += "--- Orientation threshold value ? : " + orientationThreshold + + "\n"; + out += "--- Continuous ? : " + isContinuousActive + "\n"; + out += "--- Smoothing ? : " + isSmoothingActive + "\n"; + /* Display buttons */ + out += "/******** Buttons ********/\n"; + out += "--- Buttons just pressed : " + buttonsJustPressed + "\n"; + out += "--- Buttons just released : " + buttonsJustReleased + "\n"; + out += "--- Buttons held : " + buttonsHeld + "\n"; + + /* Display IR Tracking */ + out += "/******** IR Tracking ********/\n"; + out += "--- Active : " + isIrActive + "\n"; + if (isIrActive) { + out += "--- Seen points\n"; + for (int i = 0; i < IRPoints.length; i++) { + if (IRPoints[i] != null) { + out += IRPoints[i].toString(); + } + } + } + + /* Motion sensing */ + out += "/******** Motion sensing ********/\n"; + out += "--- Motion sensing : " + isMotionSensingActive + "\n"; + if (isMotionSensingActive) { + out += "--- " + orientation + "\n"; + out += "--- " + gforce + "\n"; + } + return out; + } + +} diff --git a/WiiuseJ/src/wiiusej/WiiUseApi.java b/WiiuseJ/src/wiiusej/WiiUseApi.java new file mode 100644 index 0000000..091f269 --- /dev/null +++ b/WiiuseJ/src/wiiusej/WiiUseApi.java @@ -0,0 +1,174 @@ +package wiiusej; + +/** + * Singleton used to manipulate WiiUse Api. + * @author gduche + * + */ +public class WiiUseApi { + + static { + System.loadLibrary("libWiiuseJ"); + } + + private static WiiUseApi instance = new WiiUseApi(); + + /** + * Get the only instance of WiiUseApi. + * @return + */ + static WiiUseApi getInstance(){ + return instance; + } + + /** + * Load the library. + * + * @return 0 if there is an error, 1 if everything is ok. + */ + native int loadLibrary(); + + /** + * Try to connect to 2 wiimotes. Make them rumble to show they are + * connected. + * + * @return 0 if there is an error otherwise it returns the number of + * wiimotes connected. + */ + native int doConnections(); + + /** + * Close connection to the wiimote with the given id. + * + */ + native void closeConnection(int id); + + /** + * Shutdown Wiiuse API. + * @return 0 if there is an error, 1 if everything is ok. + */ + native void shutdownApi(); + + /** + * Activate rumble on the wiimote with the given id. + * @param id the id of the wiimote. + */ + native void activateRumble(int id); + + /** + * Deactivate rumble on the wiimote with the given id. + * + * @param id the id of the wiimote. + */ + native void deactivateRumble(int id); + + /** + * Activate IR Tracking on the wiimote with the given id. + * @param id the id of the wiimote. + */ + native void activateIRTracking(int id); + + /** + * Deactivate IR Tracking on the wiimote with the given id. + * @param id the id of the wiimote. + */ + native void deactivateIRTracking(int id); + + /** + * Activate motion sensing on the wiimote with the given id. + * @param id the id of the wiimote. + */ + native void activateMotionSensing(int id); + + /** + * Deactivate motion sensing on the wiimote with the given id. + * @param id the id of the wiimote. + */ + native void deactivateMotionSensing(int id); + + /** + * Set wiimote leds status. + * @param id the id of the wiimote concerned + * @param led1 status of led1: True=ON, False=OFF + * @param led2 status of led2: True=ON, False=OFF + * @param led3 status of led3: True=ON, False=OFF + * @param led4 status of led4: True=ON, False=OFF + */ + native void setLeds(int id, boolean led1, boolean led2, boolean led3, boolean led4); + + /** + * Set how many degrees an angle must change to generate an event. + * @param id id of the wiimote concerned + * @param angle minimum angle detected by an event + */ + native void setOrientThreshold(int id, float angle); + + /** + * Make the the accelerometers give smoother results. + * This is set by default. + * @param id the id of the wiimote concerned + */ + native void activateSmoothing(int id); + + /** + * Make the the accelerometers give raw results. + * @param id the id of the wiimote concerned + */ + native void deactivateSmoothing(int id); + + /** + * Make the wiimote generate an event each time we poll. + * Not set by default. + * @param id the id of the wiimote concerned + */ + native void activateContinuous(int id); + + /** + * Make the wiimote generate an event only when there is one. + * @param id the id of the wiimote concerned + */ + native void deactivateContinuous(int id); + + /** + * Get status and values from the wiimotes and send it through callbacks. + * + * @param id the id of the wiimote of which we want the status. + */ + native void getStatus(int id); + + /** + * Get status and values from the wiimotes and send it through callbacks. + * + * @param mote The WiimoteEvent object to fill with the datas. + */ + native void specialPoll(WiiMoteEvent mote); + + + /* Tests */ + public static void main(String[] args) { + + /* Test JNI Side */ + WiiUseApi manager = new WiiUseApi(); + + int value = manager.loadLibrary(); + System.out.println("loadLibrary : " + value); + + value = manager.doConnections(); + System.out.println("doConnections : " + value); + + WiiMoteEvent mote = new WiiMoteEvent(); + + manager.getStatus(1); + System.out.println("Status : \n" + mote); + + System.out.println(""); + System.out.println("!!!!!!!!!!!!!! Polling !!!!!!!!!"); + while (true) { + manager.specialPoll(mote); + System.out.println(mote); + mote.EmptyIRPoints(); + } + // manager.closeConnectionsAndShutDown(); + } + +} diff --git a/WiiuseJ/src/wiiusej/WiiUseApiListener.java b/WiiuseJ/src/wiiusej/WiiUseApiListener.java new file mode 100644 index 0000000..81f3792 --- /dev/null +++ b/WiiuseJ/src/wiiusej/WiiUseApiListener.java @@ -0,0 +1,9 @@ +package wiiusej; + + + +public interface WiiUseApiListener extends java.util.EventListener { + + void wiimoteEvent(WiiMoteEvent e); + +} diff --git a/WiiuseJ/src/wiiusej/WiiUseApiManager.java b/WiiuseJ/src/wiiusej/WiiUseApiManager.java new file mode 100644 index 0000000..178e0c4 --- /dev/null +++ b/WiiuseJ/src/wiiusej/WiiUseApiManager.java @@ -0,0 +1,374 @@ +package wiiusej; + +import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.atomic.AtomicBoolean; + +import javax.swing.event.EventListenerList; + +/** + * Class that manage the use of Wiiuse API. + * + * @author gduche + * + */ +public class WiiUseApiManager extends Thread { + + private static WiiUseApiManager instance = new WiiUseApiManager(); + + private final EventListenerList listeners = new EventListenerList(); + + private WiiUseApi wiiuse = WiiUseApi.getInstance(); + + private boolean loaded = false; + + private int connected = 0; + + private AtomicBoolean running = new AtomicBoolean(false); + + private ConcurrentLinkedQueue requests = new ConcurrentLinkedQueue(); + + public static WiiUseApiManager getInstance() { + return instance; + } + + /** + * Load the wiimote library. + * + * @return false if the library is not loaded true otherwise. + */ + public boolean loadLibrary() { + if (!loaded) {// not yet loaded try to load it + int load = wiiuse.loadLibrary(); + if (load > 0) { + loaded = true; + return true; + } else { + loaded = false; + System.out.println("Error loading the Wiimote library !!!"); + return false; + } + } + // already loaded + return loaded; + } + + /** + * Connect wiimote and get the nu ber of wiimotes connected. Supposed to be + * used once. + * + * @return 0 if nothing connected or the number of wiimotes connected. + */ + public int connectWiimotes() { + if (loaded) { + connected = wiiuse.doConnections(); + System.out.println(connected + " wiimote(s) connected !!!"); + return connected; + } else {// library not loaded, no wiimotes connected + return 0; + } + } + + /** + * Ask the thread to close a connection. + * + * @param id + * id of the wiimote to disconnect. + */ + public void closeConnection(int id) { + requests.add(new WiiUseApiRequest(id, + WiiUseApiRequest.WIIUSE_CLOSE_CONNECTION_REQUEST)); + } + + /** + * Get the number of wiimotes connected. + * + * @return the number of wiimotes connected. + */ + public int getNbConnectedWiimotes() { + return connected; + } + + /** + * Stop thread and shutdown wiiuse Api. + */ + public void shutdown() { + running.set(false); + wiiuse.shutdownApi(); + } + + /** + * Activate the rumble for the wiimotes with the given id. + * + * @param id + * id of the wiimote. + */ + public void activateRumble(int id) { + requests.add(new WiiUseApiRequest(id, + WiiUseApiRequest.WIIUSE_ACTIVATE_RUMBLE_REQUEST)); + } + + /** + * Deactivate the rumble for the wiimotes with the given id. + * + * @param id + * id of the wiimote. + */ + public void deactivateRumble(int id) { + requests.add(new WiiUseApiRequest(id, + WiiUseApiRequest.WIIUSE_DEACTIVATE_RUMBLE_REQUEST)); + } + + /** + * Activate IR Tracking for the wiimotes with the given id. + * + * @param id + * id of the wiimote. + */ + public void activateIRTRacking(int id) { + requests.add(new WiiUseApiRequest(id, + WiiUseApiRequest.WIIUSE_ACTIVATE_IR_TRACKING_REQUEST)); + } + + /** + * Deactivate IR Tracking for the wiimotes with the given id. + * + * @param id + * id of the wiimote. + */ + public void deactivateIRTRacking(int id) { + requests.add(new WiiUseApiRequest(id, + WiiUseApiRequest.WIIUSE_DEACTIVATE_IR_TRACKING_REQUEST)); + } + + /** + * Activate IR Tracking of the wiimotes with the given id. + * + * @param id + * id of the wiimote. + */ + public void activateMotionSensing(int id) { + requests.add(new WiiUseApiRequest(id, + WiiUseApiRequest.WIIUSE_ACTIVATE_MOTION_SENSING_REQUEST)); + } + + /** + * Deactivate IR Tracking of the wiimotes with the given id. + * + * @param id + * id of the wiimote. + */ + public void deactivateMotionSensing(int id) { + requests.add(new WiiUseApiRequest(id, + WiiUseApiRequest.WIIUSE_DEACTIVATE_MOTION_SENSING_REQUEST)); + } + + /** + * Activate smoothing the wiimotes with the given id. + * + * @param id + * id of the wiimote. + */ + public void activateSmoothing(int id) { + requests.add(new WiiUseApiRequest(id, + WiiUseApiRequest.WIIUSE_ACTIVATE_SMOOTHING_REQUEST)); + } + + /** + * Deactivate smoothing the wiimotes with the given id. + * + * @param id + * id of the wiimote. + */ + public void deactivateSmoothing(int id) { + requests.add(new WiiUseApiRequest(id, + WiiUseApiRequest.WIIUSE_DEACTIVATE_SMOOTHING_REQUEST)); + } + + /** + * Activate continuous for the wiimotes with the given id. + * + * @param id + * id of the wiimote. + */ + public void activateContinuous(int id) { + requests.add(new WiiUseApiRequest(id, + WiiUseApiRequest.WIIUSE_ACTIVATE_CONTINUOUS_REQUEST)); + } + + /** + * Deactivate continuous for the wiimotes with the given id. + * + * @param id + * id of the wiimote + */ + public void deactivateContinuous(int id) { + requests.add(new WiiUseApiRequest(id, + WiiUseApiRequest.WIIUSE_DEACTIVATE_CONTINUOUS_REQUEST)); + } + + /** + * Set leds for the wiimotes with the given id. + * + * @param id + * id of the wiimote + * @param l1 + * status of led1. True : ON, False : OFF + * @param l2 + * status of led2. True : ON, False : OFF + * @param l3 + * status of led3. True : ON, False : OFF + * @param l4 + * status of led4. True : ON, False : OFF + */ + public void setLeds(int id, boolean l1, boolean l2, boolean l3, boolean l4) { + requests.add(new LedsRequest(id, WiiUseApiRequest.WIIUSE_LEDS_REQUEST, + l1, l2, l3, l4)); + } + + /** + * Set the orientation threshold for the given id. + * + * @param id + * id of the wiimote + * @param th + * threshold in degrees + */ + public void setOrientationThreshold(int id, float th) { + requests.add(new OrientThresholdRequest(id, + WiiUseApiRequest.WIIUSE_ORIENT_THRESHOLHD_REQUEST, th)); + } + + /** + * Get Status for the wiimote for the given id. + * + * @param id + * id of the wiimote + */ + public void getStatus(int id) { + requests.add(new WiiUseApiRequest(id, + WiiUseApiRequest.WIIUSE_STATUS_REQUEST)); + } + + @Override + public void run() { + + if (loaded && (connected > 0)) { + running.set(true); + + WiiMoteEvent evt = new WiiMoteEvent(); + + // Start polling and tell the observers when there Wiimote events + while (running.get()) { + WiiUseApiRequest req = requests.poll(); + if (req != null) {// there is a request for the wiiuse api + int id = req.getId(); + if (req.getRequestType() == WiiUseApiRequest.WIIUSE_CLOSE_CONNECTION_REQUEST) { + /* Close connections requests */ + wiiuse.closeConnection(id); + connected--; + } else if (req.getRequestType() == WiiUseApiRequest.WIIUSE_STATUS_REQUEST) { + /* Status requests */ + wiiuse.getStatus(id); + } else if (req.getRequestType() == WiiUseApiRequest.WIIUSE_ACTIVATE_RUMBLE_REQUEST) { + /* Activate Rumble requests */ + wiiuse.activateRumble(id); + } else if (req.getRequestType() == WiiUseApiRequest.WIIUSE_DEACTIVATE_RUMBLE_REQUEST) { + /* Deactivate Rumble requests */ + wiiuse.deactivateRumble(id); + } else if (req.getRequestType() == WiiUseApiRequest.WIIUSE_ACTIVATE_IR_TRACKING_REQUEST) { + /* Activate IR Tracking requests */ + wiiuse.activateIRTracking(id); + } else if (req.getRequestType() == WiiUseApiRequest.WIIUSE_DEACTIVATE_IR_TRACKING_REQUEST) { + /* Deactivate IR Tracking requests */ + wiiuse.deactivateIRTracking(id); + } else if (req.getRequestType() == WiiUseApiRequest.WIIUSE_ACTIVATE_MOTION_SENSING_REQUEST) { + /* Activate Motion sensing requests */ + wiiuse.activateMotionSensing(id); + } else if (req.getRequestType() == WiiUseApiRequest.WIIUSE_DEACTIVATE_MOTION_SENSING_REQUEST) { + /* Deactivate Motion sensing requests */ + wiiuse.deactivateMotionSensing(id); + } else if (req.getRequestType() == WiiUseApiRequest.WIIUSE_LEDS_REQUEST) { + /* leds requests */ + LedsRequest reqLed = (LedsRequest) req; + wiiuse.setLeds(id, reqLed.isLed1(), reqLed.isLed2(), + reqLed.isLed3(), reqLed.isLed4()); + } else if (req.getRequestType() == WiiUseApiRequest.WIIUSE_ACTIVATE_SMOOTHING_REQUEST) { + /* Activate smoothing requests */ + wiiuse.activateSmoothing(id); + } else if (req.getRequestType() == WiiUseApiRequest.WIIUSE_DEACTIVATE_SMOOTHING_REQUEST) { + /* Deactivate smoothing requests */ + wiiuse.deactivateSmoothing(id); + } else if (req.getRequestType() == WiiUseApiRequest.WIIUSE_ACTIVATE_CONTINUOUS_REQUEST) { + /* Activate continuous requests */ + wiiuse.activateContinuous(id); + } else if (req.getRequestType() == WiiUseApiRequest.WIIUSE_DEACTIVATE_CONTINUOUS_REQUEST) { + /* Deactivate continuous requests */ + wiiuse.deactivateContinuous(id); + } else if (req.getRequestType() == WiiUseApiRequest.WIIUSE_ORIENT_THRESHOLHD_REQUEST) { + /* set orientation request */ + wiiuse.setOrientThreshold(req.getId(), + ((OrientThresholdRequest) req).getThresholhd()); + } else { + System.out.println("Bad request to Wiiuse API !!!!!"); + } + } + + /* Polling */ + wiiuse.specialPoll(evt); + + if (evt.getWiimoteId() != -1) {// there is an event notify + // observers + notifyWiiUseApiListener(evt); + } + if (evt.getWiimoteId() != -1) {// create a new event when the last event created was filled + if (!evt.isConnected()){//check if it was a disconnection + connected --; + if (connected == 0){ + System.out.println("No more wiimotes connected !!!"); + } + } + evt = new WiiMoteEvent(); + } + } + + } else { + System.out.println("No polling possible !!!"); + } + + } + + /** + * + * @param listener + */ + public void addWiiUseApiListener(WiiUseApiListener listener) { + listeners.add(WiiUseApiListener.class, listener); + } + + /** + * + * @param listener + */ + public void removeWiiUseApiListener(WiiUseApiListener listener) { + listeners.remove(WiiUseApiListener.class, listener); + } + + /** + * + * @return + */ + public WiiUseApiListener[] getWiiUseApiListeners() { + return listeners.getListeners(WiiUseApiListener.class); + } + + /** + * + * @param evt + */ + public void notifyWiiUseApiListener(WiiMoteEvent evt) { + for (WiiUseApiListener listener : getWiiUseApiListeners()) { + listener.wiimoteEvent(evt); + } + } + +} diff --git a/WiiuseJ/src/wiiusej/WiiUseApiRequest.java b/WiiuseJ/src/wiiusej/WiiUseApiRequest.java new file mode 100644 index 0000000..56998c7 --- /dev/null +++ b/WiiuseJ/src/wiiusej/WiiUseApiRequest.java @@ -0,0 +1,82 @@ +package wiiusej; + +/** + * Represents a request we could do to the WiiUse API. + * @author gduche + * + */ +public class WiiUseApiRequest { + + public static int WIIUSE_STATUS_REQUEST=1; + public static int WIIUSE_ACTIVATE_SMOOTHING_REQUEST=2; + public static int WIIUSE_DEACTIVATE_SMOOTHING_REQUEST=-2; + public static int WIIUSE_ACTIVATE_IR_TRACKING_REQUEST=3; + public static int WIIUSE_DEACTIVATE_IR_TRACKING_REQUEST=-3; + public static int WIIUSE_ACTIVATE_MOTION_SENSING_REQUEST=4; + public static int WIIUSE_DEACTIVATE_MOTION_SENSING_REQUEST=-4; + public static int WIIUSE_CLOSE_CONNECTION_REQUEST=5; + public static int WIIUSE_ACTIVATE_CONTINUOUS_REQUEST=6; + public static int WIIUSE_DEACTIVATE_CONTINUOUS_REQUEST=-6; + public static int WIIUSE_ACTIVATE_RUMBLE_REQUEST=7; + public static int WIIUSE_DEACTIVATE_RUMBLE_REQUEST=-7; + public static int WIIUSE_LEDS_REQUEST=8; + public static int WIIUSE_ORIENT_THRESHOLHD_REQUEST=9; + + + private int wiimoteId=0; + private int requestType=0; + + /** + * Constructor setting the id of the wiimote concerned. + * @param id the id of the wiimote concerned. + */ + public WiiUseApiRequest(int id){ + wiimoteId = id; + } + + /** + * Constructor setting the id of the wiimote concerned. + * @param id the id of the wiimote concerned. + * + */ + public WiiUseApiRequest(int id, int type){ + wiimoteId = id; + requestType = type; + } + + /** + * Get id of the wiimote concerned by this request. + * @return id of the wiimote concerned + */ + public int getId(){ + return wiimoteId; + } + + /** + * Set id of the wiimote concerned by this request. + * @param id id fh the wiimote concernet + */ + public void setId(int id){ + wiimoteId = id; + } + + /** + * Get the request type. + * @return the requestType + */ + public int getRequestType() { + return requestType; + } + + /** + * Set the request type. + * @param requestType the requestType to set + */ + public void setRequestType(int requestType) { + this.requestType = requestType; + } + + + +} + diff --git a/WiiuseJ/wiiuse.dll b/WiiuseJ/wiiuse.dll new file mode 100644 index 0000000000000000000000000000000000000000..c6ea93fa8adb95a0baf88aa7dc92a353dbbc9293 GIT binary patch literal 114688 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 HW#7B-J*0N`=WAU2% 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