diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/service/hid/controllers/npad.cpp | 31 | ||||
| -rw-r--r-- | src/core/hle/service/hid/controllers/npad.h | 4 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp index fd677d281..3eb59599f 100644 --- a/src/core/hle/service/hid/controllers/npad.cpp +++ b/src/core/hle/service/hid/controllers/npad.cpp | |||
| @@ -712,6 +712,37 @@ void Controller_NPad::SetVibrationEnabled(bool can_vibrate) { | |||
| 712 | can_controllers_vibrate = can_vibrate; | 712 | can_controllers_vibrate = can_vibrate; |
| 713 | } | 713 | } |
| 714 | 714 | ||
| 715 | void Controller_NPad::ClearAllConnectedControllers() { | ||
| 716 | std::for_each(connected_controllers.begin(), connected_controllers.end(), | ||
| 717 | [](ControllerHolder& controller) { | ||
| 718 | if (controller.is_connected && controller.type != NPadControllerType::None) { | ||
| 719 | controller.type = NPadControllerType::None; | ||
| 720 | controller.is_connected = false; | ||
| 721 | } | ||
| 722 | }); | ||
| 723 | } | ||
| 724 | void Controller_NPad::DisconnectAllConnectedControllers() { | ||
| 725 | std::for_each(connected_controllers.begin(), connected_controllers.end(), | ||
| 726 | [](ControllerHolder& controller) { controller.is_connected = false; }); | ||
| 727 | } | ||
| 728 | |||
| 729 | void Controller_NPad::ConnectAllDisconnectedControllers() { | ||
| 730 | std::for_each(connected_controllers.begin(), connected_controllers.end(), | ||
| 731 | [](ControllerHolder& controller) { | ||
| 732 | if (controller.type != NPadControllerType::None && !controller.is_connected) { | ||
| 733 | controller.is_connected = false; | ||
| 734 | } | ||
| 735 | }); | ||
| 736 | } | ||
| 737 | |||
| 738 | void Controller_NPad::ClearAllControllers() { | ||
| 739 | std::for_each(connected_controllers.begin(), connected_controllers.end(), | ||
| 740 | [](ControllerHolder& controller) { | ||
| 741 | controller.type = NPadControllerType::None; | ||
| 742 | controller.is_connected = false; | ||
| 743 | }); | ||
| 744 | } | ||
| 745 | |||
| 715 | bool Controller_NPad::IsControllerSupported(NPadControllerType controller) const { | 746 | bool Controller_NPad::IsControllerSupported(NPadControllerType controller) const { |
| 716 | const bool support_handheld = | 747 | const bool support_handheld = |
| 717 | std::find(supported_npad_id_types.begin(), supported_npad_id_types.end(), NPAD_HANDHELD) != | 748 | std::find(supported_npad_id_types.begin(), supported_npad_id_types.end(), NPAD_HANDHELD) != |
diff --git a/src/core/hle/service/hid/controllers/npad.h b/src/core/hle/service/hid/controllers/npad.h index f702990c7..7222bca72 100644 --- a/src/core/hle/service/hid/controllers/npad.h +++ b/src/core/hle/service/hid/controllers/npad.h | |||
| @@ -113,6 +113,10 @@ public: | |||
| 113 | void DisconnectNPad(u32 npad_id); | 113 | void DisconnectNPad(u32 npad_id); |
| 114 | LedPattern GetLedPattern(u32 npad_id); | 114 | LedPattern GetLedPattern(u32 npad_id); |
| 115 | void SetVibrationEnabled(bool can_vibrate); | 115 | void SetVibrationEnabled(bool can_vibrate); |
| 116 | void ClearAllConnectedControllers(); | ||
| 117 | void DisconnectAllConnectedControllers(); | ||
| 118 | void ConnectAllDisconnectedControllers(); | ||
| 119 | void ClearAllControllers(); | ||
| 116 | 120 | ||
| 117 | private: | 121 | private: |
| 118 | struct CommonHeader { | 122 | struct CommonHeader { |