summaryrefslogtreecommitdiff
path: root/src/hid_core/resources/npad
diff options
context:
space:
mode:
authorGravatar liamwhite2024-01-07 20:41:06 -0500
committerGravatar GitHub2024-01-07 20:41:06 -0500
commit2a4ac7cfac9ebdc916a95dbc576a850162886b13 (patch)
tree152196b6412c5ef7118810fbceb92804f079d4ba /src/hid_core/resources/npad
parentMerge pull request #12599 from german77/settings (diff)
parentservice: hid: Implement GetLastActiveNpad (diff)
downloadyuzu-2a4ac7cfac9ebdc916a95dbc576a850162886b13.tar.gz
yuzu-2a4ac7cfac9ebdc916a95dbc576a850162886b13.tar.xz
yuzu-2a4ac7cfac9ebdc916a95dbc576a850162886b13.zip
Merge pull request #12600 from german77/npad-impl
service: hid: Hook interface implementations
Diffstat (limited to 'src/hid_core/resources/npad')
-rw-r--r--src/hid_core/resources/npad/npad.cpp45
-rw-r--r--src/hid_core/resources/npad/npad.h12
2 files changed, 57 insertions, 0 deletions
diff --git a/src/hid_core/resources/npad/npad.cpp b/src/hid_core/resources/npad/npad.cpp
index 97f31d26e..1f8a0f8ab 100644
--- a/src/hid_core/resources/npad/npad.cpp
+++ b/src/hid_core/resources/npad/npad.cpp
@@ -1344,4 +1344,49 @@ AppletDetailedUiType NPad::GetAppletDetailedUiType(Core::HID::NpadIdType npad_id
1344 }; 1344 };
1345} 1345}
1346 1346
1347Result NPad::SetNpadCaptureButtonAssignment(u64 aruid, Core::HID::NpadStyleSet npad_style_set,
1348 Core::HID::NpadButton button_assignment) {
1349 std::scoped_lock lock{mutex};
1350 return npad_resource.SetNpadCaptureButtonAssignment(aruid, npad_style_set, button_assignment);
1351}
1352
1353Result NPad::ClearNpadCaptureButtonAssignment(u64 aruid) {
1354 std::scoped_lock lock{mutex};
1355 return npad_resource.ClearNpadCaptureButtonAssignment(aruid);
1356}
1357
1358std::size_t NPad::GetNpadCaptureButtonAssignment(std::span<Core::HID::NpadButton> out_list,
1359 u64 aruid) const {
1360 std::scoped_lock lock{mutex};
1361 return npad_resource.GetNpadCaptureButtonAssignment(out_list, aruid);
1362}
1363
1364Result NPad::SetNpadSystemExtStateEnabled(u64 aruid, bool is_enabled) {
1365 std::scoped_lock lock{mutex};
1366 const auto result = npad_resource.SetNpadSystemExtStateEnabled(aruid, is_enabled);
1367
1368 if (result.IsSuccess()) {
1369 std::scoped_lock shared_lock{*applet_resource_holder.shared_mutex};
1370 // TODO: abstracted_pad->EnableAppletToGetInput(aruid);
1371 }
1372
1373 return result;
1374}
1375
1376Result NPad::AssigningSingleOnSlSrPress(u64 aruid, bool is_enabled) {
1377 std::scoped_lock lock{mutex};
1378 bool is_currently_enabled{};
1379 Result result = npad_resource.IsAssigningSingleOnSlSrPressEnabled(is_currently_enabled, aruid);
1380 if (result.IsSuccess() && is_enabled != is_currently_enabled) {
1381 result = npad_resource.SetAssigningSingleOnSlSrPress(aruid, is_enabled);
1382 }
1383 return result;
1384}
1385
1386Result NPad::GetLastActiveNpad(Core::HID::NpadIdType& out_npad_id) const {
1387 std::scoped_lock lock{mutex};
1388 out_npad_id = hid_core.GetLastActiveController();
1389 return ResultSuccess;
1390}
1391
1347} // namespace Service::HID 1392} // namespace Service::HID
diff --git a/src/hid_core/resources/npad/npad.h b/src/hid_core/resources/npad/npad.h
index 58f8c7acf..01f3dabb1 100644
--- a/src/hid_core/resources/npad/npad.h
+++ b/src/hid_core/resources/npad/npad.h
@@ -149,6 +149,18 @@ public:
149 149
150 AppletDetailedUiType GetAppletDetailedUiType(Core::HID::NpadIdType npad_id); 150 AppletDetailedUiType GetAppletDetailedUiType(Core::HID::NpadIdType npad_id);
151 151
152 Result SetNpadCaptureButtonAssignment(u64 aruid, Core::HID::NpadStyleSet npad_style_set,
153 Core::HID::NpadButton button_assignment);
154 Result ClearNpadCaptureButtonAssignment(u64 aruid);
155 std::size_t GetNpadCaptureButtonAssignment(std::span<Core::HID::NpadButton> out_list,
156 u64 aruid) const;
157
158 Result SetNpadSystemExtStateEnabled(u64 aruid, bool is_enabled);
159
160 Result AssigningSingleOnSlSrPress(u64 aruid, bool is_enabled);
161
162 Result GetLastActiveNpad(Core::HID::NpadIdType& out_npad_id) const;
163
152private: 164private:
153 struct VibrationData { 165 struct VibrationData {
154 bool device_mounted{}; 166 bool device_mounted{};