From 6f1b40d5fe2839c452ba329fc1a8fcf213e956e3 Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Tue, 25 Nov 2014 22:51:25 +0000 Subject: [PATCH] Delete obsolete files --- .classpath | 6 - .gitignore | 10 +- .gradle/1.12/taskArtifacts/cache.properties | 1 - .../1.12/taskArtifacts/cache.properties.lock | Bin 17 -> 0 bytes .gradle/1.12/taskArtifacts/fileHashes.bin | Bin 18790 -> 0 bytes .gradle/1.12/taskArtifacts/fileSnapshots.bin | Bin 18930 -> 0 bytes .../1.12/taskArtifacts/outputFileStates.bin | Bin 18632 -> 0 bytes .gradle/1.12/taskArtifacts/taskArtifacts.bin | Bin 19206 -> 0 bytes WiiUseJ/.classpath | 6 - WiiUseJ/.project | 17 - WiiUseJ/.settings/org.eclipse.jdt.ui.prefs | 3 - WiiUseJ/README.TXT | 64 -- WiiUseJ/WiiUseJ.dll | Bin 30985 -> 0 bytes WiiUseJ/libWiiuseJ.so | Bin 19652 -> 0 bytes WiiUseJ/libwiiuse.so | Bin 40551 -> 0 bytes WiiUseJ/wiiuse.dll | Bin 114688 -> 0 bytes WiiUseJC/.cproject | 338 --------- WiiUseJC/.project | 69 -- WiiUseJC/lib/wiiuse.lib | Bin 8210 -> 0 bytes gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 51348 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 164 +++++ gradlew.bat | 90 +++ src/main/{cpp => c}/wiiusej_WiiUseApi.c | 0 src/main/headers/_wiiuse.h | 653 ++++++++++++++++++ src/main/headers/wiiuse.h | 531 +++++++++++--- 26 files changed, 1339 insertions(+), 619 deletions(-) delete mode 100644 .classpath delete mode 100644 .gradle/1.12/taskArtifacts/cache.properties delete mode 100644 .gradle/1.12/taskArtifacts/cache.properties.lock delete mode 100644 .gradle/1.12/taskArtifacts/fileHashes.bin delete mode 100644 .gradle/1.12/taskArtifacts/fileSnapshots.bin delete mode 100644 .gradle/1.12/taskArtifacts/outputFileStates.bin delete mode 100644 .gradle/1.12/taskArtifacts/taskArtifacts.bin delete mode 100644 WiiUseJ/.classpath delete mode 100644 WiiUseJ/.project delete mode 100644 WiiUseJ/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 WiiUseJ/README.TXT delete mode 100644 WiiUseJ/WiiUseJ.dll delete mode 100644 WiiUseJ/libWiiuseJ.so delete mode 100644 WiiUseJ/libwiiuse.so delete mode 100644 WiiUseJ/wiiuse.dll delete mode 100644 WiiUseJC/.cproject delete mode 100644 WiiUseJC/.project delete mode 100644 WiiUseJC/lib/wiiuse.lib create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat rename src/main/{cpp => c}/wiiusej_WiiUseApi.c (100%) create mode 100644 src/main/headers/_wiiuse.h diff --git a/.classpath b/.classpath deleted file mode 100644 index e4d0db4..0000000 --- a/.classpath +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/.gitignore b/.gitignore index 84c048a..382f913 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,9 @@ -/build/ +build +bin +.gradle +.settings +.project +.classpath +.maven +/.gradle +/.classpath diff --git a/.gradle/1.12/taskArtifacts/cache.properties b/.gradle/1.12/taskArtifacts/cache.properties deleted file mode 100644 index 8d0472e..0000000 --- a/.gradle/1.12/taskArtifacts/cache.properties +++ /dev/null @@ -1 +0,0 @@ -#Mon Nov 24 22:53:03 GMT 2014 diff --git a/.gradle/1.12/taskArtifacts/cache.properties.lock b/.gradle/1.12/taskArtifacts/cache.properties.lock deleted file mode 100644 index 0088986a20a7080876431f0d13e424ab48aa534e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 UcmZQpwP093{jIn)0|ZC_03#Cu{r~^~ diff --git a/.gradle/1.12/taskArtifacts/fileHashes.bin b/.gradle/1.12/taskArtifacts/fileHashes.bin deleted file mode 100644 index ab55474c48e723c6a06371d0ebed73db938a3e7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18790 zcmeI%Pe_wt9Ki9%k&2_qVi$4vmkwKk2*P%7s0U>eJcyCdze6C19z;bD8mLSeI!rwb zBCtY5p@P$=h?IOvTLW{`-A8AywC4_e!S1~xxPl1 z5LNbEA%u<+Jp~rz>{ZV%t`GQijf?;S2q1s}0tg_000IagfB*srAb! zaYNp~s&7%{vE(04zm-lKQ$n;{mdi___^2gYnvrW2fxqUTgkO&CKNI8YO}gIGY}RvY zsqo2SYCzWm`)0kjeB@?(P1IJX_nCEbR`s;?{;GaYMgRc>5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|00D*rIFj{5zH8~p9xFXV@ zJ(1bbIV188uq&AO7>&@+3uHQ(&z7u zzEf?-4+o#fmnt$U-FtaDTGZyfo7xQRei#XUe>SvHX?>-?=KP_y3sEts^5mB7QSm9a z$NFuLJ#%gCuEX?e-<~|XI;FE&?H9svr1F6)eyg}|KK8!$U?*JJIs5g^)yUge;dbY0 Mzl{7bXKu&c7eN4+1^@s6 diff --git a/.gradle/1.12/taskArtifacts/fileSnapshots.bin b/.gradle/1.12/taskArtifacts/fileSnapshots.bin deleted file mode 100644 index ec53cba4a1c09553d264717a4c3c55a4d004a008..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18930 zcmeI(J4?e*6u|MM4-pY<5wVktk3p~sih_%xf`SMlbc;etLz`MKCMg*zTA?U(bnz<) z3I)6Q0tW{rs7u{N+yoIF+%&N*bSx+i^1pDCd(KUAbAMzD$DS61P~fxDgqpT@cJ*2l zGDH9Y1Q0*~0R#|0009ILKmY**5I_I{1Q0*~fqx=kN1Tl`l{XU_@q7;+?)@9KB?yDf zPU!JJH4fai&v%utnN3vxBpAU`YwFs2SjjI`^VPGPA3xtrl;=4jfB*srAbtcTAJ=>9Kh}l1XoTjfji(s6hGr09MHTa)`QUzZ5Z AegFUf diff --git a/.gradle/1.12/taskArtifacts/outputFileStates.bin b/.gradle/1.12/taskArtifacts/outputFileStates.bin deleted file mode 100644 index 6d992799ea7d6d723813c021f056a54d6be61dd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18632 zcmeI%F-QVY0LJl$Xi20TIOyV-LoI@mQ%wnh4K4{nHU&Y0crG^x6%j?z&>*-t=-Sd8 zT;kFY9F7eRQnVJ4HU|2h-UDxLi~oan_ulvM4&HA)XG@5fF?NTT8;!^3@3}2Y1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#~ECj!o{yvWk*GO=~vbn*5QICd-{lFM@IKeNle z-@vEbtFe8j|0H}xvcsy`UUT!Z&d1Hc#p~6e;N~|v-&s5=ZpP~&H_z)_zg6C`60@2o z0tg_000IagfB*srAbeOFNy+1eoIy3OFMm#>wS@!q$=0n^_qMB*OvJn&?Wy*pztQ!!M&j_@{^-?I WTQI{<-gdv_ubi*s(yDDdWXuV~m1m*= diff --git a/.gradle/1.12/taskArtifacts/taskArtifacts.bin b/.gradle/1.12/taskArtifacts/taskArtifacts.bin deleted file mode 100644 index 3514643722e163e15a1274013e883783a250062d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19206 zcmeI%J&O}T7zgkt(Rdm?Jw@cyR?AH86g&v{p4>(7@Q4I07IKqh$WCs}t}~Ntu*f$M z%R>vX5D^se2`rAoLP%p{p;-6?N9bga8B}009U<00Izz00bZa0SG_<0uX=z1Rwwb2teRJ5g1kNLbCB<7B8j8 z58pmz2BVN@>4ce0PDO4xYtlF^Y20qzX?wCBO4-%Ii9y}0C!0NfT^l;gRl}7%5sf~i V0cHPmMN5jhGW{s`oySkV{su&K87lw) diff --git a/WiiUseJ/.classpath b/WiiUseJ/.classpath deleted file mode 100644 index d171cd4..0000000 --- a/WiiUseJ/.classpath +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/WiiUseJ/.project b/WiiUseJ/.project deleted file mode 100644 index 9485f4a..0000000 --- a/WiiUseJ/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - WiiUseJava - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/WiiUseJ/.settings/org.eclipse.jdt.ui.prefs b/WiiUseJ/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 81f7b8f..0000000 --- a/WiiUseJ/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu May 08 01:25:43 CEST 2008 -eclipse.preferences.version=1 -org.eclipse.jdt.ui.text.custom_code_templates= diff --git a/WiiUseJ/README.TXT b/WiiUseJ/README.TXT deleted file mode 100644 index b99935f..0000000 --- a/WiiUseJ/README.TXT +++ /dev/null @@ -1,64 +0,0 @@ -/** - * This file is part of WiiuseJ. - * - * WiiuseJ is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * WiiuseJ is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with WiiuseJ. If not, see . - */ - - -WiiuseJ is a java API to use wiimotes on your computer. This API is built on top of an excellent API call Wiiuse using JNI. - -WiiuseJ intent to be a very simple, easy to use and lightweight java API for wiimotes. - -Some of the great aspects of this API are : - - * The compatibility which is as large as Wiiuse's API compatibility - - * Cross-platform : Windows and linux (like Wiiuse) - - * Easy to use - - -WiiuseJ is made by Guilhem Duché : guiguito1@hotmail.com. -You can contact me if you need more information. - -Go to : http://wiiusej.googlecode.com/ for further documentations. - - - -CHANGELOG : - -wiiusej 0.12b : -- make wiiusej compatible with java 1.5. -- fixed a bug that made Null pointer exception happen when disconnecting several wiimotes. - -wiiusej 0.12a : -- added guitar hero controller support. -- added classic controller support. - -wiiusej 0.12 : -- added nunchuk support. -- all new stuffs from wiiuse 0.12. -- added timeout method. -- added IR sensitivity. -- updated to be able to reconnect wiimotes. -- new architecture behind the scene. -- cleaning of the project. - -wiiusej 0.11 : -- updated with new stuffs from wiiuse 0.11. -- Linux version. -- selectionnable rumble on wiimotes connection. - -wiiusej 0.1 : -- first version on wiiuse 0.1. \ No newline at end of file diff --git a/WiiUseJ/WiiUseJ.dll b/WiiUseJ/WiiUseJ.dll deleted file mode 100644 index 823a419541ffdb58dedd5aef63e72400632e00d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30985 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 Mo+a3RGvS$ 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 B4XOYD diff --git a/WiiUseJ/libwiiuse.so b/WiiUseJ/libwiiuse.so deleted file mode 100644 index 481e0e20e582d736d0abaeef24676b37ffcfea74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40551 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 b94{+aBCMtls^Z2`o<2PH(8ie|)cSt|kSxZ* diff --git a/WiiUseJ/wiiuse.dll b/WiiUseJ/wiiuse.dll deleted file mode 100644 index a7e228c8743a1ff5cd537f1670304e79c2f46c2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114688 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 r0_7Gcw?MfC$}LcCfpQC!TcF$m - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -make - -wiiusej_WiiUseApi.c -true -true -true - - - - - - - - - - - diff --git a/WiiUseJC/.project b/WiiUseJC/.project deleted file mode 100644 index 0f99eae..0000000 --- a/WiiUseJC/.project +++ /dev/null @@ -1,69 +0,0 @@ - - - WiiUseJavaC - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - org.eclipse.cdt.make.core.contents - org.eclipse.cdt.make.core.activeConfigSettings - - - org.eclipse.cdt.make.core.buildLocation - ${workspace_loc:/WiiUseJavaC/Debug} - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - true - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.enableAutoBuild - false - - - org.eclipse.cdt.make.core.append_environment - true - - - ?name? - - - - org.eclipse.cdt.make.core.stopOnError - true - - - org.eclipse.cdt.make.core.buildArguments - - - - org.eclipse.cdt.make.core.buildCommand - make - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.core.cnature - - diff --git a/WiiUseJC/lib/wiiuse.lib b/WiiUseJC/lib/wiiuse.lib deleted file mode 100644 index 4f1b69b85d3d9fe04cfceef86f1325ee47a95c2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8210 zcmb_hOK%iM5H8z1jWK>dvAs^LKsbPHc5QY8k;QN4v-k_duEbHp^ zTQ^tNtSi6V{(1H4t+ku0))NQb=8+TS#qV4c35D1#re!Fwynsw#!+GXtEY*j7M z-Kx6fGUyepeZ#2~!}g$}wHMq<#V&ZENLbgTicURj5Yyr;O}1`(mQ%B~Yj!;xRpZ4; zSKYefIc~-5q4<$r`Fa&6Zq@SGPwS>PMEc>}>UM?TwjJ-W*3)c?>1)UvyFq$Z8kIt+ z@xXFxj$QFAuY?Oxa?5HLl7%9ea=d(@V3&6pE+V6iwr$tye2v4pCRHfg`AVZ2DjL=` zDW~EnqX{ZnyD|@3X|6Lh`AuB8^~aW@gc(PZq~+Tv=Qnlh5}b%+eam&dl9ex4OZiYG z8bWV~^jj}CY|rmn_wt1YTGvQhq<7-pM;jykBl{>09Zfvaru9Z+dt51m)0I_ChDPz6 zE!%CVE!23Lbgi+qUPeD9rXZ`DjOT7{mTgP62~mTq^&q^mUDP)*VCZsQ-fJ)^QPpG~ z)*R2aig{1%FlTA9TQ0eozynk^L#<4<)~9CYi~8`2(|S}~2&3XO#+ggq02@63FM9#j zh5%j-0Nm{d*g={Z2e>!}uss6s8o%#G0iIKkLt2^w_|ymRWDp>WeY)_wj_r>yczr;5 z3Sys!0nQ+O#PSRL?o8qr$GnH%SJ?kO_IZPt7@DCC+Mx#y!C~lwgU}DXkbwg*4Wlp) zBhU#$FaTX}6pq0W9J(8h!!QiO7);`1PQcWj`gWifZ9P8faWLLXg+WW(PvwRT_pKVp zX=#08LT57v72^#P%_|7u8k({%eHO9DS)Mv=gxx)bFQLWI$N;-Lx@KXc%4- z;(3bTE0T)HJmdTZ;x&z&kpZM+3fG)MWS7tqx?X)6ah@&7gT_a1?)Zco4v&Vc8!4Z% z`p_LJ7K`3mD#?sr469`XrojstEn8(qE}Erz%c>rEVoh3zMva*@M9i4AMKcL9T_&Iz ztwB-Tlji-dEAA!VXA$Al6abyH-$LL-zsJ8wNfz|6dC!Vn36A^j^D9r#^_*|$P&L9j8#0enG{a>QST%-eSS_G0{_U#C*)H1ziz zMivc6Kbq#LoxbZ%q2|`z4KH(g_4~}q)f?CRR`U;mQBN8HFx*lJa{&y%R8lB7g@U_P z#kro^c?w@}egPi!pdU@H9i+<30RD7KlH)5!Jvt;OOESoSP$s81#K-I){L$!`aD;Wj zx`nl`3EIufge_@0JDJbPcLuVPcHd6^#7PB{g;+Z&G8L%E?Bu*`B0Kp*R>YU=gvQNvoD{x^iNHeAA`V#eeK{WhI{s_HS7c-+f)( zG%HFO^uF0)RxW6UUb*OKuC$TQ!ZaIyN5W7dgRt5$?nct>UJ_Ot#}Wa4FIeI6GW5c$ z16qsHOJxe&Un%5tn&sw&SsG{=MC*t}!@NX+uwpvAthj?^3_Q9x9bkBV%Ci@o3-Nl< zp+3lPR5r!HTK0)aS{-6&ex}BNR59J^$#-3I^}a!^4l^7h2~;rqx?e{aqMu*x1t(#@ zjxrpTx-ziV_iG{EI`FEGH*R&tL|V+CR59I-WfPF-MlTayag|iVx4cuiCM$Rfb?RbB zamhS`ZFwzoO*EWA+~X!Lzx6UuRZO?4NxF6$nC2ZsVSPm$XtKuSRZbYV!Tn}WXiZj@ zthC2K!@CoMQpJ?(nTtOU-y%|P1WCOmD4f>UGPe|u`5j{RMKSr6kHM;9N=?K6ndw;r zrQQ8eRR1=qFk06#+eAxBg$4{f|E9{oR56`y3r#YjbBHx)V95)vc?njSt?RnbMAuow zA8LXhxkIxFsA5X}<;BFvElwl;uz|myxJe#x#K6^_1(bs9@TSu>mte=E2Bv&*U~nya z`J^~D#_@vJ3RCm0rc;9+q8 E0}hP#`~Uy| diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..0087cd3b18659b5577cf6ad3ef61f8eb9416ebba GIT binary patch literal 51348 zcmaI7W0WY}vL#x!ZQHhO+qP}n*k#+cZEKfpo4fG#edqLj{oOwOa^%X9KO#r26&WjH zM$AYBXBtf-10t)!e7Jura6KLk|ps_JDL96SJbfqAPy~@qd0q#NOS`#@^6`gptnJ#?aZ>H%1m} zkO3id*Me1x+KoO4dNnL}0N;U-jz`c&*alKkva%-&8h)=}7{&3D=Y$t;+NbXI5RyQ6 zuph%n$fuP(ZOXTT)UdOqW$sXd7KfwhPf!C)DKV+T=Mo0_;3_m<}2-cMr z*Y|&DIbQoI4(;#vclfK~|FVVu((=DG_`lTh-)mI%bapYdRdBNZt1K5wQ|G^T9-e}( zE*7SCE|$iIF7{6UQbLKctv!+;f*%@1_}Ichg+Wcq#&0i`<0$(D11!kV;gEE)6|yjR zGiYoM=N@A3=wJRN`Zh(8{QdZ**`Spml8pC!SJSi1bJI;t-u!-kUvT*`V`PgI>GcW> z^{Ioh$d_vphRmU+*E>uNp_^m}4lp*@?L!GZC!o0-rV-pDz+ob^HjrT@o#+v(Jw?KV zyLZBQL~gt`PCo(C^0#9HAr~HqLm%G+N(UD5VY-AVLr&V|yi}|3rq)1@g8_y^l)w4! z;|#VbCf@aWr9~ zaZ5T&YWW^EB_x1fX@2c3;(h|owqva`DzrM_!@GosgW)k=eeXJ8I`yf_0al&L1rTzR zeDGLw74gAX`pOsC0f*6+@g)`(qc>BJ^a;brn~{7IvvT7SBT`knwpU9{NQw+nvRT2r zW71-=`fgL7;vic;rD@LV<1qSGJw>EioF3#a}*Vp!`J)v8ehve6;T z5`cSW?2uB7J?)*atZ&t8ls{pF9>nhM3;lXx~z9Y-m7Z)0VdT z#qhhZ2UQ1uQ7!zP-65k|Ru4;5Cn&PYBvJMY=%3!?^h(3I@~^#Z{vAaB+3qC&m*M@( zszhT4{%$Rpu%GGk6BNX5D7|N+`|c_zU_pf^y*4H`DeemwzASM3{%|Dj6ikSTw9ofP zpKW{qv@`EBF9-;~LTXZ0d5Gk5vQzchUli+x=%MyAj-E`qVDf!rD}?nRx51~?RBkd)urL7%19Lm0!Vq2P{>-kE)z|gPxT%W zE33sZz9(^3-XSIG@!+nBjv4n}=acE_TYi2&AdSJwAjRnkkHS65T*(MZ2m?JaowrB? zv3i32j-Uj99t1B%F(nJxL1{>7m}Kpbmk&WI{f&uQ`;wYGYLyM&b>|8@{&><_QgTBz!S7<(#cC(Gr*Te$; zTnYvdwj3zZm|~f%TXyU4tr_faG<07M(;+I1TFOs1hCSR2*f5bv$11HARw}erzAmwz zSzX(*V?37juFGYQNk_R%S1aH44McN{Sn^NW%(zxtt!#z|t#vE+lB4WW?GvLw!i{KV z$|O}0204v)n&oOU+bUrVzSI zRUXmq%XO(w&{ZDs@Gy_=IN+{#eG(sc>1jQ23OCjJ_gF&)Dc+c?gjlyRglK)fq)0t> z6CU&gIgSZu?Y>fB7BjUBG&_-vya0{@xrgBxH)Gz*qcqzeie9*15mA;&s3RDbgUQ?C z{wRm+p9F*%9KuP-C<_wIi@?z62Kw3w6cYy29C6?zs`vqvJS4b-EO;%+@>(WOEJMC& zXY@B;L0+K(iRECuA;D=0T*8BIV4CTxp+q7uL~0RkF!7SJ1YsSQgGgu;WG|#k7k#y9 zl-fSZ>JX^(`61vH-<->L2$9Y({^2w)gLYS>LQbWsZZGuzG}BE9Q7TX{004!*ag_N# zo2jUWv5l*5lhK&inT+eJ!vD0DhR_U*pGKph-&whzr>tS^&@* zx+5lqw{=>@6AAysOHPvOz=1ym=>+1y9IjxHDyc^)8}a}$A9Pv49n~xcd;&>K4eJrK zSgfXxae6{G2Jpf-Wxxm^Bo!WEFa%A2+>;C}sUV&h+K!d2_}ac6!@|yzgZNc4TQOv{ zr7-jD(PeyT=AR=VxyaNMXT_CMnYaWZ6vtPr$yvrpO^^waYC3 zbA?I~#mcJc3iXzxMh`2k+*#3b6z0X!C49}uf;lHuC01s2`H+qNkqwxmcR)FH6aTtt zRaY<~Zo`_qaP{{6Xi1#565b-VJ&(0$Nt

