|
|
@@ -185,8 +185,8 @@ Hid::Hid(Core::System& system) : ServiceFramework("hid"), system(system) {
|
|
|
{77, nullptr, "GetAccelerometerPlayMode"},
|
|
|
{78, nullptr, "ResetAccelerometerPlayMode"},
|
|
|
{79, &Hid::SetGyroscopeZeroDriftMode, "SetGyroscopeZeroDriftMode"},
|
|
|
- {80, nullptr, "GetGyroscopeZeroDriftMode"},
|
|
|
- {81, nullptr, "ResetGyroscopeZeroDriftMode"},
|
|
|
+ {80, &Hid::GetGyroscopeZeroDriftMode, "GetGyroscopeZeroDriftMode"},
|
|
|
+ {81, &Hid::ResetGyroscopeZeroDriftMode, "ResetGyroscopeZeroDriftMode"},
|
|
|
{82, &Hid::IsSixAxisSensorAtRest, "IsSixAxisSensorAtRest"},
|
|
|
{83, nullptr, "IsFirmwareUpdateAvailableForSixAxisSensor"},
|
|
|
{91, &Hid::ActivateGesture, "ActivateGesture"},
|
|
|
@@ -419,9 +419,41 @@ void Hid::SetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx) {
|
|
|
const auto drift_mode{rp.Pop<u32>()};
|
|
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
|
|
|
|
|
- LOG_WARNING(Service_HID,
|
|
|
- "(STUBBED) called, handle={}, drift_mode={}, applet_resource_user_id={}", handle,
|
|
|
- drift_mode, applet_resource_user_id);
|
|
|
+ applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
|
|
+ .SetGyroscopeZeroDriftMode(Controller_NPad::GyroscopeZeroDriftMode{drift_mode});
|
|
|
+
|
|
|
+ LOG_DEBUG(Service_HID, "called, handle={}, drift_mode={}, applet_resource_user_id={}", handle,
|
|
|
+ drift_mode, applet_resource_user_id);
|
|
|
+
|
|
|
+ IPC::ResponseBuilder rb{ctx, 2};
|
|
|
+ rb.Push(RESULT_SUCCESS);
|
|
|
+}
|
|
|
+
|
|
|
+void Hid::GetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx) {
|
|
|
+ IPC::RequestParser rp{ctx};
|
|
|
+ const auto handle{rp.Pop<u32>()};
|
|
|
+ const auto applet_resource_user_id{rp.Pop<u64>()};
|
|
|
+
|
|
|
+ LOG_DEBUG(Service_HID, "called, handle={}, applet_resource_user_id={}", handle,
|
|
|
+ applet_resource_user_id);
|
|
|
+
|
|
|
+ IPC::ResponseBuilder rb{ctx, 3};
|
|
|
+ rb.Push(RESULT_SUCCESS);
|
|
|
+ rb.Push<u32>(
|
|
|
+ static_cast<u32>(applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
|
|
+ .GetGyroscopeZeroDriftMode()));
|
|
|
+}
|
|
|
+
|
|
|
+void Hid::ResetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx) {
|
|
|
+ IPC::RequestParser rp{ctx};
|
|
|
+ const auto handle{rp.Pop<u32>()};
|
|
|
+ const auto applet_resource_user_id{rp.Pop<u64>()};
|
|
|
+
|
|
|
+ applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
|
|
+ .SetGyroscopeZeroDriftMode(Controller_NPad::GyroscopeZeroDriftMode::Standard);
|
|
|
+
|
|
|
+ LOG_DEBUG(Service_HID, "called, handle={}, applet_resource_user_id={}", handle,
|
|
|
+ applet_resource_user_id);
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2};
|
|
|
rb.Push(RESULT_SUCCESS);
|