diff --git a/src/input/api/Wiimote/WiimoteControllerProvider.cpp b/src/input/api/Wiimote/WiimoteControllerProvider.cpp index 712895294..0d085164b 100644 --- a/src/input/api/Wiimote/WiimoteControllerProvider.cpp +++ b/src/input/api/Wiimote/WiimoteControllerProvider.cpp @@ -1030,28 +1030,37 @@ bool WiimoteControllerProvider::identify_extension(WiimoteState& state, size_t c state.m_extension = NunchuckData{}; return true; case kExtensionClassic: - wiimote_log( "Extension Type Received: Classic"); + wiimote_log("Extension Type Received: Classic"); state.m_extension = ClassicData{}; return true; case kExtensionClassicPro: - wiimote_log( "Extension Type Received: Classic Pro"); + wiimote_log("Extension Type Received: Classic Pro"); return true; case kExtensionGuitar: - wiimote_log( "Extension Type Received: Guitar"); + wiimote_log("Extension Type Received: Guitar"); return true; case kExtensionDrums: - wiimote_log( "Extension Type Received: Drums"); + wiimote_log("Extension Type Received: Drums"); return true; case kExtensionBalanceBoard: - wiimote_log( "Extension Type Received: Balance Board"); + wiimote_log("Extension Type Received: Balance Board"); return true; + case kExtensionMotionPlusBuiltin: case kExtensionMotionPlus: - wiimote_log( "Extension Type Received: MotionPlus"); + wiimote_log("Extension Type Received: MotionPlus"); set_motion_plus(controllerIndex, true); state.m_motion_plus = MotionPlusData{}; return true; - case kExtensionPartialyInserted: - wiimote_log( "Extension only partially inserted"); + case kExtensionMotionPlusDeactivated: + wiimote_log("Extension Type Received: MotionPlus deactivated by other extension"); + return true; + case kExtensionMotionPlusActivated: + wiimote_log("Extension Type Received: Activated MotionPlus"); + if (!state.m_motion_plus) + state.m_motion_plus = MotionPlusData{}; + return true; + case kExtensionPartiallyInserted: + wiimote_log("Extension only partially inserted"); state.m_extension = {}; request_status(controllerIndex); return true; diff --git a/src/input/api/Wiimote/WiimoteMessages.h b/src/input/api/Wiimote/WiimoteMessages.h index 32dd46583..7abb89542 100644 --- a/src/input/api/Wiimote/WiimoteMessages.h +++ b/src/input/api/Wiimote/WiimoteMessages.h @@ -52,10 +52,13 @@ enum ExtensionType : uint64 kExtensionGuitar = 0x0000A4200103, kExtensionDrums = 0x0100A4200103, kExtensionBalanceBoard = 0x2A2C, + kExtensionMotionPlusBuiltin = 0xA4200005, + kExtensionMotionPlusActivated = 0xA4200405, - kExtensionMotionPlus = 0xa6200005, + kExtensionMotionPlus = 0xA6200005, + kExtensionMotionPlusDeactivated = 0xA6200405, - kExtensionPartialyInserted = 0xffffffffffff, + kExtensionPartiallyInserted = 0xFFFFFFFFFFFF }; enum MemoryType : uint8