diff options
Diffstat (limited to 'tracker-wii/wiiyourself/wiimote.cpp')
-rw-r--r-- | tracker-wii/wiiyourself/wiimote.cpp | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/tracker-wii/wiiyourself/wiimote.cpp b/tracker-wii/wiiyourself/wiimote.cpp index b34258af..6427d5a5 100644 --- a/tracker-wii/wiiyourself/wiimote.cpp +++ b/tracker-wii/wiiyourself/wiimote.cpp @@ -1773,50 +1773,54 @@ int wiimote::ParseReadAddress (BYTE* buff) break; } - #define IF_TYPE(id) if(type == id) { \ - /* sometimes it comes in more than once */ \ - if(Internal.ExtensionType == wiimote_state::id)\ - break; \ - Internal.ExtensionType = wiimote_state::id; + // sometimes we get idempotent ExtensionType events + #define IF_TYPE(id, ...) \ + if(type == id) \ + { \ + if(Internal.ExtensionType == wiimote_state::id) \ + break; \ + Internal.ExtensionType = wiimote_state::id; \ + { __VA_ARGS__ } \ + } // MotionPlus: once it's activated & mapped to the standard ext. port - IF_TYPE(MOTION_PLUS) + IF_TYPE(MOTION_PLUS, TRACE(_T(".. Motion Plus!")); // and start a query for the calibration data ReadAddress(REGISTER_EXTENSION_CALIBRATION, 16); bMotionPlusDetected = true; - } - else IF_TYPE(NUNCHUK) + ) + else IF_TYPE(NUNCHUK, TRACE(_T(".. Nunchuk!")); bMotionPlusEnabled = false; // and start a query for the calibration data ReadAddress(REGISTER_EXTENSION_CALIBRATION, 16); - } - else IF_TYPE(CLASSIC) + ) + else IF_TYPE(CLASSIC, TRACE(_T(".. Classic Controller!")); bMotionPlusEnabled = false; // and start a query for the calibration data ReadAddress(REGISTER_EXTENSION_CALIBRATION, 16); - } - else IF_TYPE(GH3_GHWT_GUITAR) + ) + else IF_TYPE(GH3_GHWT_GUITAR, // sometimes it comes in more than once? TRACE(_T(".. GH3/GHWT Guitar Controller!")); bMotionPlusEnabled = false; // and start a query for the calibration data ReadAddress(REGISTER_EXTENSION_CALIBRATION, 16); - } - else IF_TYPE(GHWT_DRUMS) + ) + else IF_TYPE(GHWT_DRUMS, TRACE(_T(".. GHWT Drums!")); bMotionPlusEnabled = false; // and start a query for the calibration data ReadAddress(REGISTER_EXTENSION_CALIBRATION, 16); - } - else IF_TYPE(BALANCE_BOARD) + ) + else IF_TYPE(BALANCE_BOARD, TRACE(_T(".. Balance Board!")); bMotionPlusEnabled = false; // and start a query for the calibration data ReadAddress(REGISTER_BALANCE_CALIBRATION, 24); - } + ) else if(type == PARTIALLY_INSERTED) { // sometimes it comes in more than once? if(Internal.ExtensionType == wiimote_state::PARTIALLY_INSERTED) |