CflOl1i4(-2^1KXo)&I5QlgjRKFQgM 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 z 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 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..393081e --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Nov 24 22:53:03 GMT 2014 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-1.12-bin.zip diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..91a7e26 --- /dev/null +++ b/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..8a0b282 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/main/cpp/wiiusej_WiiUseApi.c b/src/main/c/wiiusej_WiiUseApi.c similarity index 100% rename from src/main/cpp/wiiusej_WiiUseApi.c rename to src/main/c/wiiusej_WiiUseApi.c diff --git a/src/main/headers/_wiiuse.h b/src/main/headers/_wiiuse.h new file mode 100644 index 0000000..b84c35f --- /dev/null +++ b/src/main/headers/_wiiuse.h @@ -0,0 +1,653 @@ +/* + * wiiuse + * + * Written By: + * Michael Laforest < para > + * Email: < thepara (--AT--) g m a i l [--DOT--] com > + * + * Copyright 2006-2007 + * + * This file is part of wiiuse. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * $Header$ + * + */ + +/** + * @file + * + * @brief API header file. + * + * If this file is included from inside the wiiuse source + * and not from a third party program, then wiimote_internal.h + * is also included which extends this file. + */ + +#ifndef WIIUSE_H_INCLUDED +#define WIIUSE_H_INCLUDED + +#ifdef _WIN32 + /* windows */ + #include +#else + /* nix */ + #include +#endif + +#ifdef WIIUSE_INTERNAL_H_INCLUDED + #define WCONST +#else + #define WCONST const +#endif + +/* led bit masks */ +#define WIIMOTE_LED_NONE 0x00 +#define WIIMOTE_LED_1 0x10 +#define WIIMOTE_LED_2 0x20 +#define WIIMOTE_LED_3 0x40 +#define WIIMOTE_LED_4 0x80 + +/* button codes */ +#define WIIMOTE_BUTTON_TWO 0x0001 +#define WIIMOTE_BUTTON_ONE 0x0002 +#define WIIMOTE_BUTTON_B 0x0004 +#define WIIMOTE_BUTTON_A 0x0008 +#define WIIMOTE_BUTTON_MINUS 0x0010 +#define WIIMOTE_BUTTON_ZACCEL_BIT6 0x0020 +#define WIIMOTE_BUTTON_ZACCEL_BIT7 0x0040 +#define WIIMOTE_BUTTON_HOME 0x0080 +#define WIIMOTE_BUTTON_LEFT 0x0100 +#define WIIMOTE_BUTTON_RIGHT 0x0200 +#define WIIMOTE_BUTTON_DOWN 0x0400 +#define WIIMOTE_BUTTON_UP 0x0800 +#define WIIMOTE_BUTTON_PLUS 0x1000 +#define WIIMOTE_BUTTON_ZACCEL_BIT4 0x2000 +#define WIIMOTE_BUTTON_ZACCEL_BIT5 0x4000 +#define WIIMOTE_BUTTON_UNKNOWN 0x8000 +#define WIIMOTE_BUTTON_ALL 0x1F9F + +/* nunchul button codes */ +#define NUNCHUK_BUTTON_Z 0x01 +#define NUNCHUK_BUTTON_C 0x02 +#define NUNCHUK_BUTTON_ALL 0x03 + +/* classic controller button codes */ +#define CLASSIC_CTRL_BUTTON_UP 0x0001 +#define CLASSIC_CTRL_BUTTON_LEFT 0x0002 +#define CLASSIC_CTRL_BUTTON_ZR 0x0004 +#define CLASSIC_CTRL_BUTTON_X 0x0008 +#define CLASSIC_CTRL_BUTTON_A 0x0010 +#define CLASSIC_CTRL_BUTTON_Y 0x0020 +#define CLASSIC_CTRL_BUTTON_B 0x0040 +#define CLASSIC_CTRL_BUTTON_ZL 0x0080 +#define CLASSIC_CTRL_BUTTON_FULL_R 0x0200 +#define CLASSIC_CTRL_BUTTON_PLUS 0x0400 +#define CLASSIC_CTRL_BUTTON_HOME 0x0800 +#define CLASSIC_CTRL_BUTTON_MINUS 0x1000 +#define CLASSIC_CTRL_BUTTON_FULL_L 0x2000 +#define CLASSIC_CTRL_BUTTON_DOWN 0x4000 +#define CLASSIC_CTRL_BUTTON_RIGHT 0x8000 +#define CLASSIC_CTRL_BUTTON_ALL 0xFEFF + +/* guitar hero 3 button codes */ +#define GUITAR_HERO_3_BUTTON_STRUM_UP 0x0001 +#define GUITAR_HERO_3_BUTTON_YELLOW 0x0008 +#define GUITAR_HERO_3_BUTTON_GREEN 0x0010 +#define GUITAR_HERO_3_BUTTON_BLUE 0x0020 +#define GUITAR_HERO_3_BUTTON_RED 0x0040 +#define GUITAR_HERO_3_BUTTON_ORANGE 0x0080 +#define GUITAR_HERO_3_BUTTON_PLUS 0x0400 +#define GUITAR_HERO_3_BUTTON_MINUS 0x1000 +#define GUITAR_HERO_3_BUTTON_STRUM_DOWN 0x4000 +#define GUITAR_HERO_3_BUTTON_ALL 0xFEFF + + +/* wiimote option flags */ +#define WIIUSE_SMOOTHING 0x01 +#define WIIUSE_CONTINUOUS 0x02 +#define WIIUSE_ORIENT_THRESH 0x04 +#define WIIUSE_INIT_FLAGS (WIIUSE_SMOOTHING | WIIUSE_ORIENT_THRESH) + +#define WIIUSE_ORIENT_PRECISION 100.0f + +/* expansion codes */ +#define EXP_NONE 0 +#define EXP_NUNCHUK 1 +#define EXP_CLASSIC 2 +#define EXP_GUITAR_HERO_3 3 + +/* IR correction types */ +typedef enum ir_position_t { + WIIUSE_IR_ABOVE, + WIIUSE_IR_BELOW +} ir_position_t; + +/** + * @brief Check if a button is pressed. + * @param dev Pointer to a wiimote_t or expansion structure. + * @param button The button you are interested in. + * @return 1 if the button is pressed, 0 if not. + */ +#define IS_PRESSED(dev, button) ((dev->btns & button) == button) + +/** + * @brief Check if a button is being held. + * @param dev Pointer to a wiimote_t or expansion structure. + * @param button The button you are interested in. + * @return 1 if the button is held, 0 if not. + */ +#define IS_HELD(dev, button) ((dev->btns_held & button) == button) + +/** + * @brief Check if a button is released on this event. \n\n + * This does not mean the button is not pressed, it means \n + * this button was just now released. + * @param dev Pointer to a wiimote_t or expansion structure. + * @param button The button you are interested in. + * @return 1 if the button is released, 0 if not. + * + */ +#define IS_RELEASED(dev, button) ((dev->btns_released & button) == button) + +/** + * @brief Check if a button has just been pressed this event. + * @param dev Pointer to a wiimote_t or expansion structure. + * @param button The button you are interested in. + * @return 1 if the button is pressed, 0 if not. + */ +#define IS_JUST_PRESSED(dev, button) (IS_PRESSED(dev, button) && !IS_HELD(dev, button)) + +/** + * @brief Return the IR sensitivity level. + * @param wm Pointer to a wiimote_t structure. + * @param lvl [out] Pointer to an int that will hold the level setting. + * If no level is set 'lvl' will be set to 0. + */ +#define WIIUSE_GET_IR_SENSITIVITY(dev, lvl) \ + do { \ + if ((wm->state & 0x0200) == 0x0200) *lvl = 1; \ + else if ((wm->state & 0x0400) == 0x0400) *lvl = 2; \ + else if ((wm->state & 0x0800) == 0x0800) *lvl = 3; \ + else if ((wm->state & 0x1000) == 0x1000) *lvl = 4; \ + else if ((wm->state & 0x2000) == 0x2000) *lvl = 5; \ + else *lvl = 0; \ + } while (0) + +#define WIIUSE_USING_ACC(wm) ((wm->state & 0x020) == 0x020) +#define WIIUSE_USING_EXP(wm) ((wm->state & 0x040) == 0x040) +#define WIIUSE_USING_IR(wm) ((wm->state & 0x080) == 0x080) +#define WIIUSE_USING_SPEAKER(wm) ((wm->state & 0x100) == 0x100) + +#define WIIUSE_IS_LED_SET(wm, num) ((wm->leds & WIIMOTE_LED_##num) == WIIMOTE_LED_##num) + +/* + * Largest known payload is 21 bytes. + * Add 2 for the prefix and round up to a power of 2. + */ +#define MAX_PAYLOAD 32 + +/* + * This is left over from an old hack, but it may actually + * be a useful feature to keep so it wasn't removed. + */ +#ifdef WIN32 + #define WIIMOTE_DEFAULT_TIMEOUT 10 + #define WIIMOTE_EXP_TIMEOUT 10 +#endif + +typedef unsigned char byte; +typedef char sbyte; + +struct wiimote_t; +struct vec3b_t; +struct orient_t; +struct gforce_t; + + +/** + * @brief Callback that handles a read event. + * + * @param wm Pointer to a wiimote_t structure. + * @param data Pointer to the filled data block. + * @param len Length in bytes of the data block. + * + * @see wiiuse_init() + * + * A registered function of this type is called automatically by the wiiuse + * library when the wiimote has returned the full data requested by a previous + * call to wiiuse_read_data(). + */ +typedef void (*wiiuse_read_cb)(struct wiimote_t* wm, byte* data, unsigned short len); + + +/** + * @struct read_req_t + * @brief Data read request structure. + */ +struct read_req_t { + wiiuse_read_cb cb; /**< read data callback */ + byte* buf; /**< buffer where read data is written */ + unsigned int addr; /**< the offset that the read started at */ + unsigned short size; /**< the length of the data read */ + unsigned short wait; /**< num bytes still needed to finish read */ + byte dirty; /**< set to 1 if not using callback and needs to be cleaned up */ + + struct read_req_t* next; /**< next read request in the queue */ +}; + + +/** + * @struct vec2b_t + * @brief Unsigned x,y byte vector. + */ +typedef struct vec2b_t { + byte x, y; +} vec2b_t; + + +/** + * @struct vec3b_t + * @brief Unsigned x,y,z byte vector. + */ +typedef struct vec3b_t { + byte x, y, z; +} vec3b_t; + + +/** + * @struct vec3f_t + * @brief Signed x,y,z float struct. + */ +typedef struct vec3f_t { + float x, y, z; +} vec3f_t; + + +/** + * @struct orient_t + * @brief Orientation struct. + * + * Yaw, pitch, and roll range from -180 to 180 degrees. + */ +typedef struct orient_t { + float roll; /**< roll, this may be smoothed if enabled */ + float pitch; /**< pitch, this may be smoothed if enabled */ + float yaw; + + float a_roll; /**< absolute roll, unsmoothed */ + float a_pitch; /**< absolute pitch, unsmoothed */ +} orient_t; + + +/** + * @struct gforce_t + * @brief Gravity force struct. + */ +typedef struct gforce_t { + float x, y, z; +} gforce_t; + + +/** + * @struct accel_t + * @brief Accelerometer struct. For any device with an accelerometer. + */ +typedef struct accel_t { + struct vec3b_t cal_zero; /**< zero calibration */ + struct vec3b_t cal_g; /**< 1g difference around 0cal */ + + float st_roll; /**< last smoothed roll value */ + float st_pitch; /**< last smoothed roll pitch */ + float st_alpha; /**< alpha value for smoothing [0-1] */ +} accel_t; + + +/** + * @struct ir_dot_t + * @brief A single IR source. + */ +typedef struct ir_dot_t { + byte visible; /**< if the IR source is visible */ + + unsigned int x; /**< interpolated X coordinate */ + unsigned int y; /**< interpolated Y coordinate */ + + short rx; /**< raw X coordinate (0-1023) */ + short ry; /**< raw Y coordinate (0-767) */ + + byte order; /**< increasing order by x-axis value */ + + byte size; /**< size of the IR dot (0-15) */ +} ir_dot_t; + + +/** + * @enum aspect_t + * @brief Screen aspect ratio. + */ +typedef enum aspect_t { + WIIUSE_ASPECT_4_3, + WIIUSE_ASPECT_16_9 +} aspect_t; + + +/** + * @struct ir_t + * @brief IR struct. Hold all data related to the IR tracking. + */ +typedef struct ir_t { + struct ir_dot_t dot[4]; /**< IR dots */ + byte num_dots; /**< number of dots at this time */ + + enum aspect_t aspect; /**< aspect ratio of the screen */ + + enum ir_position_t pos; /**< IR sensor bar position */ + + unsigned int vres[2]; /**< IR virtual screen resolution */ + int offset[2]; /**< IR XY correction offset */ + int state; /**< keeps track of the IR state */ + + int ax; /**< absolute X coordinate */ + int ay; /**< absolute Y coordinate */ + + int x; /**< calculated X coordinate */ + int y; /**< calculated Y coordinate */ + + float distance; /**< pixel distance between first 2 dots*/ + float z; /**< calculated distance */ +} ir_t; + + +/** + * @struct joystick_t + * @brief Joystick calibration structure. + * + * The angle \a ang is relative to the positive y-axis into quadrant I + * and ranges from 0 to 360 degrees. So if the joystick is held straight + * upwards then angle is 0 degrees. If it is held to the right it is 90, + * down is 180, and left is 270. + * + * The magnitude \a mag is the distance from the center to where the + * joystick is being held. The magnitude ranges from 0 to 1. + * If the joystick is only slightly tilted from the center the magnitude + * will be low, but if it is closer to the outter edge the value will + * be higher. + */ +typedef struct joystick_t { + struct vec2b_t max; /**< maximum joystick values */ + struct vec2b_t min; /**< minimum joystick values */ + struct vec2b_t center; /**< center joystick values */ + + float ang; /**< angle the joystick is being held */ + float mag; /**< magnitude of the joystick (range 0-1) */ +} joystick_t; + + +/** + * @struct nunchuk_t + * @brief Nunchuk expansion device. + */ +typedef struct nunchuk_t { + struct accel_t accel_calib; /**< nunchuk accelerometer calibration */ + struct joystick_t js; /**< joystick calibration */ + + int* flags; /**< options flag (points to wiimote_t.flags) */ + + byte btns; /**< what buttons have just been pressed */ + byte btns_held; /**< what buttons are being held down */ + byte btns_released; /**< what buttons were just released this */ + + float orient_threshold; /**< threshold for orient to generate an event */ + int accel_threshold; /**< threshold for accel to generate an event */ + + struct vec3b_t accel; /**< current raw acceleration data */ + struct orient_t orient; /**< current orientation on each axis */ + struct gforce_t gforce; /**< current gravity forces on each axis */ +} nunchuk_t; + + +/** + * @struct classic_ctrl_t + * @brief Classic controller expansion device. + */ +typedef struct classic_ctrl_t { + short btns; /**< what buttons have just been pressed */ + short btns_held; /**< what buttons are being held down */ + short btns_released; /**< what buttons were just released this */ + + float r_shoulder; /**< right shoulder button (range 0-1) */ + float l_shoulder; /**< left shoulder button (range 0-1) */ + + struct joystick_t ljs; /**< left joystick calibration */ + struct joystick_t rjs; /**< right joystick calibration */ +} classic_ctrl_t; + + +/** + * @struct guitar_hero_3_t + * @brief Guitar Hero 3 expansion device. + */ +typedef struct guitar_hero_3_t { + short btns; /**< what buttons have just been pressed */ + short btns_held; /**< what buttons are being held down */ + short btns_released; /**< what buttons were just released this */ + + float whammy_bar; /**< whammy bar (range 0-1) */ + + struct joystick_t js; /**< joystick calibration */ +} guitar_hero_3_t; + + +/** + * @struct expansion_t + * @brief Generic expansion device plugged into wiimote. + */ +typedef struct expansion_t { + int type; /**< type of expansion attached */ + + union { + struct nunchuk_t nunchuk; + struct classic_ctrl_t classic; + struct guitar_hero_3_t gh3; + }; +} expansion_t; + + +/** + * @enum win32_bt_stack_t + * @brief Available bluetooth stacks for Windows. + */ +typedef enum win_bt_stack_t { + WIIUSE_STACK_UNKNOWN, + WIIUSE_STACK_MS, + WIIUSE_STACK_BLUESOLEIL +} win_bt_stack_t; + + +/** + * @struct wiimote_state_t + * @brief Significant data from the previous event. + */ +typedef struct wiimote_state_t { + /* expansion_t */ + float exp_ljs_ang; + float exp_rjs_ang; + float exp_ljs_mag; + float exp_rjs_mag; + unsigned short exp_btns; + struct orient_t exp_orient; + struct vec3b_t exp_accel; + float exp_r_shoulder; + float exp_l_shoulder; + + /* ir_t */ + int ir_ax; + int ir_ay; + float ir_distance; + + struct orient_t orient; + unsigned short btns; + + struct vec3b_t accel; +} wiimote_state_t; + + +/** + * @enum WIIUSE_EVENT_TYPE + * @brief Events that wiiuse can generate from a poll. + */ +typedef enum WIIUSE_EVENT_TYPE { + WIIUSE_NONE = 0, + WIIUSE_EVENT, + WIIUSE_STATUS, + WIIUSE_CONNECT, + WIIUSE_DISCONNECT, + WIIUSE_UNEXPECTED_DISCONNECT, + WIIUSE_READ_DATA, + WIIUSE_NUNCHUK_INSERTED, + WIIUSE_NUNCHUK_REMOVED, + WIIUSE_CLASSIC_CTRL_INSERTED, + WIIUSE_CLASSIC_CTRL_REMOVED, + WIIUSE_GUITAR_HERO_3_CTRL_INSERTED, + WIIUSE_GUITAR_HERO_3_CTRL_REMOVED +} WIIUSE_EVENT_TYPE; + +/** + * @struct wiimote_t + * @brief Wiimote structure. + */ +typedef struct wiimote_t { + WCONST int unid; /**< user specified id */ + + #ifndef WIN32 + WCONST bdaddr_t bdaddr; /**< bt address */ + WCONST char bdaddr_str[18]; /**< readable bt address */ + WCONST int out_sock; /**< output socket */ + WCONST int in_sock; /**< input socket */ + #else + WCONST HANDLE dev_handle; /**< HID handle */ + WCONST OVERLAPPED hid_overlap; /**< overlap handle */ + WCONST enum win_bt_stack_t stack; /**< type of bluetooth stack to use */ + WCONST int timeout; /**< read timeout */ + WCONST byte normal_timeout; /**< normal timeout */ + WCONST byte exp_timeout; /**< timeout for expansion handshake */ + #endif + + WCONST int state; /**< various state flags */ + WCONST byte leds; /**< currently lit leds */ + WCONST float battery_level; /**< battery level */ + + WCONST int flags; /**< options flag */ + + WCONST byte handshake_state; /**< the state of the connection handshake */ + + WCONST struct read_req_t* read_req; /**< list of data read requests */ + WCONST struct accel_t accel_calib; /**< wiimote accelerometer calibration */ + WCONST struct expansion_t exp; /**< wiimote expansion device */ + + WCONST struct vec3b_t accel; /**< current raw acceleration data */ + WCONST struct orient_t orient; /**< current orientation on each axis */ + WCONST struct gforce_t gforce; /**< current gravity forces on each axis */ + + WCONST struct ir_t ir; /**< IR data */ + + WCONST unsigned short btns; /**< what buttons have just been pressed */ + WCONST unsigned short btns_held; /**< what buttons are being held down */ + WCONST unsigned short btns_released; /**< what buttons were just released this */ + + WCONST float orient_threshold; /**< threshold for orient to generate an event */ + WCONST int accel_threshold; /**< threshold for accel to generate an event */ + + WCONST struct wiimote_state_t lstate; /**< last saved state */ + + WCONST WIIUSE_EVENT_TYPE event; /**< type of event that occured */ + WCONST byte event_buf[MAX_PAYLOAD]; /**< event buffer */ +} wiimote; + + +/***************************************** + * + * Include API specific stuff + * + *****************************************/ + +#ifdef _WIN32 + #define WIIUSE_EXPORT_DECL __declspec(dllexport) + #define WIIUSE_IMPORT_DECL __declspec(dllimport) +#else + #define WIIUSE_EXPORT_DECL + #define WIIUSE_IMPORT_DECL +#endif + +#ifdef WIIUSE_COMPILE_LIB + #define WIIUSE_EXPORT WIIUSE_EXPORT_DECL +#else + #define WIIUSE_EXPORT WIIUSE_IMPORT_DECL +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* wiiuse.c */ +WIIUSE_EXPORT extern const char* wiiuse_version(); + +WIIUSE_EXPORT extern struct wiimote_t** wiiuse_init(int wiimotes); +WIIUSE_EXPORT extern void wiiuse_disconnected(struct wiimote_t* wm); +WIIUSE_EXPORT extern void wiiuse_cleanup(struct wiimote_t** wm, int wiimotes); +WIIUSE_EXPORT extern void wiiuse_rumble(struct wiimote_t* wm, int status); +WIIUSE_EXPORT extern void wiiuse_toggle_rumble(struct wiimote_t* wm); +WIIUSE_EXPORT extern void wiiuse_set_leds(struct wiimote_t* wm, int leds); +WIIUSE_EXPORT extern void wiiuse_motion_sensing(struct wiimote_t* wm, int status); +WIIUSE_EXPORT extern int wiiuse_read_data(struct wiimote_t* wm, byte* buffer, unsigned int offset, unsigned short len); +WIIUSE_EXPORT extern int wiiuse_write_data(struct wiimote_t* wm, unsigned int addr, byte* data, byte len); +WIIUSE_EXPORT extern void wiiuse_status(struct wiimote_t* wm); +WIIUSE_EXPORT extern struct wiimote_t* wiiuse_get_by_id(struct wiimote_t** wm, int wiimotes, int unid); +WIIUSE_EXPORT extern int wiiuse_set_flags(struct wiimote_t* wm, int enable, int disable); +WIIUSE_EXPORT extern float wiiuse_set_smooth_alpha(struct wiimote_t* wm, float alpha); +WIIUSE_EXPORT extern void wiiuse_set_bluetooth_stack(struct wiimote_t** wm, int wiimotes, enum win_bt_stack_t type); +WIIUSE_EXPORT extern void wiiuse_set_orient_threshold(struct wiimote_t* wm, float threshold); +WIIUSE_EXPORT extern void wiiuse_resync(struct wiimote_t* wm); +WIIUSE_EXPORT extern void wiiuse_set_timeout(struct wiimote_t** wm, int wiimotes, byte normal_timeout, byte exp_timeout); +WIIUSE_EXPORT extern void wiiuse_set_accel_threshold(struct wiimote_t* wm, int threshold); + +/* connect.c */ +WIIUSE_EXPORT extern int wiiuse_find(struct wiimote_t** wm, int max_wiimotes, int timeout); +WIIUSE_EXPORT extern int wiiuse_connect(struct wiimote_t** wm, int wiimotes); +WIIUSE_EXPORT extern void wiiuse_disconnect(struct wiimote_t* wm); + +/* events.c */ +WIIUSE_EXPORT extern int wiiuse_poll(struct wiimote_t** wm, int wiimotes); + +/* ir.c */ +WIIUSE_EXPORT extern void wiiuse_set_ir(struct wiimote_t* wm, int status); +WIIUSE_EXPORT extern void wiiuse_set_ir_vres(struct wiimote_t* wm, unsigned int x, unsigned int y); +WIIUSE_EXPORT extern void wiiuse_set_ir_position(struct wiimote_t* wm, enum ir_position_t pos); +WIIUSE_EXPORT extern void wiiuse_set_aspect_ratio(struct wiimote_t* wm, enum aspect_t aspect); +WIIUSE_EXPORT extern void wiiuse_set_ir_sensitivity(struct wiimote_t* wm, int level); + +/* nunchuk.c */ +WIIUSE_EXPORT extern void wiiuse_set_nunchuk_orient_threshold(struct wiimote_t* wm, float threshold); +WIIUSE_EXPORT extern void wiiuse_set_nunchuk_accel_threshold(struct wiimote_t* wm, int threshold); + + +#ifdef __cplusplus +} +#endif + + +#endif /* WIIUSE_H_INCLUDED */ + diff --git a/src/main/headers/wiiuse.h b/src/main/headers/wiiuse.h index b84c35f..a169386 100644 --- a/src/main/headers/wiiuse.h +++ b/src/main/headers/wiiuse.h @@ -7,6 +7,12 @@ * * Copyright 2006-2007 * + * Mac fields based on wiic_structs.h from WiiC, written By: + * Gabriele Randelli + * Email: < randelli (--AT--) dis [--DOT--] uniroma1 [--DOT--] it > + * + * Copyright 2010 + * * This file is part of wiiuse. * * This program is free software; you can redistribute it and/or modify @@ -36,31 +42,126 @@ * is also included which extends this file. */ +/** + * @mainpage + * + * @section intro Introduction + * + * WiiUse is a cross-platform C library for accessing the Nintendo Wii + * Remote and its related expansions and variations. + * + * @section project Project + * + * This is a friendly fork of the original WiiUse project, which seems + * to have gone defunct. This updated version incorporates improvements + * from a number of internal forks found across the Internet, and is + * intended to be the new "upstream" of the project. The new homepage is + * on GitHub, where the source is maintained: + * + * - http://github.com/rpavlik/wiiuse + * + * Contributions (under the GPL 3+) are welcome and encouraged! + * + * @section publicapisec Public API + * + * - @ref publicapi "Public API" - entirely within @ref wiiuse.h + * - @ref wiimote "Wiimote device structure" + * + */ #ifndef WIIUSE_H_INCLUDED #define WIIUSE_H_INCLUDED -#ifdef _WIN32 +#define WIIUSE_MAJOR 0 +#define WIIUSE_MINOR 14 +#define WIIUSE_MICRO 2 + +#define WIIUSE_VERSION_TRANSFORM(MAJ, MIN, MICRO) (MAJ * 1000000 + MIN * 1000 + MICRO) +#define WIIUSE_HAS_VERSION(MAJ, MIN, MICRO) ( WIIUSE_VERSION_TRANSFORM(MAJ, MIN, MICRO) <= WIIUSE_VERSION_TRANSFORM(WIIUSE_MAJOR, WIIUSE_MINOR, WIIUSE_MICRO) ) + +#ifndef WIIUSE_PLATFORM + #if defined(_WIN32) + #define WIIUSE_PLATFORM + #define WIIUSE_WIN32 + #elif defined(__linux) + #define WIIUSE_PLATFORM + #define WIIUSE_BLUEZ + #elif defined(__APPLE__) + #define WIIUSE_PLATFORM + #define WIIUSE_MAC + #else + #error "Platform not yet supported!" + #endif +#endif + +#ifdef WIIUSE_WIN32 /* windows */ + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN 1 + #endif #include -#else +#endif +#ifdef WIIUSE_BLUEZ /* nix */ #include #endif -#ifdef WIIUSE_INTERNAL_H_INCLUDED - #define WCONST -#else +#ifndef WCONST #define WCONST const #endif -/* led bit masks */ +#if defined(_MSC_VER) +/* MS compilers of pre-VC2010 versions don't have stdint.h + * and I can't get VC2010's stdint.h to compile nicely in + * WiiUse + */ + #include "wiiuse_msvcstdint.h" +#else + #include +#endif + +#include /* for FILE */ + +/** @defgroup publicapi External API */ +/** @{ */ + +/** @name Wiimote state flags and macros */ +/** @{ */ +#define WIIMOTE_STATE_DEV_FOUND 0x0001 +#define WIIMOTE_STATE_HANDSHAKE 0x0002 /* actual connection exists but no handshake yet */ +#define WIIMOTE_STATE_HANDSHAKE_COMPLETE 0x0004 /* actual connection exists but no handshake yet */ +#define WIIMOTE_STATE_CONNECTED 0x0008 +#define WIIMOTE_STATE_RUMBLE 0x0010 +#define WIIMOTE_STATE_ACC 0x0020 +#define WIIMOTE_STATE_EXP 0x0040 +#define WIIMOTE_STATE_IR 0x0080 +#define WIIMOTE_STATE_SPEAKER 0x0100 +#define WIIMOTE_STATE_IR_SENS_LVL1 0x0200 +#define WIIMOTE_STATE_IR_SENS_LVL2 0x0400 +#define WIIMOTE_STATE_IR_SENS_LVL3 0x0800 +#define WIIMOTE_STATE_IR_SENS_LVL4 0x1000 +#define WIIMOTE_STATE_IR_SENS_LVL5 0x2000 +#define WIIMOTE_STATE_EXP_HANDSHAKE 0x10000 /* actual M+ connection exists but no handshake yet */ +#define WIIMOTE_STATE_EXP_EXTERN 0x20000 /* actual M+ connection exists but handshake failed */ +#define WIIMOTE_STATE_EXP_FAILED 0x40000 /* actual M+ connection exists but handshake failed */ +#define WIIMOTE_STATE_MPLUS_PRESENT 0x80000 /* Motion+ is connected */ + +#define WIIMOTE_ID(wm) (wm->unid) + +#define WIIMOTE_IS_SET(wm, s) ((wm->state & (s)) == (s)) +#define WIIMOTE_IS_CONNECTED(wm) (WIIMOTE_IS_SET(wm, WIIMOTE_STATE_CONNECTED)) +/** @} */ + +/** @name LED bit masks */ +/** @{ */ #define WIIMOTE_LED_NONE 0x00 #define WIIMOTE_LED_1 0x10 #define WIIMOTE_LED_2 0x20 #define WIIMOTE_LED_3 0x40 #define WIIMOTE_LED_4 0x80 +/** @} */ -/* button codes */ +/** @name Button codes */ +/** @{ */ #define WIIMOTE_BUTTON_TWO 0x0001 #define WIIMOTE_BUTTON_ONE 0x0002 #define WIIMOTE_BUTTON_B 0x0004 @@ -78,13 +179,17 @@ #define WIIMOTE_BUTTON_ZACCEL_BIT5 0x4000 #define WIIMOTE_BUTTON_UNKNOWN 0x8000 #define WIIMOTE_BUTTON_ALL 0x1F9F +/** @} */ -/* nunchul button codes */ +/** @name Nunchuk button codes */ +/** @{ */ #define NUNCHUK_BUTTON_Z 0x01 #define NUNCHUK_BUTTON_C 0x02 #define NUNCHUK_BUTTON_ALL 0x03 +/** @} */ -/* classic controller button codes */ +/** @name Classic controller button codes */ +/** @{ */ #define CLASSIC_CTRL_BUTTON_UP 0x0001 #define CLASSIC_CTRL_BUTTON_LEFT 0x0002 #define CLASSIC_CTRL_BUTTON_ZR 0x0004 @@ -101,8 +206,10 @@ #define CLASSIC_CTRL_BUTTON_DOWN 0x4000 #define CLASSIC_CTRL_BUTTON_RIGHT 0x8000 #define CLASSIC_CTRL_BUTTON_ALL 0xFEFF +/** @} */ -/* guitar hero 3 button codes */ +/** @name Guitar Hero 3 button codes */ +/** @{ */ #define GUITAR_HERO_3_BUTTON_STRUM_UP 0x0001 #define GUITAR_HERO_3_BUTTON_YELLOW 0x0008 #define GUITAR_HERO_3_BUTTON_GREEN 0x0010 @@ -113,28 +220,39 @@ #define GUITAR_HERO_3_BUTTON_MINUS 0x1000 #define GUITAR_HERO_3_BUTTON_STRUM_DOWN 0x4000 #define GUITAR_HERO_3_BUTTON_ALL 0xFEFF +/** @} */ - -/* wiimote option flags */ +/** @name Wiimote option flags */ +/** @{ */ #define WIIUSE_SMOOTHING 0x01 #define WIIUSE_CONTINUOUS 0x02 #define WIIUSE_ORIENT_THRESH 0x04 #define WIIUSE_INIT_FLAGS (WIIUSE_SMOOTHING | WIIUSE_ORIENT_THRESH) #define WIIUSE_ORIENT_PRECISION 100.0f +/** @} */ -/* expansion codes */ +/** @name Expansion codes */ +/** @{ */ #define EXP_NONE 0 #define EXP_NUNCHUK 1 #define EXP_CLASSIC 2 #define EXP_GUITAR_HERO_3 3 +#define EXP_WII_BOARD 4 +#define EXP_MOTION_PLUS 5 +#define EXP_MOTION_PLUS_NUNCHUK 6 /* Motion+ in nunchuk pass-through mode */ +#define EXP_MOTION_PLUS_CLASSIC 7 /* Motion+ in classic ctr. pass-through mode */ +/** @} */ -/* IR correction types */ +/** @brief IR correction types */ typedef enum ir_position_t { WIIUSE_IR_ABOVE, WIIUSE_IR_BELOW } ir_position_t; + +/** @name Device Inquiry Macros */ +/** @{ */ /** * @brief Check if a button is pressed. * @param dev Pointer to a wiimote_t or expansion structure. @@ -176,7 +294,7 @@ typedef enum ir_position_t { * @param lvl [out] Pointer to an int that will hold the level setting. * If no level is set 'lvl' will be set to 0. */ -#define WIIUSE_GET_IR_SENSITIVITY(dev, lvl) \ +#define WIIUSE_GET_IR_SENSITIVITY(wm, lvl) \ do { \ if ((wm->state & 0x0200) == 0x0200) *lvl = 1; \ else if ((wm->state & 0x0400) == 0x0400) *lvl = 2; \ @@ -192,22 +310,20 @@ typedef enum ir_position_t { #define WIIUSE_USING_SPEAKER(wm) ((wm->state & 0x100) == 0x100) #define WIIUSE_IS_LED_SET(wm, num) ((wm->leds & WIIMOTE_LED_##num) == WIIMOTE_LED_##num) - -/* - * Largest known payload is 21 bytes. - * Add 2 for the prefix and round up to a power of 2. - */ -#define MAX_PAYLOAD 32 +/** @} */ /* * This is left over from an old hack, but it may actually * be a useful feature to keep so it wasn't removed. */ -#ifdef WIN32 +#ifdef WIIUSE_WIN32 #define WIIMOTE_DEFAULT_TIMEOUT 10 #define WIIMOTE_EXP_TIMEOUT 10 #endif +#define WIIUSE_SYNC_HANDSHAKE + + typedef unsigned char byte; typedef char sbyte; @@ -230,27 +346,40 @@ struct gforce_t; * library when the wiimote has returned the full data requested by a previous * call to wiiuse_read_data(). */ -typedef void (*wiiuse_read_cb)(struct wiimote_t* wm, byte* data, unsigned short len); +typedef void (*wiiuse_read_cb)(struct wiimote_t* wm, byte* data, uint16_t len); /** - * @struct read_req_t * @brief Data read request structure. */ struct read_req_t { wiiuse_read_cb cb; /**< read data callback */ byte* buf; /**< buffer where read data is written */ - unsigned int addr; /**< the offset that the read started at */ - unsigned short size; /**< the length of the data read */ - unsigned short wait; /**< num bytes still needed to finish read */ + uint32_t addr; /**< the offset that the read started at */ + uint16_t size; /**< the length of the data read */ + uint16_t wait; /**< num bytes still needed to finish read */ byte dirty; /**< set to 1 if not using callback and needs to be cleaned up */ struct read_req_t* next; /**< next read request in the queue */ }; +/** + * @struct ang3s_t + * @brief Roll/Pitch/Yaw short angles. + */ +typedef struct ang3s_t { + int16_t roll, pitch, yaw; +} ang3s_t; + +/** + * @struct ang3f_t + * @brief Roll/Pitch/Yaw float angles. + */ +typedef struct ang3f_t { + float roll, pitch, yaw; +} ang3f_t; /** - * @struct vec2b_t * @brief Unsigned x,y byte vector. */ typedef struct vec2b_t { @@ -259,7 +388,6 @@ typedef struct vec2b_t { /** - * @struct vec3b_t * @brief Unsigned x,y,z byte vector. */ typedef struct vec3b_t { @@ -268,7 +396,6 @@ typedef struct vec3b_t { /** - * @struct vec3f_t * @brief Signed x,y,z float struct. */ typedef struct vec3f_t { @@ -277,7 +404,6 @@ typedef struct vec3f_t { /** - * @struct orient_t * @brief Orientation struct. * * Yaw, pitch, and roll range from -180 to 180 degrees. @@ -293,7 +419,6 @@ typedef struct orient_t { /** - * @struct gforce_t * @brief Gravity force struct. */ typedef struct gforce_t { @@ -302,7 +427,6 @@ typedef struct gforce_t { /** - * @struct accel_t * @brief Accelerometer struct. For any device with an accelerometer. */ typedef struct accel_t { @@ -316,7 +440,6 @@ typedef struct accel_t { /** - * @struct ir_dot_t * @brief A single IR source. */ typedef struct ir_dot_t { @@ -325,8 +448,8 @@ typedef struct ir_dot_t { unsigned int x; /**< interpolated X coordinate */ unsigned int y; /**< interpolated Y coordinate */ - short rx; /**< raw X coordinate (0-1023) */ - short ry; /**< raw Y coordinate (0-767) */ + int16_t rx; /**< raw X coordinate (0-1023) */ + int16_t ry; /**< raw Y coordinate (0-767) */ byte order; /**< increasing order by x-axis value */ @@ -335,7 +458,6 @@ typedef struct ir_dot_t { /** - * @enum aspect_t * @brief Screen aspect ratio. */ typedef enum aspect_t { @@ -345,7 +467,6 @@ typedef enum aspect_t { /** - * @struct ir_t * @brief IR struct. Hold all data related to the IR tracking. */ typedef struct ir_t { @@ -372,7 +493,6 @@ typedef struct ir_t { /** - * @struct joystick_t * @brief Joystick calibration structure. * * The angle \a ang is relative to the positive y-axis into quadrant I @@ -393,11 +513,12 @@ typedef struct joystick_t { float ang; /**< angle the joystick is being held */ float mag; /**< magnitude of the joystick (range 0-1) */ + float x; /**< horizontal position of the joystick (range [-1, 1] */ + float y; /**< vertical position of the joystick (range [-1, 1] */ } joystick_t; /** - * @struct nunchuk_t * @brief Nunchuk expansion device. */ typedef struct nunchuk_t { @@ -420,13 +541,12 @@ typedef struct nunchuk_t { /** - * @struct classic_ctrl_t * @brief Classic controller expansion device. */ typedef struct classic_ctrl_t { - short btns; /**< what buttons have just been pressed */ - short btns_held; /**< what buttons are being held down */ - short btns_released; /**< what buttons were just released this */ + int16_t btns; /**< what buttons have just been pressed */ + int16_t btns_held; /**< what buttons are being held down */ + int16_t btns_released; /**< what buttons were just released this */ float r_shoulder; /**< right shoulder button (range 0-1) */ float l_shoulder; /**< left shoulder button (range 0-1) */ @@ -437,13 +557,12 @@ typedef struct classic_ctrl_t { /** - * @struct guitar_hero_3_t * @brief Guitar Hero 3 expansion device. */ typedef struct guitar_hero_3_t { - short btns; /**< what buttons have just been pressed */ - short btns_held; /**< what buttons are being held down */ - short btns_released; /**< what buttons were just released this */ + int16_t btns; /**< what buttons have just been pressed */ + int16_t btns_held; /**< what buttons are being held down */ + int16_t btns_released; /**< what buttons were just released this */ float whammy_bar; /**< whammy bar (range 0-1) */ @@ -452,22 +571,80 @@ typedef struct guitar_hero_3_t { /** - * @struct expansion_t + * @brief Motion Plus expansion device + */ +typedef struct motion_plus_t { + byte ext; /**< is there a device on the pass-through port? */ + + struct ang3s_t raw_gyro; /**< current raw gyroscope data */ + struct ang3s_t cal_gyro; /**< calibration raw gyroscope data */ + struct ang3f_t angle_rate_gyro; /**< current gyro angle rate */ + struct orient_t orient; /**< current orientation on each axis using Motion Plus gyroscopes */ + byte acc_mode; /**< Fast/slow rotation mode for roll, pitch and yaw (0 if rotating fast, 1 if slow or still) */ + int raw_gyro_threshold; /**< threshold for gyroscopes to generate an event */ + + struct nunchuk_t *nc; /**< pointers to nunchuk & classic in pass-through-mode */ + struct classic_ctrl_t *classic; +} motion_plus_t; + +/** + * @brief Wii Balance Board "expansion" device. + * + * A Balance Board presents itself as a Wiimote with a permanently-attached + * Balance Board expansion device. + */ +typedef struct wii_board_t { + /** @name Interpolated weight per sensor (kg) + * + * These are the values you're most likely to use. + * + * See example.c for how to compute total weight and center of gravity + * from these values. + */ + /** @{ */ + float tl; + float tr; + float bl; + float br; + /** @} */ + + /** @name Raw sensor values */ + /** @{ */ + uint16_t rtl; + uint16_t rtr; + uint16_t rbl; + uint16_t rbr; + /** @} */ + + /** @name Sensor calibration values */ + /** @{ */ + uint16_t ctl[3]; /* Calibration */ + uint16_t ctr[3]; + uint16_t cbl[3]; + uint16_t cbr[3]; /* /Calibration */ + /** @} */ + uint8_t update_calib; +} wii_board_t; + + +/** * @brief Generic expansion device plugged into wiimote. */ typedef struct expansion_t { int type; /**< type of expansion attached */ + struct motion_plus_t mp; + union { struct nunchuk_t nunchuk; struct classic_ctrl_t classic; struct guitar_hero_3_t gh3; + struct wii_board_t wb; }; } expansion_t; /** - * @enum win32_bt_stack_t * @brief Available bluetooth stacks for Windows. */ typedef enum win_bt_stack_t { @@ -478,7 +655,6 @@ typedef enum win_bt_stack_t { /** - * @struct wiimote_state_t * @brief Significant data from the previous event. */ typedef struct wiimote_state_t { @@ -487,26 +663,36 @@ typedef struct wiimote_state_t { float exp_rjs_ang; float exp_ljs_mag; float exp_rjs_mag; - unsigned short exp_btns; + uint16_t exp_btns; struct orient_t exp_orient; struct vec3b_t exp_accel; float exp_r_shoulder; float exp_l_shoulder; + /* motion plus */ + short drx; + short dry; + short drz; + + /* wiiboard */ + uint16_t exp_wb_rtr; + uint16_t exp_wb_rtl; + uint16_t exp_wb_rbr; + uint16_t exp_wb_rbl; + /* ir_t */ int ir_ax; int ir_ay; float ir_distance; struct orient_t orient; - unsigned short btns; + uint16_t btns; struct vec3b_t accel; } wiimote_state_t; /** - * @enum WIIUSE_EVENT_TYPE * @brief Events that wiiuse can generate from a poll. */ typedef enum WIIUSE_EVENT_TYPE { @@ -517,34 +703,55 @@ typedef enum WIIUSE_EVENT_TYPE { WIIUSE_DISCONNECT, WIIUSE_UNEXPECTED_DISCONNECT, WIIUSE_READ_DATA, + WIIUSE_WRITE_DATA, WIIUSE_NUNCHUK_INSERTED, WIIUSE_NUNCHUK_REMOVED, WIIUSE_CLASSIC_CTRL_INSERTED, WIIUSE_CLASSIC_CTRL_REMOVED, WIIUSE_GUITAR_HERO_3_CTRL_INSERTED, - WIIUSE_GUITAR_HERO_3_CTRL_REMOVED + WIIUSE_GUITAR_HERO_3_CTRL_REMOVED, + WIIUSE_WII_BOARD_CTRL_INSERTED, + WIIUSE_WII_BOARD_CTRL_REMOVED, + WIIUSE_MOTION_PLUS_ACTIVATED, + WIIUSE_MOTION_PLUS_REMOVED } WIIUSE_EVENT_TYPE; /** - * @struct wiimote_t - * @brief Wiimote structure. + * @brief Main Wiimote device structure. + * + * You need one of these to do pretty much anything with this library. */ typedef struct wiimote_t { WCONST int unid; /**< user specified id */ - #ifndef WIN32 - WCONST bdaddr_t bdaddr; /**< bt address */ - WCONST char bdaddr_str[18]; /**< readable bt address */ - WCONST int out_sock; /**< output socket */ - WCONST int in_sock; /**< input socket */ - #else - WCONST HANDLE dev_handle; /**< HID handle */ - WCONST OVERLAPPED hid_overlap; /**< overlap handle */ - WCONST enum win_bt_stack_t stack; /**< type of bluetooth stack to use */ - WCONST int timeout; /**< read timeout */ - WCONST byte normal_timeout; /**< normal timeout */ - WCONST byte exp_timeout; /**< timeout for expansion handshake */ - #endif +#ifdef WIIUSE_BLUEZ + /** @name Linux-specific (BlueZ) members */ + /** @{ */ + WCONST char bdaddr_str[18]; /**< readable bt address */ + WCONST bdaddr_t bdaddr; /**< bt address */ + WCONST int out_sock; /**< output socket */ + WCONST int in_sock; /**< input socket */ + /** @} */ +#endif + +#ifdef WIIUSE_WIN32 + /** @name Windows-specific members */ + /** @{ */ + WCONST HANDLE dev_handle; /**< HID handle */ + WCONST OVERLAPPED hid_overlap; /**< overlap handle */ + WCONST enum win_bt_stack_t stack; /**< type of bluetooth stack to use */ + WCONST int timeout; /**< read timeout */ + WCONST byte normal_timeout; /**< normal timeout */ + WCONST byte exp_timeout; /**< timeout for expansion handshake */ + /** @} */ +#endif + +#ifdef WIIUSE_MAC + /** @name Mac OS X-specific members */ + /** @{ */ + WCONST void* objc_wm; /** WiiuseWiimote* as opaque pointer */ + /** @} */ +#endif WCONST int state; /**< various state flags */ WCONST byte leds; /**< currently lit leds */ @@ -552,7 +759,11 @@ typedef struct wiimote_t { WCONST int flags; /**< options flag */ +#ifndef WIIUSE_SYNC_HANDSHAKE WCONST byte handshake_state; /**< the state of the connection handshake */ +#endif + WCONST byte expansion_state; /**< the state of the expansion handshake */ + WCONST struct data_req_t* data_req; /**< list of data read requests */ WCONST struct read_req_t* read_req; /**< list of data read requests */ WCONST struct accel_t accel_calib; /**< wiimote accelerometer calibration */ @@ -564,19 +775,83 @@ typedef struct wiimote_t { WCONST struct ir_t ir; /**< IR data */ - WCONST unsigned short btns; /**< what buttons have just been pressed */ - WCONST unsigned short btns_held; /**< what buttons are being held down */ - WCONST unsigned short btns_released; /**< what buttons were just released this */ + WCONST uint16_t btns; /**< what buttons have just been pressed */ + WCONST uint16_t btns_held; /**< what buttons are being held down */ + WCONST uint16_t btns_released; /**< what buttons were just released this */ WCONST float orient_threshold; /**< threshold for orient to generate an event */ - WCONST int accel_threshold; /**< threshold for accel to generate an event */ + WCONST int32_t accel_threshold; /**< threshold for accel to generate an event */ WCONST struct wiimote_state_t lstate; /**< last saved state */ - WCONST WIIUSE_EVENT_TYPE event; /**< type of event that occured */ - WCONST byte event_buf[MAX_PAYLOAD]; /**< event buffer */ + WCONST WIIUSE_EVENT_TYPE event; /**< type of event that occurred */ + WCONST byte motion_plus_id[6]; } wiimote; +/** @brief Data passed to a callback during wiiuse_update() */ +typedef struct wiimote_callback_data_t { + WCONST int uid; + WCONST byte leds; + WCONST float battery_level; + WCONST struct vec3b_t accel; + WCONST struct orient_t orient; + WCONST struct gforce_t gforce; + WCONST struct ir_t ir; + WCONST uint16_t buttons; + WCONST uint16_t buttons_held; + WCONST uint16_t buttons_released; + WCONST WIIUSE_EVENT_TYPE event; + WCONST int state; + WCONST struct expansion_t expansion; +} wiimote_callback_data_t; + +/** @brief Callback type */ +typedef void (*wiiuse_update_cb)(struct wiimote_callback_data_t* wm); + +/** + * @brief Callback that handles a write event. + * + * @param wm Pointer to a wiimote_t structure. + * @param data Pointer to the sent data block. + * @param len Length in bytes of the data block. + * + * @see wiiuse_init() + * + * A registered function of this type is called automatically by the wiiuse + * library when the wiimote has returned the full data requested by a previous + * call to wiiuse_write_data(). + */ +typedef void (*wiiuse_write_cb)(struct wiimote_t* wm, unsigned char* data, unsigned short len); + +typedef enum data_req_s { + REQ_READY = 0, + REQ_SENT, + REQ_DONE +} data_req_s; + +/** + * @struct data_req_t + * @brief Data write request structure. + */ +struct data_req_t { + + byte data[21]; /**< buffer where read data is written */ + byte len; + unsigned int addr; + data_req_s state; /**< set to 1 if not using callback and needs to be cleaned up */ + wiiuse_write_cb cb; /**< read data callback */ + struct data_req_t *next; +}; + +/** + * @brief Loglevels supported by wiiuse. + */ +typedef enum wiiuse_loglevel { + LOGLEVEL_ERROR = 0, + LOGLEVEL_WARNING = 1, + LOGLEVEL_INFO = 2, + LOGLEVEL_DEBUG = 3 +} wiiuse_loglevel; /***************************************** * @@ -584,9 +859,14 @@ typedef struct wiimote_t { * *****************************************/ -#ifdef _WIN32 - #define WIIUSE_EXPORT_DECL __declspec(dllexport) - #define WIIUSE_IMPORT_DECL __declspec(dllimport) +#ifdef WIIUSE_WIN32 + #ifdef WIIUSE_STATIC + #define WIIUSE_EXPORT_DECL + #define WIIUSE_IMPORT_DECL + #else + #define WIIUSE_EXPORT_DECL __declspec(dllexport) + #define WIIUSE_IMPORT_DECL __declspec(dllimport) + #endif #else #define WIIUSE_EXPORT_DECL #define WIIUSE_IMPORT_DECL @@ -602,52 +882,75 @@ typedef struct wiimote_t { extern "C" { #endif -/* wiiuse.c */ -WIIUSE_EXPORT extern const char* wiiuse_version(); + /* wiiuse.c */ + WIIUSE_EXPORT extern const char* wiiuse_version(); -WIIUSE_EXPORT extern struct wiimote_t** wiiuse_init(int wiimotes); -WIIUSE_EXPORT extern void wiiuse_disconnected(struct wiimote_t* wm); -WIIUSE_EXPORT extern void wiiuse_cleanup(struct wiimote_t** wm, int wiimotes); -WIIUSE_EXPORT extern void wiiuse_rumble(struct wiimote_t* wm, int status); -WIIUSE_EXPORT extern void wiiuse_toggle_rumble(struct wiimote_t* wm); -WIIUSE_EXPORT extern void wiiuse_set_leds(struct wiimote_t* wm, int leds); -WIIUSE_EXPORT extern void wiiuse_motion_sensing(struct wiimote_t* wm, int status); -WIIUSE_EXPORT extern int wiiuse_read_data(struct wiimote_t* wm, byte* buffer, unsigned int offset, unsigned short len); -WIIUSE_EXPORT extern int wiiuse_write_data(struct wiimote_t* wm, unsigned int addr, byte* data, byte len); -WIIUSE_EXPORT extern void wiiuse_status(struct wiimote_t* wm); -WIIUSE_EXPORT extern struct wiimote_t* wiiuse_get_by_id(struct wiimote_t** wm, int wiimotes, int unid); -WIIUSE_EXPORT extern int wiiuse_set_flags(struct wiimote_t* wm, int enable, int disable); -WIIUSE_EXPORT extern float wiiuse_set_smooth_alpha(struct wiimote_t* wm, float alpha); -WIIUSE_EXPORT extern void wiiuse_set_bluetooth_stack(struct wiimote_t** wm, int wiimotes, enum win_bt_stack_t type); -WIIUSE_EXPORT extern void wiiuse_set_orient_threshold(struct wiimote_t* wm, float threshold); -WIIUSE_EXPORT extern void wiiuse_resync(struct wiimote_t* wm); -WIIUSE_EXPORT extern void wiiuse_set_timeout(struct wiimote_t** wm, int wiimotes, byte normal_timeout, byte exp_timeout); -WIIUSE_EXPORT extern void wiiuse_set_accel_threshold(struct wiimote_t* wm, int threshold); + /** @brief Define indicating the presence of the feature allowing you to + * redirect output for one or more logging levels within the library. + */ +#define WIIUSE_HAS_OUTPUT_REDIRECTION + WIIUSE_EXPORT extern void wiiuse_set_output(enum wiiuse_loglevel loglevel, FILE *logtarget); -/* connect.c */ -WIIUSE_EXPORT extern int wiiuse_find(struct wiimote_t** wm, int max_wiimotes, int timeout); -WIIUSE_EXPORT extern int wiiuse_connect(struct wiimote_t** wm, int wiimotes); -WIIUSE_EXPORT extern void wiiuse_disconnect(struct wiimote_t* wm); + WIIUSE_EXPORT extern struct wiimote_t** wiiuse_init(int wiimotes); + WIIUSE_EXPORT extern void wiiuse_disconnected(struct wiimote_t* wm); + WIIUSE_EXPORT extern void wiiuse_cleanup(struct wiimote_t** wm, int wiimotes); + WIIUSE_EXPORT extern void wiiuse_rumble(struct wiimote_t* wm, int status); + WIIUSE_EXPORT extern void wiiuse_toggle_rumble(struct wiimote_t* wm); + WIIUSE_EXPORT extern void wiiuse_set_leds(struct wiimote_t* wm, int leds); + WIIUSE_EXPORT extern void wiiuse_motion_sensing(struct wiimote_t* wm, int status); + WIIUSE_EXPORT extern int wiiuse_read_data(struct wiimote_t* wm, byte* buffer, unsigned int offset, uint16_t len); + WIIUSE_EXPORT extern int wiiuse_write_data(struct wiimote_t* wm, unsigned int addr, const byte* data, byte len); + WIIUSE_EXPORT extern void wiiuse_status(struct wiimote_t* wm); + WIIUSE_EXPORT extern struct wiimote_t* wiiuse_get_by_id(struct wiimote_t** wm, int wiimotes, int unid); + WIIUSE_EXPORT extern int wiiuse_set_flags(struct wiimote_t* wm, int enable, int disable); + WIIUSE_EXPORT extern float wiiuse_set_smooth_alpha(struct wiimote_t* wm, float alpha); + WIIUSE_EXPORT extern void wiiuse_set_bluetooth_stack(struct wiimote_t** wm, int wiimotes, enum win_bt_stack_t type); + WIIUSE_EXPORT extern void wiiuse_set_orient_threshold(struct wiimote_t* wm, float threshold); + WIIUSE_EXPORT extern void wiiuse_resync(struct wiimote_t* wm); + WIIUSE_EXPORT extern void wiiuse_set_timeout(struct wiimote_t** wm, int wiimotes, byte normal_timeout, byte exp_timeout); + WIIUSE_EXPORT extern void wiiuse_set_accel_threshold(struct wiimote_t* wm, int threshold); -/* events.c */ -WIIUSE_EXPORT extern int wiiuse_poll(struct wiimote_t** wm, int wiimotes); + /* io.c */ + WIIUSE_EXPORT extern int wiiuse_find(struct wiimote_t** wm, int max_wiimotes, int timeout); + WIIUSE_EXPORT extern int wiiuse_connect(struct wiimote_t** wm, int wiimotes); + WIIUSE_EXPORT extern void wiiuse_disconnect(struct wiimote_t* wm); -/* ir.c */ -WIIUSE_EXPORT extern void wiiuse_set_ir(struct wiimote_t* wm, int status); -WIIUSE_EXPORT extern void wiiuse_set_ir_vres(struct wiimote_t* wm, unsigned int x, unsigned int y); -WIIUSE_EXPORT extern void wiiuse_set_ir_position(struct wiimote_t* wm, enum ir_position_t pos); -WIIUSE_EXPORT extern void wiiuse_set_aspect_ratio(struct wiimote_t* wm, enum aspect_t aspect); -WIIUSE_EXPORT extern void wiiuse_set_ir_sensitivity(struct wiimote_t* wm, int level); + /* events.c */ + WIIUSE_EXPORT extern int wiiuse_poll(struct wiimote_t** wm, int wiimotes); -/* nunchuk.c */ -WIIUSE_EXPORT extern void wiiuse_set_nunchuk_orient_threshold(struct wiimote_t* wm, float threshold); -WIIUSE_EXPORT extern void wiiuse_set_nunchuk_accel_threshold(struct wiimote_t* wm, int threshold); + /** + * @brief Poll Wiimotes, and call the provided callback with information + * on each Wiimote that had an event. + * + * Alternative to calling wiiuse_poll yourself, and provides the same + * information struct on all platforms. + * + * @return Number of wiimotes that had an event. + */ + WIIUSE_EXPORT extern int wiiuse_update(struct wiimote_t** wm, int wiimotes, wiiuse_update_cb callback); + /* ir.c */ + WIIUSE_EXPORT extern void wiiuse_set_ir(struct wiimote_t* wm, int status); + WIIUSE_EXPORT extern void wiiuse_set_ir_vres(struct wiimote_t* wm, unsigned int x, unsigned int y); + WIIUSE_EXPORT extern void wiiuse_set_ir_position(struct wiimote_t* wm, enum ir_position_t pos); + WIIUSE_EXPORT extern void wiiuse_set_aspect_ratio(struct wiimote_t* wm, enum aspect_t aspect); + WIIUSE_EXPORT extern void wiiuse_set_ir_sensitivity(struct wiimote_t* wm, int level); + + /* nunchuk.c */ + WIIUSE_EXPORT extern void wiiuse_set_nunchuk_orient_threshold(struct wiimote_t* wm, float threshold); + WIIUSE_EXPORT extern void wiiuse_set_nunchuk_accel_threshold(struct wiimote_t* wm, int threshold); + + /* wiiboard.c */ + /* this function not currently implemented... */ + WIIUSE_EXPORT extern void wiiuse_set_wii_board_calib(struct wiimote_t *wm); + + WIIUSE_EXPORT extern void wiiuse_set_motion_plus(struct wiimote_t *wm, int status); #ifdef __cplusplus } #endif +/** @} */ #endif /* WIIUSE_H_INCLUDED */