diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/service/hid/hid_server.cpp | 4 | ||||
| -rw-r--r-- | src/core/hle/service/hid/hid_system_server.cpp | 22 | ||||
| -rw-r--r-- | src/core/hle/service/hid/hid_system_server.h | 2 | ||||
| -rw-r--r-- | src/hid_core/resources/npad/npad.cpp | 12 | ||||
| -rw-r--r-- | src/hid_core/resources/npad/npad.h | 2 |
5 files changed, 34 insertions, 8 deletions
diff --git a/src/core/hle/service/hid/hid_server.cpp b/src/core/hle/service/hid/hid_server.cpp index 75bf3e682..74898888a 100644 --- a/src/core/hle/service/hid/hid_server.cpp +++ b/src/core/hle/service/hid/hid_server.cpp | |||
| @@ -1444,8 +1444,8 @@ void IHidServer::SetNpadAnalogStickUseCenterClamp(HLERequestContext& ctx) { | |||
| 1444 | 1444 | ||
| 1445 | const auto parameters{rp.PopRaw<Parameters>()}; | 1445 | const auto parameters{rp.PopRaw<Parameters>()}; |
| 1446 | 1446 | ||
| 1447 | LOG_WARNING(Service_HID, "(STUBBED) called, use_center_clamp={}, applet_resource_user_id={}", | 1447 | LOG_INFO(Service_HID, "called, use_center_clamp={}, applet_resource_user_id={}", |
| 1448 | parameters.use_center_clamp, parameters.applet_resource_user_id); | 1448 | parameters.use_center_clamp, parameters.applet_resource_user_id); |
| 1449 | 1449 | ||
| 1450 | GetResourceManager()->GetNpad()->SetNpadAnalogStickUseCenterClamp( | 1450 | GetResourceManager()->GetNpad()->SetNpadAnalogStickUseCenterClamp( |
| 1451 | parameters.applet_resource_user_id, parameters.use_center_clamp); | 1451 | parameters.applet_resource_user_id, parameters.use_center_clamp); |
diff --git a/src/core/hle/service/hid/hid_system_server.cpp b/src/core/hle/service/hid/hid_system_server.cpp index ac0d8bd5d..ead593ab3 100644 --- a/src/core/hle/service/hid/hid_system_server.cpp +++ b/src/core/hle/service/hid/hid_system_server.cpp | |||
| @@ -54,8 +54,8 @@ IHidSystemServer::IHidSystemServer(Core::System& system_, std::shared_ptr<Resour | |||
| 54 | {318, &IHidSystemServer::HasBattery, "HasBattery"}, | 54 | {318, &IHidSystemServer::HasBattery, "HasBattery"}, |
| 55 | {319, &IHidSystemServer::HasLeftRightBattery, "HasLeftRightBattery"}, | 55 | {319, &IHidSystemServer::HasLeftRightBattery, "HasLeftRightBattery"}, |
| 56 | {321, &IHidSystemServer::GetUniquePadsFromNpad, "GetUniquePadsFromNpad"}, | 56 | {321, &IHidSystemServer::GetUniquePadsFromNpad, "GetUniquePadsFromNpad"}, |
| 57 | {322, &IHidSystemServer::GetIrSensorState, "GetIrSensorState"}, | 57 | {322, &IHidSystemServer::SetNpadSystemExtStateEnabled, "SetNpadSystemExtStateEnabled"}, |
| 58 | {323, nullptr, "GetXcdHandleForNpadWithIrSensor"}, | 58 | {323, nullptr, "GetLastActiveUniquePad"}, |
| 59 | {324, nullptr, "GetUniquePadButtonSet"}, | 59 | {324, nullptr, "GetUniquePadButtonSet"}, |
| 60 | {325, nullptr, "GetUniquePadColor"}, | 60 | {325, nullptr, "GetUniquePadColor"}, |
| 61 | {326, nullptr, "GetUniquePadAppletDetailedUiType"}, | 61 | {326, nullptr, "GetUniquePadAppletDetailedUiType"}, |
| @@ -444,13 +444,25 @@ void IHidSystemServer::GetUniquePadsFromNpad(HLERequestContext& ctx) { | |||
| 444 | rb.Push(static_cast<u32>(unique_pads.size())); | 444 | rb.Push(static_cast<u32>(unique_pads.size())); |
| 445 | } | 445 | } |
| 446 | 446 | ||
| 447 | void IHidSystemServer::GetIrSensorState(HLERequestContext& ctx) { | 447 | void IHidSystemServer::SetNpadSystemExtStateEnabled(HLERequestContext& ctx) { |
| 448 | IPC::RequestParser rp{ctx}; | 448 | IPC::RequestParser rp{ctx}; |
| 449 | struct Parameters { | ||
| 450 | bool is_enabled; | ||
| 451 | INSERT_PADDING_BYTES_NOINIT(7); | ||
| 452 | u64 applet_resource_user_id; | ||
| 453 | }; | ||
| 454 | static_assert(sizeof(Parameters) == 0x10, "Parameters has incorrect size."); | ||
| 449 | 455 | ||
| 450 | LOG_WARNING(Service_HID, "(STUBBED) called"); | 456 | const auto parameters{rp.PopRaw<Parameters>()}; |
| 457 | |||
| 458 | LOG_INFO(Service_HID, "called, is_enabled={}, applet_resource_user_id={}", | ||
| 459 | parameters.is_enabled, parameters.applet_resource_user_id); | ||
| 460 | |||
| 461 | const auto result = GetResourceManager()->GetNpad()->SetNpadSystemExtStateEnabled( | ||
| 462 | parameters.applet_resource_user_id, parameters.is_enabled); | ||
| 451 | 463 | ||
| 452 | IPC::ResponseBuilder rb{ctx, 2}; | 464 | IPC::ResponseBuilder rb{ctx, 2}; |
| 453 | rb.Push(ResultSuccess); | 465 | rb.Push(result); |
| 454 | } | 466 | } |
| 455 | void IHidSystemServer::RegisterAppletResourceUserId(HLERequestContext& ctx) { | 467 | void IHidSystemServer::RegisterAppletResourceUserId(HLERequestContext& ctx) { |
| 456 | IPC::RequestParser rp{ctx}; | 468 | IPC::RequestParser rp{ctx}; |
diff --git a/src/core/hle/service/hid/hid_system_server.h b/src/core/hle/service/hid/hid_system_server.h index 53091cf53..0c2634e3f 100644 --- a/src/core/hle/service/hid/hid_system_server.h +++ b/src/core/hle/service/hid/hid_system_server.h | |||
| @@ -38,7 +38,7 @@ private: | |||
| 38 | void HasBattery(HLERequestContext& ctx); | 38 | void HasBattery(HLERequestContext& ctx); |
| 39 | void HasLeftRightBattery(HLERequestContext& ctx); | 39 | void HasLeftRightBattery(HLERequestContext& ctx); |
| 40 | void GetUniquePadsFromNpad(HLERequestContext& ctx); | 40 | void GetUniquePadsFromNpad(HLERequestContext& ctx); |
| 41 | void GetIrSensorState(HLERequestContext& ctx); | 41 | void SetNpadSystemExtStateEnabled(HLERequestContext& ctx); |
| 42 | void RegisterAppletResourceUserId(HLERequestContext& ctx); | 42 | void RegisterAppletResourceUserId(HLERequestContext& ctx); |
| 43 | void UnregisterAppletResourceUserId(HLERequestContext& ctx); | 43 | void UnregisterAppletResourceUserId(HLERequestContext& ctx); |
| 44 | void EnableAppletToGetInput(HLERequestContext& ctx); | 44 | void EnableAppletToGetInput(HLERequestContext& ctx); |
diff --git a/src/hid_core/resources/npad/npad.cpp b/src/hid_core/resources/npad/npad.cpp index ea035d759..6be6edb7e 100644 --- a/src/hid_core/resources/npad/npad.cpp +++ b/src/hid_core/resources/npad/npad.cpp | |||
| @@ -1356,4 +1356,16 @@ std::size_t NPad::GetNpadCaptureButtonAssignment(std::span<Core::HID::NpadButton | |||
| 1356 | return npad_resource.GetNpadCaptureButtonAssignment(out_list, aruid); | 1356 | return npad_resource.GetNpadCaptureButtonAssignment(out_list, aruid); |
| 1357 | } | 1357 | } |
| 1358 | 1358 | ||
| 1359 | Result NPad::SetNpadSystemExtStateEnabled(u64 aruid, bool is_enabled) { | ||
| 1360 | std::scoped_lock lock{mutex}; | ||
| 1361 | const auto result = npad_resource.SetNpadSystemExtStateEnabled(aruid, is_enabled); | ||
| 1362 | |||
| 1363 | if (result.IsSuccess()) { | ||
| 1364 | std::scoped_lock shared_lock{*applet_resource_holder.shared_mutex}; | ||
| 1365 | // TODO: abstracted_pad->EnableAppletToGetInput(aruid); | ||
| 1366 | } | ||
| 1367 | |||
| 1368 | return result; | ||
| 1369 | } | ||
| 1370 | |||
| 1359 | } // namespace Service::HID | 1371 | } // namespace Service::HID |
diff --git a/src/hid_core/resources/npad/npad.h b/src/hid_core/resources/npad/npad.h index e602ddaea..73e2780c4 100644 --- a/src/hid_core/resources/npad/npad.h +++ b/src/hid_core/resources/npad/npad.h | |||
| @@ -155,6 +155,8 @@ public: | |||
| 155 | std::size_t GetNpadCaptureButtonAssignment(std::span<Core::HID::NpadButton> out_list, | 155 | std::size_t GetNpadCaptureButtonAssignment(std::span<Core::HID::NpadButton> out_list, |
| 156 | u64 aruid) const; | 156 | u64 aruid) const; |
| 157 | 157 | ||
| 158 | Result SetNpadSystemExtStateEnabled(u64 aruid, bool is_enabled); | ||
| 159 | |||
| 158 | private: | 160 | private: |
| 159 | struct VibrationData { | 161 | struct VibrationData { |
| 160 | bool device_mounted{}; | 162 | bool device_mounted{}; |