summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/hle/service/hid/controllers/npad.cpp8
-rw-r--r--src/core/hle/service/hid/controllers/npad.h10
-rw-r--r--src/core/hle/service/hid/hid.cpp15
3 files changed, 28 insertions, 5 deletions
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp
index b65d59373..620386cd1 100644
--- a/src/core/hle/service/hid/controllers/npad.cpp
+++ b/src/core/hle/service/hid/controllers/npad.cpp
@@ -593,6 +593,14 @@ Controller_NPad::NpadHoldType Controller_NPad::GetHoldType() const {
593 return hold_type; 593 return hold_type;
594} 594}
595 595
596void Controller_NPad::SetNpadHandheldActivationMode(NpadHandheldActivationMode activation_mode) {
597 handheld_activation_mode = activation_mode;
598}
599
600Controller_NPad::NpadHandheldActivationMode Controller_NPad::GetNpadHandheldActivationMode() const {
601 return handheld_activation_mode;
602}
603
596void Controller_NPad::SetNpadMode(u32 npad_id, NPadAssignments assignment_mode) { 604void Controller_NPad::SetNpadMode(u32 npad_id, NPadAssignments assignment_mode) {
597 const std::size_t npad_index = NPadIdToIndex(npad_id); 605 const std::size_t npad_index = NPadIdToIndex(npad_id);
598 ASSERT(npad_index < shared_memory_entries.size()); 606 ASSERT(npad_index < shared_memory_entries.size());
diff --git a/src/core/hle/service/hid/controllers/npad.h b/src/core/hle/service/hid/controllers/npad.h
index 78e7c320b..654d97c3f 100644
--- a/src/core/hle/service/hid/controllers/npad.h
+++ b/src/core/hle/service/hid/controllers/npad.h
@@ -74,6 +74,12 @@ public:
74 Single = 1, 74 Single = 1,
75 }; 75 };
76 76
77 enum class NpadHandheldActivationMode : u64 {
78 Dual = 0,
79 Single = 1,
80 None = 2,
81 };
82
77 enum class NPadControllerType { 83 enum class NPadControllerType {
78 None, 84 None,
79 ProController, 85 ProController,
@@ -110,6 +116,9 @@ public:
110 void SetHoldType(NpadHoldType joy_hold_type); 116 void SetHoldType(NpadHoldType joy_hold_type);
111 NpadHoldType GetHoldType() const; 117 NpadHoldType GetHoldType() const;
112 118
119 void SetNpadHandheldActivationMode(NpadHandheldActivationMode activation_mode);
120 NpadHandheldActivationMode GetNpadHandheldActivationMode() const;
121
113 void SetNpadMode(u32 npad_id, NPadAssignments assignment_mode); 122 void SetNpadMode(u32 npad_id, NPadAssignments assignment_mode);
114 123
115 void VibrateController(const std::vector<u32>& controller_ids, 124 void VibrateController(const std::vector<u32>& controller_ids,
@@ -369,6 +378,7 @@ private:
369 MotionArray motions; 378 MotionArray motions;
370 std::vector<u32> supported_npad_id_types{}; 379 std::vector<u32> supported_npad_id_types{};
371 NpadHoldType hold_type{NpadHoldType::Vertical}; 380 NpadHoldType hold_type{NpadHoldType::Vertical};
381 NpadHandheldActivationMode handheld_activation_mode{NpadHandheldActivationMode::Dual};
372 // Each controller should have their own styleset changed event 382 // Each controller should have their own styleset changed event
373 std::array<Kernel::EventPair, 10> styleset_changed_events; 383 std::array<Kernel::EventPair, 10> styleset_changed_events;
374 Vibration last_processed_vibration{}; 384 Vibration last_processed_vibration{};
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp
index 1d96f705f..395e83b3f 100644
--- a/src/core/hle/service/hid/hid.cpp
+++ b/src/core/hle/service/hid/hid.cpp
@@ -739,8 +739,11 @@ void Hid::SetNpadHandheldActivationMode(Kernel::HLERequestContext& ctx) {
739 const auto applet_resource_user_id{rp.Pop<u64>()}; 739 const auto applet_resource_user_id{rp.Pop<u64>()};
740 const auto mode{rp.Pop<u64>()}; 740 const auto mode{rp.Pop<u64>()};
741 741
742 LOG_WARNING(Service_HID, "(STUBBED) called, applet_resource_user_id={}, mode={}", 742 LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}, mode={}", applet_resource_user_id,
743 applet_resource_user_id, mode); 743 mode);
744
745 applet_resource->GetController<Controller_NPad>(HidController::NPad)
746 .SetNpadHandheldActivationMode(Controller_NPad::NpadHandheldActivationMode{mode});
744 747
745 IPC::ResponseBuilder rb{ctx, 2}; 748 IPC::ResponseBuilder rb{ctx, 2};
746 rb.Push(RESULT_SUCCESS); 749 rb.Push(RESULT_SUCCESS);
@@ -750,11 +753,13 @@ void Hid::GetNpadHandheldActivationMode(Kernel::HLERequestContext& ctx) {
750 IPC::RequestParser rp{ctx}; 753 IPC::RequestParser rp{ctx};
751 const auto applet_resource_user_id{rp.Pop<u64>()}; 754 const auto applet_resource_user_id{rp.Pop<u64>()};
752 755
753 LOG_WARNING(Service_HID, "(STUBBED) called, applet_resource_user_id={}", 756 LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
754 applet_resource_user_id);
755 757
756 IPC::ResponseBuilder rb{ctx, 2}; 758 IPC::ResponseBuilder rb{ctx, 4};
757 rb.Push(RESULT_SUCCESS); 759 rb.Push(RESULT_SUCCESS);
760 rb.Push<u64>(
761 static_cast<u64>(applet_resource->GetController<Controller_NPad>(HidController::NPad)
762 .GetNpadHandheldActivationMode()));
758} 763}
759 764
760void Hid::SwapNpadAssignment(Kernel::HLERequestContext& ctx) { 765void Hid::SwapNpadAssignment(Kernel::HLERequestContext& ctx) {