Only move from WIIMOTE_STATE_EXP_HANDSHAKE to WIIMOTE_STATE_EXP if the expansion's handshake code was successful.

This commit is contained in:
Ryan Pavlik
2012-06-28 16:26:30 -05:00
parent 3d21a25822
commit 2f6901cde3

View File

@@ -762,6 +762,7 @@ void handshake_expansion(struct wiimote_t* wm, byte* data, uint16_t len) {
byte val = 0;
byte buf = 0x00;
byte* handshake_buf;
int gotIt = 0;
switch(wm->expansion_state) {
/* These two initialization writes disable the encryption */
@@ -804,18 +805,24 @@ void handshake_expansion(struct wiimote_t* wm, byte* data, uint16_t len) {
id = from_big_endian_uint32_t(data + 220);
switch(id) {
case EXP_ID_CODE_NUNCHUK:
if (nunchuk_handshake(wm, &wm->exp.nunchuk, data, len))
if (nunchuk_handshake(wm, &wm->exp.nunchuk, data, len)) {
wm->event = WIIUSE_NUNCHUK_INSERTED;
gotIt = 1;
}
break;
case EXP_ID_CODE_CLASSIC_CONTROLLER:
if (classic_ctrl_handshake(wm, &wm->exp.classic, data, len))
if (classic_ctrl_handshake(wm, &wm->exp.classic, data, len)) {
wm->event = WIIUSE_CLASSIC_CTRL_INSERTED;
gotIt = 1;
}
break;
case EXP_ID_CODE_GUITAR:
if (guitar_hero_3_handshake(wm, &wm->exp.gh3, data, len))
if (guitar_hero_3_handshake(wm, &wm->exp.gh3, data, len)) {
wm->event = WIIUSE_GUITAR_HERO_3_CTRL_INSERTED;
gotIt = 1;
}
break;
case EXP_ID_CODE_MOTION_PLUS:
@@ -823,11 +830,14 @@ void handshake_expansion(struct wiimote_t* wm, byte* data, uint16_t len) {
case EXP_ID_CODE_MOTION_PLUS_NUNCHUK:
/* wiiuse_motion_plus_handshake(wm, data, len); */
wm->event = WIIUSE_MOTION_PLUS_ACTIVATED;
gotIt = 1;
break;
case EXP_ID_CODE_WII_BOARD:
if(wii_board_handshake(wm, &wm->exp.wb, data, len))
wm->event = WIIUSE_WII_BOARD_CTRL_INSERTED;
if(wii_board_handshake(wm, &wm->exp.wb, data, len)) {
wm->event = WIIUSE_WII_BOARD_CTRL_INSERTED;
gotIt = 1;
}
break;
default:
@@ -835,8 +845,12 @@ void handshake_expansion(struct wiimote_t* wm, byte* data, uint16_t len) {
break;
}
free(data);
WIIMOTE_DISABLE_STATE(wm,WIIMOTE_STATE_EXP_HANDSHAKE);
WIIMOTE_ENABLE_STATE(wm,WIIMOTE_STATE_EXP);
if (gotIt) {
WIIMOTE_DISABLE_STATE(wm,WIIMOTE_STATE_EXP_HANDSHAKE);
WIIMOTE_ENABLE_STATE(wm,WIIMOTE_STATE_EXP);
} else {
WIIUSE_WARNING("Could not handshake with expansion id: 0x%x", id);
}
wiiuse_set_ir_mode(wm);
wiiuse_status(wm);
break;