Speaker functionaliteit verbeterd. Commentaar toegevoegd bij mogelijke verbeterpunten.

This commit is contained in:
2011-07-24 13:41:02 +00:00
parent 3852163f6e
commit f9bafb6fb9
6 changed files with 13 additions and 12 deletions

View File

@@ -56,14 +56,13 @@ void wiiuse_speaker_volume(struct wiimote_t* wm, double vol) {
} }
void wiiuse_speaker_config(struct wiimote_t* wm) { 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); wiiuse_write_data(wm, WM_REG_SPEAKER, cfg, 7);
} }
void wiiuse_speaker_data(struct wiimote_t* wm, byte* data) { void wiiuse_speaker_data(struct wiimote_t* wm, byte* data, int len) {
/* Todo: add data length dynamically */ byte buf[21] = {0x00};
//byte buf[21]; buf[0] = len << 3;
//WIIUSE_DEBUG("data length %d", sizeof(buf) / sizeof(byte)); memcpy(buf + 1, data, len);
//memcpy(buf, data, 21); wiiuse_send(wm, WM_CMD_STREAM_DATA, buf, 21);
wiiuse_send(wm, WM_CMD_STREAM_DATA, data, 21);
} }

View File

@@ -1,5 +1,7 @@
#include "wiiuse.h" #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_RUMBLE(wm) (WIIMOTE_IS_SET(wm, WIIMOTE_STATE_RUMBLE) ? 0x01 : 0x00)
#define WIIMOTE_GET_SPEAKER_MAX_VOLUME(wm) (wm->speaker.format == 0x00 ? 0x40 : 0xff) #define WIIMOTE_GET_SPEAKER_MAX_VOLUME(wm) (wm->speaker.format == 0x00 ? 0x40 : 0xff)

View File

@@ -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_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_rate(struct wiimote_t* wm, double freq);
WIIUSE_EXPORT extern void wiiuse_speaker_config(struct wiimote_t* wm); 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 #ifdef __cplusplus
} }

Binary file not shown.

View File

@@ -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_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_rate(struct wiimote_t* wm, double freq);
WIIUSE_EXPORT extern void wiiuse_speaker_config(struct wiimote_t* wm); 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 #ifdef __cplusplus
} }

View File

@@ -738,13 +738,13 @@ JNIEXPORT void JNICALL Java_wiiusej_WiiUseApi_setSpeakerConfig(JNIEnv *env, jobj
JNIEXPORT void JNICALL Java_wiiusej_WiiUseApi_streamSpeakerData(JNIEnv *env, jobject obj, jint id, jbyteArray jbArray) { JNIEXPORT void JNICALL Java_wiiusej_WiiUseApi_streamSpeakerData(JNIEnv *env, jobject obj, jint id, jbyteArray jbArray) {
jbyte *jbData = (*env)->GetByteArrayElements(env, jbArray, JNI_FALSE); jbyte *jbData = (*env)->GetByteArrayElements(env, jbArray, JNI_FALSE);
/* Todo: Check for data loss by using signed vs unsigned bytes */ /* Todo: Check for data loss by using signed vs unsigned bytes */
/*int length = (int) (*env)->GetArrayLength(env, jbArray); int len = (int) (*env)->GetArrayLength(env, jbArray);
byte data[length]; /*byte data[length];
int i = 0; int i = 0;
for (i = 0; i < length; ++i) { for (i = 0; i < length; ++i) {
data[i] = (byte) jbData[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); (*env)->ReleaseByteArrayElements(env, jbArray, jbData, JNI_FALSE);
} }