diff options
Diffstat (limited to 'src/core/hle')
| -rw-r--r-- | src/core/hle/service/hid/controllers/npad.cpp | 7 | ||||
| -rw-r--r-- | src/core/hle/service/hid/controllers/npad.h | 14 | ||||
| -rw-r--r-- | src/core/hle/service/hid/hid.cpp | 6 |
3 files changed, 12 insertions, 15 deletions
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp index 80eba22e8..ba6f04d8d 100644 --- a/src/core/hle/service/hid/controllers/npad.cpp +++ b/src/core/hle/service/hid/controllers/npad.cpp | |||
| @@ -1132,7 +1132,8 @@ Result Controller_NPad::DisconnectNpad(Core::HID::NpadIdType npad_id) { | |||
| 1132 | return ResultSuccess; | 1132 | return ResultSuccess; |
| 1133 | } | 1133 | } |
| 1134 | Result Controller_NPad::SetGyroscopeZeroDriftMode( | 1134 | Result Controller_NPad::SetGyroscopeZeroDriftMode( |
| 1135 | const Core::HID::SixAxisSensorHandle& sixaxis_handle, GyroscopeZeroDriftMode drift_mode) { | 1135 | const Core::HID::SixAxisSensorHandle& sixaxis_handle, |
| 1136 | Core::HID::GyroscopeZeroDriftMode drift_mode) { | ||
| 1136 | const auto is_valid = VerifyValidSixAxisSensorHandle(sixaxis_handle); | 1137 | const auto is_valid = VerifyValidSixAxisSensorHandle(sixaxis_handle); |
| 1137 | if (is_valid.IsError()) { | 1138 | if (is_valid.IsError()) { |
| 1138 | LOG_ERROR(Service_HID, "Invalid handle, error_code={}", is_valid.raw); | 1139 | LOG_ERROR(Service_HID, "Invalid handle, error_code={}", is_valid.raw); |
| @@ -1140,14 +1141,16 @@ Result Controller_NPad::SetGyroscopeZeroDriftMode( | |||
| 1140 | } | 1141 | } |
| 1141 | 1142 | ||
| 1142 | auto& sixaxis = GetSixaxisState(sixaxis_handle); | 1143 | auto& sixaxis = GetSixaxisState(sixaxis_handle); |
| 1144 | auto& controller = GetControllerFromHandle(sixaxis_handle); | ||
| 1143 | sixaxis.gyroscope_zero_drift_mode = drift_mode; | 1145 | sixaxis.gyroscope_zero_drift_mode = drift_mode; |
| 1146 | controller.device->SetGyroscopeZeroDriftMode(drift_mode); | ||
| 1144 | 1147 | ||
| 1145 | return ResultSuccess; | 1148 | return ResultSuccess; |
| 1146 | } | 1149 | } |
| 1147 | 1150 | ||
| 1148 | Result Controller_NPad::GetGyroscopeZeroDriftMode( | 1151 | Result Controller_NPad::GetGyroscopeZeroDriftMode( |
| 1149 | const Core::HID::SixAxisSensorHandle& sixaxis_handle, | 1152 | const Core::HID::SixAxisSensorHandle& sixaxis_handle, |
| 1150 | GyroscopeZeroDriftMode& drift_mode) const { | 1153 | Core::HID::GyroscopeZeroDriftMode& drift_mode) const { |
| 1151 | const auto is_valid = VerifyValidSixAxisSensorHandle(sixaxis_handle); | 1154 | const auto is_valid = VerifyValidSixAxisSensorHandle(sixaxis_handle); |
| 1152 | if (is_valid.IsError()) { | 1155 | if (is_valid.IsError()) { |
| 1153 | LOG_ERROR(Service_HID, "Invalid handle, error_code={}", is_valid.raw); | 1156 | LOG_ERROR(Service_HID, "Invalid handle, error_code={}", is_valid.raw); |
diff --git a/src/core/hle/service/hid/controllers/npad.h b/src/core/hle/service/hid/controllers/npad.h index 02cc00920..a5998c453 100644 --- a/src/core/hle/service/hid/controllers/npad.h +++ b/src/core/hle/service/hid/controllers/npad.h | |||
| @@ -52,13 +52,6 @@ public: | |||
| 52 | // When the controller is requesting a motion update for the shared memory | 52 | // When the controller is requesting a motion update for the shared memory |
| 53 | void OnMotionUpdate(const Core::Timing::CoreTiming& core_timing) override; | 53 | void OnMotionUpdate(const Core::Timing::CoreTiming& core_timing) override; |
| 54 | 54 | ||
| 55 | // This is nn::hid::GyroscopeZeroDriftMode | ||
| 56 | enum class GyroscopeZeroDriftMode : u32 { | ||
| 57 | Loose = 0, | ||
| 58 | Standard = 1, | ||
| 59 | Tight = 2, | ||
| 60 | }; | ||
| 61 | |||
| 62 | // This is nn::hid::NpadJoyHoldType | 55 | // This is nn::hid::NpadJoyHoldType |
| 63 | enum class NpadJoyHoldType : u64 { | 56 | enum class NpadJoyHoldType : u64 { |
| 64 | Vertical = 0, | 57 | Vertical = 0, |
| @@ -146,9 +139,9 @@ public: | |||
| 146 | Result DisconnectNpad(Core::HID::NpadIdType npad_id); | 139 | Result DisconnectNpad(Core::HID::NpadIdType npad_id); |
| 147 | 140 | ||
| 148 | Result SetGyroscopeZeroDriftMode(const Core::HID::SixAxisSensorHandle& sixaxis_handle, | 141 | Result SetGyroscopeZeroDriftMode(const Core::HID::SixAxisSensorHandle& sixaxis_handle, |
| 149 | GyroscopeZeroDriftMode drift_mode); | 142 | Core::HID::GyroscopeZeroDriftMode drift_mode); |
| 150 | Result GetGyroscopeZeroDriftMode(const Core::HID::SixAxisSensorHandle& sixaxis_handle, | 143 | Result GetGyroscopeZeroDriftMode(const Core::HID::SixAxisSensorHandle& sixaxis_handle, |
| 151 | GyroscopeZeroDriftMode& drift_mode) const; | 144 | Core::HID::GyroscopeZeroDriftMode& drift_mode) const; |
| 152 | Result IsSixAxisSensorAtRest(const Core::HID::SixAxisSensorHandle& sixaxis_handle, | 145 | Result IsSixAxisSensorAtRest(const Core::HID::SixAxisSensorHandle& sixaxis_handle, |
| 153 | bool& is_at_rest) const; | 146 | bool& is_at_rest) const; |
| 154 | Result IsFirmwareUpdateAvailableForSixAxisSensor( | 147 | Result IsFirmwareUpdateAvailableForSixAxisSensor( |
| @@ -489,7 +482,8 @@ private: | |||
| 489 | Core::HID::SixAxisSensorFusionParameters fusion{}; | 482 | Core::HID::SixAxisSensorFusionParameters fusion{}; |
| 490 | Core::HID::SixAxisSensorCalibrationParameter calibration{}; | 483 | Core::HID::SixAxisSensorCalibrationParameter calibration{}; |
| 491 | Core::HID::SixAxisSensorIcInformation ic_information{}; | 484 | Core::HID::SixAxisSensorIcInformation ic_information{}; |
| 492 | GyroscopeZeroDriftMode gyroscope_zero_drift_mode{GyroscopeZeroDriftMode::Standard}; | 485 | Core::HID::GyroscopeZeroDriftMode gyroscope_zero_drift_mode{ |
| 486 | Core::HID::GyroscopeZeroDriftMode::Standard}; | ||
| 493 | }; | 487 | }; |
| 494 | 488 | ||
| 495 | struct NpadControllerData { | 489 | struct NpadControllerData { |
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index ac2c0c76d..5a1aa0903 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp | |||
| @@ -712,7 +712,7 @@ void Hid::ResetSixAxisSensorFusionParameters(Kernel::HLERequestContext& ctx) { | |||
| 712 | void Hid::SetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx) { | 712 | void Hid::SetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx) { |
| 713 | IPC::RequestParser rp{ctx}; | 713 | IPC::RequestParser rp{ctx}; |
| 714 | const auto sixaxis_handle{rp.PopRaw<Core::HID::SixAxisSensorHandle>()}; | 714 | const auto sixaxis_handle{rp.PopRaw<Core::HID::SixAxisSensorHandle>()}; |
| 715 | const auto drift_mode{rp.PopEnum<Controller_NPad::GyroscopeZeroDriftMode>()}; | 715 | const auto drift_mode{rp.PopEnum<Core::HID::GyroscopeZeroDriftMode>()}; |
| 716 | const auto applet_resource_user_id{rp.Pop<u64>()}; | 716 | const auto applet_resource_user_id{rp.Pop<u64>()}; |
| 717 | 717 | ||
| 718 | auto& controller = GetAppletResource()->GetController<Controller_NPad>(HidController::NPad); | 718 | auto& controller = GetAppletResource()->GetController<Controller_NPad>(HidController::NPad); |
| @@ -739,7 +739,7 @@ void Hid::GetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx) { | |||
| 739 | 739 | ||
| 740 | const auto parameters{rp.PopRaw<Parameters>()}; | 740 | const auto parameters{rp.PopRaw<Parameters>()}; |
| 741 | 741 | ||
| 742 | auto drift_mode{Controller_NPad::GyroscopeZeroDriftMode::Standard}; | 742 | auto drift_mode{Core::HID::GyroscopeZeroDriftMode::Standard}; |
| 743 | auto& controller = GetAppletResource()->GetController<Controller_NPad>(HidController::NPad); | 743 | auto& controller = GetAppletResource()->GetController<Controller_NPad>(HidController::NPad); |
| 744 | const auto result = controller.GetGyroscopeZeroDriftMode(parameters.sixaxis_handle, drift_mode); | 744 | const auto result = controller.GetGyroscopeZeroDriftMode(parameters.sixaxis_handle, drift_mode); |
| 745 | 745 | ||
| @@ -764,7 +764,7 @@ void Hid::ResetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx) { | |||
| 764 | 764 | ||
| 765 | const auto parameters{rp.PopRaw<Parameters>()}; | 765 | const auto parameters{rp.PopRaw<Parameters>()}; |
| 766 | 766 | ||
| 767 | const auto drift_mode{Controller_NPad::GyroscopeZeroDriftMode::Standard}; | 767 | const auto drift_mode{Core::HID::GyroscopeZeroDriftMode::Standard}; |
| 768 | auto& controller = GetAppletResource()->GetController<Controller_NPad>(HidController::NPad); | 768 | auto& controller = GetAppletResource()->GetController<Controller_NPad>(HidController::NPad); |
| 769 | const auto result = controller.SetGyroscopeZeroDriftMode(parameters.sixaxis_handle, drift_mode); | 769 | const auto result = controller.SetGyroscopeZeroDriftMode(parameters.sixaxis_handle, drift_mode); |
| 770 | 770 | ||