From 8e485256b286b6c34fe2777f085954409dddae5b Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Sat, 22 Oct 2011 09:15:01 +0000 Subject: [PATCH] Ant buildfile aan Mimis toegevoegd om uitvoerbare jar te maken. Begonnen aan implementatie van Wii Balance Board in WiiuseJ. --- cpp/wiiscan/lib/wiiuse.lib | Bin 8210 -> 27590 bytes .../org.eclipse.cdt.managedbuilder.core.prefs | 8 +- cpp/wiiuse/src/balance_board.c | 280 +++++++++--------- cpp/wiiusej/.cproject | 5 +- cpp/wiiusej/Release/libwiiusej.dll | Bin 62016 -> 0 bytes cpp/wiiusej/lib/wiiuse.lib | Bin 27590 -> 27590 bytes cpp/wiiusej/src/wiiusej_WiiUseApi.c | 62 ++-- cpp/wiiusej/src/wiiusej_WiiUseApi.h | 3 +- java/build.xml | 41 +++ java/client.bat | 4 - java/jar/DelcomDLL.dll | Bin 90112 -> 0 bytes java/jar/NativeCall.dll | Bin 7680 -> 0 bytes java/jar/WiiUseJ.dll | Bin 39131 -> 0 bytes java/jar/client.jar | Bin 1218868 -> 0 bytes java/jar/jacob-1.15-M3-x86.dll | Bin 176128 -> 0 bytes java/jar/jintellitype.dll | Bin 30208 -> 0 bytes java/jar/jxinput.dll | Bin 94208 -> 0 bytes java/jar/list.exe | Bin 478542 -> 0 bytes java/jar/main.jar | Bin 1218866 -> 0 bytes java/jar/msvcr100.dll | Bin 761152 -> 0 bytes java/jar/wiiscan.exe | Bin 281088 -> 0 bytes java/jar/wiiuse.dll | Bin 98816 -> 0 bytes java/jar/wpcom.dll | Bin 34934 -> 0 bytes java/main.bat | 4 - .../mimis/device/wiimote/WiimoteDevice.java | 9 +- .../device/wiimote/WiimoteDiscovery.java | 3 +- .../mimis/device/wiimote/WiimoteService.java | 14 +- java/src/wiiusej/Wiimote.java | 20 +- java/src/wiiusej/values/Calibration.java | 5 - .../BalanceBoardButtonsEvent.java | 11 + .../physicalevents/BalanceBoardEvent.java | 33 +++ .../wiiusejevents/utils/EventsGatherer.java | 20 ++ .../wiiusejevents/utils/WiimoteListener.java | 4 + .../BalanceBoardInsertedEvent.java | 15 + .../BalanceBoardRemovedEvent.java | 17 ++ .../wiiuseapievents/WiiUseApiEvent.java | 5 +- .../wiiuseapievents/WiimoteEvent.java | 8 +- java/wiiuse.dll | Bin 4533168 -> 80722 bytes java/wiiusej.dll | Bin 20480 -> 18432 bytes 39 files changed, 385 insertions(+), 186 deletions(-) delete mode 100644 cpp/wiiusej/Release/libwiiusej.dll create mode 100644 java/build.xml delete mode 100644 java/client.bat delete mode 100644 java/jar/DelcomDLL.dll delete mode 100644 java/jar/NativeCall.dll delete mode 100644 java/jar/WiiUseJ.dll delete mode 100644 java/jar/client.jar delete mode 100644 java/jar/jacob-1.15-M3-x86.dll delete mode 100644 java/jar/jintellitype.dll delete mode 100644 java/jar/jxinput.dll delete mode 100644 java/jar/list.exe delete mode 100644 java/jar/main.jar delete mode 100644 java/jar/msvcr100.dll delete mode 100644 java/jar/wiiscan.exe delete mode 100644 java/jar/wiiuse.dll delete mode 100644 java/jar/wpcom.dll delete mode 100644 java/main.bat create mode 100644 java/src/wiiusej/wiiusejevents/physicalevents/BalanceBoardButtonsEvent.java create mode 100644 java/src/wiiusej/wiiusejevents/physicalevents/BalanceBoardEvent.java create mode 100644 java/src/wiiusej/wiiusejevents/wiiuseapievents/BalanceBoardInsertedEvent.java create mode 100644 java/src/wiiusej/wiiusejevents/wiiuseapievents/BalanceBoardRemovedEvent.java diff --git a/cpp/wiiscan/lib/wiiuse.lib b/cpp/wiiscan/lib/wiiuse.lib index 4f1b69b85d3d9fe04cfceef86f1325ee47a95c2c..906e164e8f55022db0e2b477208a32bd2c6f563a 100644 GIT binary patch literal 27590 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 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/cpp/wiiuse/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/cpp/wiiuse/.settings/org.eclipse.cdt.managedbuilder.core.prefs index c7c1e64..5b3588a 100644 --- a/cpp/wiiuse/.settings/org.eclipse.cdt.managedbuilder.core.prefs +++ b/cpp/wiiuse/.settings/org.eclipse.cdt.managedbuilder.core.prefs @@ -1,4 +1,4 @@ -#Wed Jul 20 23:54:48 CEST 2011 +#Wed Oct 19 11:47:57 CEST 2011 eclipse.preferences.version=1 environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.so.debug.1116435574/CPATH/delimiter=; environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.so.debug.1116435574/CPATH/operation=remove @@ -6,6 +6,12 @@ environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.so.debug.1 environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.so.debug.1116435574/C_INCLUDE_PATH/operation=remove environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.so.debug.1116435574/append=true environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.so.debug.1116435574/appendContributed=true +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.so.release.1074641339.10143143/CPATH/delimiter=; +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.so.release.1074641339.10143143/CPATH/operation=remove +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.so.release.1074641339.10143143/C_INCLUDE_PATH/delimiter=; +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.so.release.1074641339.10143143/C_INCLUDE_PATH/operation=remove +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.so.release.1074641339.10143143/append=true +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.so.release.1074641339.10143143/appendContributed=true environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.so.release.1074641339/CPATH/delimiter=; environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.so.release.1074641339/CPATH/operation=remove environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.so.release.1074641339/C_INCLUDE_PATH/delimiter=; diff --git a/cpp/wiiuse/src/balance_board.c b/cpp/wiiuse/src/balance_board.c index 502005f..b765c09 100644 --- a/cpp/wiiuse/src/balance_board.c +++ b/cpp/wiiuse/src/balance_board.c @@ -1,140 +1,140 @@ -/* - * wiiuse - * - * Written By: - * Michael Laforest < para > - * Email: < thepara (--AT--) g m a i l [--DOT--] com > - * This file: - * Bertho Stultiens < para > - * - * Copyright 2009 - * - * 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 Balance Board expansion device. - */ - -#include -#include -#include - -#ifdef WIN32 - #include -#endif - -#include "definitions.h" -#include "wiiuse_internal.h" -#include "dynamics.h" -#include "events.h" -#include "balance_board.h" - -/** - * @brief Handle the handshake data from the guitar. - * - * @param cc A pointer to a classic_ctrl_t structure. - * @param data The data read in from the device. - * @param len The length of the data block, in bytes. - * - * @return Returns 1 if handshake was successful, 0 if not. - */ -int balance_board_handshake(struct wiimote_t* wm, struct balance_board_t* bb, byte* data, unsigned short len) { - int i; - - bb->tr = 0.0; - bb->br = 0.0; - bb->tl = 0.0; - bb->br = 0.0; - - if (len < 0xe0) - return 0; - - if (data[0xdc] != 0xa4) { - /* decrypt data */ - for (i = 0; i < len; ++i) - data[i] = (data[i] ^ 0x17) + 0x17; - } - - /* See: http://wiibrew.org/wiki/Wii_Balance_Board */ - /* Unknown data at 0xa40020..23 (mine says: 0x44 0x69 0x00 0x00) */ - bb->cal_0.tr = (data[0x04] << 8) + data[0x05]; - bb->cal_0.br = (data[0x06] << 8) + data[0x07]; - bb->cal_0.tl = (data[0x08] << 8) + data[0x09]; - bb->cal_0.bl = (data[0x0a] << 8) + data[0x0b]; - bb->cal_17.tr = (data[0x0c] << 8) + data[0x0d]; - bb->cal_17.br = (data[0x0e] << 8) + data[0x0f]; - bb->cal_17.tl = (data[0x10] << 8) + data[0x11]; - bb->cal_17.bl = (data[0x12] << 8) + data[0x13]; - bb->cal_34.tr = (data[0x14] << 8) + data[0x15]; - bb->cal_34.br = (data[0x16] << 8) + data[0x17]; - bb->cal_34.tl = (data[0x18] << 8) + data[0x19]; - bb->cal_34.bl = (data[0x1a] << 8) + data[0x1b]; - /* Unknown data at 0xa4003c..3f (mine says: 0x4c 0x81 0x59 0x95) */ - - WIIUSE_DEBUG("calibration 0: %04x %04x %04x %04x\n", bb->cal_0.tr, bb->cal_0.br, bb->cal_0.tl, bb->cal_0.br); - WIIUSE_DEBUG("calibration 17: %04x %04x %04x %04x\n", bb->cal_17.tr, bb->cal_17.br, bb->cal_17.tl, bb->cal_17.br); - WIIUSE_DEBUG("calibration 34: %04x %04x %04x %04x\n", bb->cal_34.tr, bb->cal_34.br, bb->cal_34.tl, bb->cal_34.br); - - /* handshake done */ - wm->exp.type = EXP_BALANCE_BOARD; - - #ifdef WIN32 - wm->timeout = WIIMOTE_DEFAULT_TIMEOUT; - #endif - - return 1; -} - - -/** - * @brief The balance board disconnected. - * - * @param cc A pointer to a balance_board_t structure. - */ -void balance_board_disconnected(struct balance_board_t* bb) { - memset(bb, 0, sizeof(*bb)); -} - - - -/** - * @brief Handle balance board event. - * - * @param cc A pointer to a balance board_t structure. - * @param msg The message specified in the event packet. - */ -#define set_bbval(x) do {\ - if(bb->raw.x < bb->cal_17.x) \ - bb->x = 17.0 * (float)(bb->raw.x - bb->cal_0.x) / (float)(bb->cal_17.x - bb->cal_0.x); \ - else \ - bb->x = 17.0 * (1.0 + (float)(bb->raw.x - bb->cal_17.x) / (float)(bb->cal_34.x - bb->cal_17.x)); \ - } while(0) -void balance_board_event(struct balance_board_t* bb, byte* msg) { - bb->raw.tr = (msg[0] << 8) + msg[1]; - bb->raw.br = (msg[2] << 8) + msg[3]; - bb->raw.tl = (msg[4] << 8) + msg[5]; - bb->raw.bl = (msg[6] << 8) + msg[7]; - set_bbval(tr); - set_bbval(br); - set_bbval(tl); - set_bbval(bl); -} - +/* + * wiiuse + * + * Written By: + * Michael Laforest < para > + * Email: < thepara (--AT--) g m a i l [--DOT--] com > + * This file: + * Bertho Stultiens < para > + * + * Copyright 2009 + * + * 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 Balance Board expansion device. + */ + +#include +#include +#include + +#ifdef WIN32 + #include +#endif + +#include "definitions.h" +#include "wiiuse_internal.h" +#include "dynamics.h" +#include "events.h" +#include "balance_board.h" + +/** + * @brief Handle the handshake data from the guitar. + * + * @param cc A pointer to a classic_ctrl_t structure. + * @param data The data read in from the device. + * @param len The length of the data block, in bytes. + * + * @return Returns 1 if handshake was successful, 0 if not. + */ +int balance_board_handshake(struct wiimote_t* wm, struct balance_board_t* bb, byte* data, unsigned short len) { + int i; + + bb->tr = 0.0; + bb->br = 0.0; + bb->tl = 0.0; + bb->br = 0.0; + + if (len < 0xe0) + return 0; + + if (data[0xdc] != 0xa4) { + /* decrypt data */ + for (i = 0; i < len; ++i) + data[i] = (data[i] ^ 0x17) + 0x17; + } + + /* See: http://wiibrew.org/wiki/Wii_Balance_Board */ + /* Unknown data at 0xa40020..23 (mine says: 0x44 0x69 0x00 0x00) */ + bb->cal_0.tr = (data[0x04] << 8) + data[0x05]; + bb->cal_0.br = (data[0x06] << 8) + data[0x07]; + bb->cal_0.tl = (data[0x08] << 8) + data[0x09]; + bb->cal_0.bl = (data[0x0a] << 8) + data[0x0b]; + bb->cal_17.tr = (data[0x0c] << 8) + data[0x0d]; + bb->cal_17.br = (data[0x0e] << 8) + data[0x0f]; + bb->cal_17.tl = (data[0x10] << 8) + data[0x11]; + bb->cal_17.bl = (data[0x12] << 8) + data[0x13]; + bb->cal_34.tr = (data[0x14] << 8) + data[0x15]; + bb->cal_34.br = (data[0x16] << 8) + data[0x17]; + bb->cal_34.tl = (data[0x18] << 8) + data[0x19]; + bb->cal_34.bl = (data[0x1a] << 8) + data[0x1b]; + /* Unknown data at 0xa4003c..3f (mine says: 0x4c 0x81 0x59 0x95) */ + + WIIUSE_DEBUG("calibration 0: %04x %04x %04x %04x\n", bb->cal_0.tr, bb->cal_0.br, bb->cal_0.tl, bb->cal_0.br); + WIIUSE_DEBUG("calibration 17: %04x %04x %04x %04x\n", bb->cal_17.tr, bb->cal_17.br, bb->cal_17.tl, bb->cal_17.br); + WIIUSE_DEBUG("calibration 34: %04x %04x %04x %04x\n", bb->cal_34.tr, bb->cal_34.br, bb->cal_34.tl, bb->cal_34.br); + + /* handshake done */ + wm->exp.type = EXP_BALANCE_BOARD; + + #ifdef WIN32 + wm->timeout = WIIMOTE_DEFAULT_TIMEOUT; + #endif + + return 1; +} + + +/** + * @brief The balance board disconnected. + * + * @param cc A pointer to a balance_board_t structure. + */ +void balance_board_disconnected(struct balance_board_t* bb) { + memset(bb, 0, sizeof(*bb)); +} + + + +/** + * @brief Handle balance board event. + * + * @param cc A pointer to a balance board_t structure. + * @param msg The message specified in the event packet. + */ +#define set_bbval(x) do {\ + if(bb->raw.x < bb->cal_17.x) \ + bb->x = 17.0 * (float)(bb->raw.x - bb->cal_0.x) / (float)(bb->cal_17.x - bb->cal_0.x); \ + else \ + bb->x = 17.0 * (1.0 + (float)(bb->raw.x - bb->cal_17.x) / (float)(bb->cal_34.x - bb->cal_17.x)); \ + } while(0) +void balance_board_event(struct balance_board_t* bb, byte* msg) { + bb->raw.tr = (msg[0] << 8) + msg[1]; + bb->raw.br = (msg[2] << 8) + msg[3]; + bb->raw.tl = (msg[4] << 8) + msg[5]; + bb->raw.bl = (msg[6] << 8) + msg[7]; + set_bbval(tr); + set_bbval(br); + set_bbval(tl); + set_bbval(bl); +} + diff --git a/cpp/wiiusej/.cproject b/cpp/wiiusej/.cproject index 7d4e8d1..9f6b0cd 100644 --- a/cpp/wiiusej/.cproject +++ b/cpp/wiiusej/.cproject @@ -50,6 +50,7 @@ + +