From f9bafb6fb9437467277506858b410db1ae2108a7 Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Sun, 24 Jul 2011 13:41:02 +0000 Subject: [PATCH] Speaker functionaliteit verbeterd. Commentaar toegevoegd bij mogelijke verbeterpunten. --- cpp/wiiuse/src/speaker.c | 13 ++++++------- cpp/wiiuse/src/speaker.h | 2 ++ cpp/wiiuse/src/wiiuse.h | 2 +- cpp/wiiusej/lib/wiiuse.lib | Bin 27590 -> 27590 bytes cpp/wiiusej/src/wiiuse.h | 2 +- cpp/wiiusej/src/wiiusej_WiiUseApi.c | 6 +++--- 6 files changed, 13 insertions(+), 12 deletions(-) diff --git a/cpp/wiiuse/src/speaker.c b/cpp/wiiuse/src/speaker.c index b7c1328..4aa589f 100644 --- a/cpp/wiiuse/src/speaker.c +++ b/cpp/wiiuse/src/speaker.c @@ -56,14 +56,13 @@ void wiiuse_speaker_volume(struct wiimote_t* wm, double vol) { } void wiiuse_speaker_config(struct wiimote_t* wm) { - byte cfg[7] = {wm->speaker.format, 0x00, 0x00, wm->speaker.rate, wm->speaker.vol, 0x00, 0x00}; + byte cfg[7] = {0x00, wm->speaker.format, 15, 25, wm->speaker.vol, 0x00, 0x00}; wiiuse_write_data(wm, WM_REG_SPEAKER, cfg, 7); } -void wiiuse_speaker_data(struct wiimote_t* wm, byte* data) { - /* Todo: add data length dynamically */ - //byte buf[21]; - //WIIUSE_DEBUG("data length %d", sizeof(buf) / sizeof(byte)); - //memcpy(buf, data, 21); - wiiuse_send(wm, WM_CMD_STREAM_DATA, data, 21); +void wiiuse_speaker_data(struct wiimote_t* wm, byte* data, int len) { + byte buf[21] = {0x00}; + buf[0] = len << 3; + memcpy(buf + 1, data, len); + wiiuse_send(wm, WM_CMD_STREAM_DATA, buf, 21); } diff --git a/cpp/wiiuse/src/speaker.h b/cpp/wiiuse/src/speaker.h index ee77b1a..a8bed66 100644 --- a/cpp/wiiuse/src/speaker.h +++ b/cpp/wiiuse/src/speaker.h @@ -1,5 +1,7 @@ #include "wiiuse.h" +#define MIN(x,y) ((x) < (y) ? (x) : (y)) + #define WIIMOTE_GET_RUMBLE(wm) (WIIMOTE_IS_SET(wm, WIIMOTE_STATE_RUMBLE) ? 0x01 : 0x00) #define WIIMOTE_GET_SPEAKER_MAX_VOLUME(wm) (wm->speaker.format == 0x00 ? 0x40 : 0xff) diff --git a/cpp/wiiuse/src/wiiuse.h b/cpp/wiiuse/src/wiiuse.h index 7caecfa..469142d 100644 --- a/cpp/wiiuse/src/wiiuse.h +++ b/cpp/wiiuse/src/wiiuse.h @@ -665,7 +665,7 @@ WIIUSE_EXPORT extern void wiiuse_speaker_format(struct wiimote_t* wm, byte forma WIIUSE_EXPORT extern void wiiuse_speaker_volume(struct wiimote_t* wm, double vol); WIIUSE_EXPORT extern void wiiuse_speaker_rate(struct wiimote_t* wm, double freq); WIIUSE_EXPORT extern void wiiuse_speaker_config(struct wiimote_t* wm); -WIIUSE_EXPORT extern void wiiuse_speaker_data(struct wiimote_t* wm, byte* data); +WIIUSE_EXPORT extern void wiiuse_speaker_data(struct wiimote_t* wm, byte* data, int len); #ifdef __cplusplus } diff --git a/cpp/wiiusej/lib/wiiuse.lib b/cpp/wiiusej/lib/wiiuse.lib index 40b27b9ea2f6ec186d641df42c47fca3510a5ea4..c89e86eef25f8b08df7eb9a9e55c2ad92ea2dd8f 100644 GIT binary patch delta 674 zcmX?ho$=Up#tE`4#-=8Q8x?Cf!HmrdIn5ZstjP;G#W#QAN`&$b+DdHB=P_V{$bopf z`Ly6X$<0iHmQdcuXvxX%Tz+j1646BHo%~+>_vT4rjtG&>@5OBp`X|qk`L)?e+7>P^ zxp|I^Ib2?1^LsgjY6-AuPD;q8%~y6pQvFxe1J08Kn;oNxFdL$OgEo@>$@>j|Z|2bR zgxJ6Npsg_D<_rUCxN{^n?>BUT8!53_-Xs8t*KL-8#N)S2L*h-e)`9SVhWa7IC;wIb zy;;rC7s-ZxCzuz2LAd#yi!ws>W?gqZBwo2EvPmGP-|>MueKIg=CYO8u-fZI^3^f}T zAC$xvx+u&T8U!Dsfk99Zp^9)IIMmlfK|^ix$7l_vT4rjtG&>@5OBp`X|qk`L)?e+7>P^ zxp|I^Ib2?1^LsgjY6-AuPD;q8%~y6pQvFxe1J08Kn;oNxFdL$OgEo@>$@>j|Z|2bR zgxJ6Npsg_D<_rUCxN{^n?>BUT8!53_-Xs8t*KL-8#N)S2L*h-e)`9SVhWa7IC;wIb zy;;rC7s-ZxCzuz2LAd#yi!ws>W?gqZBwo2EvPmGP-|>MueKIg=CYO8u-fZI^3^f}T zAC$xvx+u&T8U!Dsfk99Zp^9)IIMmlfK|^ix$7lGetByteArrayElements(env, jbArray, JNI_FALSE); /* Todo: Check for data loss by using signed vs unsigned bytes */ - /*int length = (int) (*env)->GetArrayLength(env, jbArray); - byte data[length]; + int len = (int) (*env)->GetArrayLength(env, jbArray); + /*byte data[length]; int i = 0; for (i = 0; i < length; ++i) { data[i] = (byte) jbData[i]; }*/ - wiiuse_speaker_data(wiiuse_get_by_id(wiimotes, nbMaxWiimotes, id), (byte*) jbData); + wiiuse_speaker_data(wiiuse_get_by_id(wiimotes, nbMaxWiimotes, id), (byte*) jbData, len); (*env)->ReleaseByteArrayElements(env, jbArray, jbData, JNI_FALSE); }