|
@@ -260,8 +260,8 @@ Hid::Hid(Core::System& system_)
|
|
|
{84, &Hid::EnableSixAxisSensorUnalteredPassthrough, "EnableSixAxisSensorUnalteredPassthrough"},
|
|
{84, &Hid::EnableSixAxisSensorUnalteredPassthrough, "EnableSixAxisSensorUnalteredPassthrough"},
|
|
|
{85, &Hid::IsSixAxisSensorUnalteredPassthroughEnabled, "IsSixAxisSensorUnalteredPassthroughEnabled"},
|
|
{85, &Hid::IsSixAxisSensorUnalteredPassthroughEnabled, "IsSixAxisSensorUnalteredPassthroughEnabled"},
|
|
|
{86, nullptr, "StoreSixAxisSensorCalibrationParameter"},
|
|
{86, nullptr, "StoreSixAxisSensorCalibrationParameter"},
|
|
|
- {87, nullptr, "LoadSixAxisSensorCalibrationParameter"},
|
|
|
|
|
- {88, nullptr, "GetSixAxisSensorIcInformation"},
|
|
|
|
|
|
|
+ {87, &Hid::LoadSixAxisSensorCalibrationParameter, "LoadSixAxisSensorCalibrationParameter"},
|
|
|
|
|
+ {88, &Hid::GetSixAxisSensorIcInformation, "GetSixAxisSensorIcInformation"},
|
|
|
{89, nullptr, "ResetIsSixAxisSensorDeviceNewlyAssigned"},
|
|
{89, nullptr, "ResetIsSixAxisSensorDeviceNewlyAssigned"},
|
|
|
{91, &Hid::ActivateGesture, "ActivateGesture"},
|
|
{91, &Hid::ActivateGesture, "ActivateGesture"},
|
|
|
{100, &Hid::SetSupportedNpadStyleSet, "SetSupportedNpadStyleSet"},
|
|
{100, &Hid::SetSupportedNpadStyleSet, "SetSupportedNpadStyleSet"},
|
|
@@ -870,6 +870,66 @@ void Hid::IsSixAxisSensorUnalteredPassthroughEnabled(Kernel::HLERequestContext&
|
|
|
rb.Push(is_unaltered_sisxaxis_enabled);
|
|
rb.Push(is_unaltered_sisxaxis_enabled);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+void Hid::LoadSixAxisSensorCalibrationParameter(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
+ IPC::RequestParser rp{ctx};
|
|
|
|
|
+ struct Parameters {
|
|
|
|
|
+ Core::HID::SixAxisSensorHandle sixaxis_handle;
|
|
|
|
|
+ INSERT_PADDING_WORDS_NOINIT(1);
|
|
|
|
|
+ u64 applet_resource_user_id;
|
|
|
|
|
+ };
|
|
|
|
|
+ static_assert(sizeof(Parameters) == 0x10, "Parameters has incorrect size.");
|
|
|
|
|
+
|
|
|
|
|
+ const auto parameters{rp.PopRaw<Parameters>()};
|
|
|
|
|
+
|
|
|
|
|
+ Core::HID::SixAxisSensorCalibrationParameter calibration{};
|
|
|
|
|
+ auto& controller = GetAppletResource()->GetController<Controller_NPad>(HidController::NPad);
|
|
|
|
|
+ const auto result =
|
|
|
|
|
+ controller.LoadSixAxisSensorCalibrationParameter(parameters.sixaxis_handle, calibration);
|
|
|
|
|
+
|
|
|
|
|
+ LOG_WARNING(
|
|
|
|
|
+ Service_HID,
|
|
|
|
|
+ "(STUBBED) called, npad_type={}, npad_id={}, device_index={}, applet_resource_user_id={}",
|
|
|
|
|
+ parameters.sixaxis_handle.npad_type, parameters.sixaxis_handle.npad_id,
|
|
|
|
|
+ parameters.sixaxis_handle.device_index, parameters.applet_resource_user_id);
|
|
|
|
|
+
|
|
|
|
|
+ if (result.IsSuccess()) {
|
|
|
|
|
+ ctx.WriteBuffer(calibration);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ IPC::ResponseBuilder rb{ctx, 2};
|
|
|
|
|
+ rb.Push(result);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void Hid::GetSixAxisSensorIcInformation(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
+ IPC::RequestParser rp{ctx};
|
|
|
|
|
+ struct Parameters {
|
|
|
|
|
+ Core::HID::SixAxisSensorHandle sixaxis_handle;
|
|
|
|
|
+ INSERT_PADDING_WORDS_NOINIT(1);
|
|
|
|
|
+ u64 applet_resource_user_id;
|
|
|
|
|
+ };
|
|
|
|
|
+ static_assert(sizeof(Parameters) == 0x10, "Parameters has incorrect size.");
|
|
|
|
|
+
|
|
|
|
|
+ const auto parameters{rp.PopRaw<Parameters>()};
|
|
|
|
|
+
|
|
|
|
|
+ Core::HID::SixAxisSensorIcInformation ic_information{};
|
|
|
|
|
+ auto& controller = GetAppletResource()->GetController<Controller_NPad>(HidController::NPad);
|
|
|
|
|
+ const auto result =
|
|
|
|
|
+ controller.GetSixAxisSensorIcInformation(parameters.sixaxis_handle, ic_information);
|
|
|
|
|
+
|
|
|
|
|
+ LOG_WARNING(
|
|
|
|
|
+ Service_HID,
|
|
|
|
|
+ "(STUBBED) called, npad_type={}, npad_id={}, device_index={}, applet_resource_user_id={}",
|
|
|
|
|
+ parameters.sixaxis_handle.npad_type, parameters.sixaxis_handle.npad_id,
|
|
|
|
|
+ parameters.sixaxis_handle.device_index, parameters.applet_resource_user_id);
|
|
|
|
|
+
|
|
|
|
|
+ if (result.IsSuccess()) {
|
|
|
|
|
+ ctx.WriteBuffer(ic_information);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ IPC::ResponseBuilder rb{ctx, 2};
|
|
|
|
|
+ rb.Push(result);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
void Hid::ActivateGesture(Kernel::HLERequestContext& ctx) {
|
|
void Hid::ActivateGesture(Kernel::HLERequestContext& ctx) {
|
|
|
IPC::RequestParser rp{ctx};
|
|
IPC::RequestParser rp{ctx};
|
|
|
struct Parameters {
|
|
struct Parameters {
|