diff options
Diffstat (limited to '')
| -rw-r--r-- | src/core/hle/service/hid/controllers/npad.cpp | 9 | ||||
| -rw-r--r-- | src/core/hle/service/hid/controllers/npad.h | 3 | ||||
| -rw-r--r-- | src/core/hle/service/hid/hid.cpp | 38 | ||||
| -rw-r--r-- | src/core/hle/service/hid/hid.h | 2 |
4 files changed, 50 insertions, 2 deletions
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp index e34ee519e..548517a1f 100644 --- a/src/core/hle/service/hid/controllers/npad.cpp +++ b/src/core/hle/service/hid/controllers/npad.cpp | |||
| @@ -826,6 +826,15 @@ Controller_NPad::LedPattern Controller_NPad::GetLedPattern(u32 npad_id) { | |||
| 826 | } | 826 | } |
| 827 | } | 827 | } |
| 828 | 828 | ||
| 829 | bool Controller_NPad::IsUnintendedHomeButtonInputProtectionEnabled(u32 npad_id) const { | ||
| 830 | return unintended_home_button_input_protection[NPadIdToIndex(npad_id)]; | ||
| 831 | } | ||
| 832 | |||
| 833 | void Controller_NPad::SetUnintendedHomeButtonInputProtectionEnabled(bool is_protection_enabled, | ||
| 834 | u32 npad_id) { | ||
| 835 | unintended_home_button_input_protection[NPadIdToIndex(npad_id)] = is_protection_enabled; | ||
| 836 | } | ||
| 837 | |||
| 829 | void Controller_NPad::SetVibrationEnabled(bool can_vibrate) { | 838 | void Controller_NPad::SetVibrationEnabled(bool can_vibrate) { |
| 830 | can_controllers_vibrate = can_vibrate; | 839 | can_controllers_vibrate = can_vibrate; |
| 831 | } | 840 | } |
diff --git a/src/core/hle/service/hid/controllers/npad.h b/src/core/hle/service/hid/controllers/npad.h index 0fa7455ba..cd49f49be 100644 --- a/src/core/hle/service/hid/controllers/npad.h +++ b/src/core/hle/service/hid/controllers/npad.h | |||
| @@ -146,6 +146,8 @@ public: | |||
| 146 | bool IsSixAxisSensorAtRest() const; | 146 | bool IsSixAxisSensorAtRest() const; |
| 147 | void SetSixAxisEnabled(bool six_axis_status); | 147 | void SetSixAxisEnabled(bool six_axis_status); |
| 148 | LedPattern GetLedPattern(u32 npad_id); | 148 | LedPattern GetLedPattern(u32 npad_id); |
| 149 | bool IsUnintendedHomeButtonInputProtectionEnabled(u32 npad_id) const; | ||
| 150 | void SetUnintendedHomeButtonInputProtectionEnabled(bool is_protection_enabled, u32 npad_id); | ||
| 149 | void SetVibrationEnabled(bool can_vibrate); | 151 | void SetVibrationEnabled(bool can_vibrate); |
| 150 | bool IsVibrationEnabled() const; | 152 | bool IsVibrationEnabled() const; |
| 151 | void ClearAllConnectedControllers(); | 153 | void ClearAllConnectedControllers(); |
| @@ -387,6 +389,7 @@ private: | |||
| 387 | std::array<Kernel::EventPair, 10> styleset_changed_events; | 389 | std::array<Kernel::EventPair, 10> styleset_changed_events; |
| 388 | Vibration last_processed_vibration{}; | 390 | Vibration last_processed_vibration{}; |
| 389 | std::array<ControllerHolder, 10> connected_controllers{}; | 391 | std::array<ControllerHolder, 10> connected_controllers{}; |
| 392 | std::array<bool, 10> unintended_home_button_input_protection{}; | ||
| 390 | GyroscopeZeroDriftMode gyroscope_zero_drift_mode{GyroscopeZeroDriftMode::Standard}; | 393 | GyroscopeZeroDriftMode gyroscope_zero_drift_mode{GyroscopeZeroDriftMode::Standard}; |
| 391 | bool can_controllers_vibrate{true}; | 394 | bool can_controllers_vibrate{true}; |
| 392 | bool sixaxis_sensors_enabled{true}; | 395 | bool sixaxis_sensors_enabled{true}; |
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index 9a7e5e265..eaa7038d9 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp | |||
| @@ -224,8 +224,8 @@ Hid::Hid(Core::System& system) : ServiceFramework("hid"), system(system) { | |||
| 224 | {128, &Hid::SetNpadHandheldActivationMode, "SetNpadHandheldActivationMode"}, | 224 | {128, &Hid::SetNpadHandheldActivationMode, "SetNpadHandheldActivationMode"}, |
| 225 | {129, &Hid::GetNpadHandheldActivationMode, "GetNpadHandheldActivationMode"}, | 225 | {129, &Hid::GetNpadHandheldActivationMode, "GetNpadHandheldActivationMode"}, |
| 226 | {130, &Hid::SwapNpadAssignment, "SwapNpadAssignment"}, | 226 | {130, &Hid::SwapNpadAssignment, "SwapNpadAssignment"}, |
| 227 | {131, nullptr, "IsUnintendedHomeButtonInputProtectionEnabled"}, | 227 | {131, &Hid::IsUnintendedHomeButtonInputProtectionEnabled, "IsUnintendedHomeButtonInputProtectionEnabled"}, |
| 228 | {132, nullptr, "EnableUnintendedHomeButtonInputProtection"}, | 228 | {132, &Hid::EnableUnintendedHomeButtonInputProtection, "EnableUnintendedHomeButtonInputProtection"}, |
| 229 | {133, nullptr, "SetNpadJoyAssignmentModeSingleWithDestination"}, | 229 | {133, nullptr, "SetNpadJoyAssignmentModeSingleWithDestination"}, |
| 230 | {134, nullptr, "SetNpadAnalogStickUseCenterClamp"}, | 230 | {134, nullptr, "SetNpadAnalogStickUseCenterClamp"}, |
| 231 | {135, nullptr, "SetNpadCaptureButtonAssignment"}, | 231 | {135, nullptr, "SetNpadCaptureButtonAssignment"}, |
| @@ -796,6 +796,40 @@ void Hid::SwapNpadAssignment(Kernel::HLERequestContext& ctx) { | |||
| 796 | } | 796 | } |
| 797 | } | 797 | } |
| 798 | 798 | ||
| 799 | void Hid::IsUnintendedHomeButtonInputProtectionEnabled(Kernel::HLERequestContext& ctx) { | ||
| 800 | IPC::RequestParser rp{ctx}; | ||
| 801 | const auto npad_id{rp.Pop<u32>()}; | ||
| 802 | const auto applet_resource_user_id{rp.Pop<u64>()}; | ||
| 803 | |||
| 804 | LOG_WARNING(Service_HID, "(STUBBED) called, npad_id={}, applet_resource_user_id={}", npad_id, | ||
| 805 | applet_resource_user_id); | ||
| 806 | |||
| 807 | auto& controller = applet_resource->GetController<Controller_NPad>(HidController::NPad); | ||
| 808 | |||
| 809 | IPC::ResponseBuilder rb{ctx, 3}; | ||
| 810 | rb.Push(RESULT_SUCCESS); | ||
| 811 | rb.Push<bool>(controller.IsUnintendedHomeButtonInputProtectionEnabled(npad_id)); | ||
| 812 | } | ||
| 813 | |||
| 814 | void Hid::EnableUnintendedHomeButtonInputProtection(Kernel::HLERequestContext& ctx) { | ||
| 815 | IPC::RequestParser rp{ctx}; | ||
| 816 | const auto unintended_home_button_input_protection{rp.Pop<bool>()}; | ||
| 817 | const auto npad_id{rp.Pop<u32>()}; | ||
| 818 | const auto applet_resource_user_id{rp.Pop<u64>()}; | ||
| 819 | |||
| 820 | LOG_WARNING(Service_HID, | ||
| 821 | "(STUBBED) called, unintended_home_button_input_protection={}, npad_id={}," | ||
| 822 | "applet_resource_user_id={}", | ||
| 823 | npad_id, unintended_home_button_input_protection, applet_resource_user_id); | ||
| 824 | |||
| 825 | auto& controller = applet_resource->GetController<Controller_NPad>(HidController::NPad); | ||
| 826 | controller.SetUnintendedHomeButtonInputProtectionEnabled( | ||
| 827 | unintended_home_button_input_protection, npad_id); | ||
| 828 | |||
| 829 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 830 | rb.Push(RESULT_SUCCESS); | ||
| 831 | } | ||
| 832 | |||
| 799 | void Hid::BeginPermitVibrationSession(Kernel::HLERequestContext& ctx) { | 833 | void Hid::BeginPermitVibrationSession(Kernel::HLERequestContext& ctx) { |
| 800 | IPC::RequestParser rp{ctx}; | 834 | IPC::RequestParser rp{ctx}; |
| 801 | const auto applet_resource_user_id{rp.Pop<u64>()}; | 835 | const auto applet_resource_user_id{rp.Pop<u64>()}; |
diff --git a/src/core/hle/service/hid/hid.h b/src/core/hle/service/hid/hid.h index 3cfd72a51..820e101c7 100644 --- a/src/core/hle/service/hid/hid.h +++ b/src/core/hle/service/hid/hid.h | |||
| @@ -122,6 +122,8 @@ private: | |||
| 122 | void SetNpadHandheldActivationMode(Kernel::HLERequestContext& ctx); | 122 | void SetNpadHandheldActivationMode(Kernel::HLERequestContext& ctx); |
| 123 | void GetNpadHandheldActivationMode(Kernel::HLERequestContext& ctx); | 123 | void GetNpadHandheldActivationMode(Kernel::HLERequestContext& ctx); |
| 124 | void SwapNpadAssignment(Kernel::HLERequestContext& ctx); | 124 | void SwapNpadAssignment(Kernel::HLERequestContext& ctx); |
| 125 | void IsUnintendedHomeButtonInputProtectionEnabled(Kernel::HLERequestContext& ctx); | ||
| 126 | void EnableUnintendedHomeButtonInputProtection(Kernel::HLERequestContext& ctx); | ||
| 125 | void BeginPermitVibrationSession(Kernel::HLERequestContext& ctx); | 127 | void BeginPermitVibrationSession(Kernel::HLERequestContext& ctx); |
| 126 | void EndPermitVibrationSession(Kernel::HLERequestContext& ctx); | 128 | void EndPermitVibrationSession(Kernel::HLERequestContext& ctx); |
| 127 | void SendVibrationValue(Kernel::HLERequestContext& ctx); | 129 | void SendVibrationValue(Kernel::HLERequestContext& ctx); |