diff options
| author | 2021-04-22 16:39:48 -0700 | |
|---|---|---|
| committer | 2021-04-22 16:39:48 -0700 | |
| commit | cdce1edf74fbaad08f77f8dcd0722dbbf6e0f2a5 (patch) | |
| tree | 582dce8fa129e2fe8cfe7329ad805d56085f01e1 | |
| parent | Merge pull request #6222 from lat9nq/ext-boost (diff) | |
| parent | service: hid: Get transfer memory for InitializeSevenSixAxisSensor (diff) | |
| download | yuzu-cdce1edf74fbaad08f77f8dcd0722dbbf6e0f2a5.tar.gz yuzu-cdce1edf74fbaad08f77f8dcd0722dbbf6e0f2a5.tar.xz yuzu-cdce1edf74fbaad08f77f8dcd0722dbbf6e0f2a5.zip | |
Merge pull request #6224 from Morph1984/hid_InitializeSevenSixAxisSensor
service: hid: Get transfer memory for InitializeSevenSixAxisSensor
| -rw-r--r-- | src/core/hle/service/hid/hid.cpp | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index 4c1c0ac68..2aa1942cb 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | #include "core/hle/kernel/k_shared_memory.h" | 19 | #include "core/hle/kernel/k_shared_memory.h" |
| 20 | #include "core/hle/kernel/k_writable_event.h" | 20 | #include "core/hle/kernel/k_writable_event.h" |
| 21 | #include "core/hle/kernel/kernel.h" | 21 | #include "core/hle/kernel/kernel.h" |
| 22 | #include "core/hle/kernel/transfer_memory.h" | ||
| 22 | #include "core/hle/service/hid/errors.h" | 23 | #include "core/hle/service/hid/errors.h" |
| 23 | #include "core/hle/service/hid/hid.h" | 24 | #include "core/hle/service/hid/hid.h" |
| 24 | #include "core/hle/service/hid/irs.h" | 25 | #include "core/hle/service/hid/irs.h" |
| @@ -1484,7 +1485,43 @@ void Hid::StopSevenSixAxisSensor(Kernel::HLERequestContext& ctx) { | |||
| 1484 | } | 1485 | } |
| 1485 | 1486 | ||
| 1486 | void Hid::InitializeSevenSixAxisSensor(Kernel::HLERequestContext& ctx) { | 1487 | void Hid::InitializeSevenSixAxisSensor(Kernel::HLERequestContext& ctx) { |
| 1487 | LOG_WARNING(Service_HID, "(STUBBED) called"); | 1488 | IPC::RequestParser rp{ctx}; |
| 1489 | const auto applet_resource_user_id{rp.Pop<u64>()}; | ||
| 1490 | const auto t_mem_1_size{rp.Pop<u64>()}; | ||
| 1491 | const auto t_mem_2_size{rp.Pop<u64>()}; | ||
| 1492 | const auto t_mem_1_handle{ctx.GetCopyHandle(0)}; | ||
| 1493 | const auto t_mem_2_handle{ctx.GetCopyHandle(1)}; | ||
| 1494 | |||
| 1495 | ASSERT_MSG(t_mem_1_size == 0x1000, "t_mem_1_size is not 0x1000 bytes"); | ||
| 1496 | ASSERT_MSG(t_mem_2_size == 0x7F000, "t_mem_2_size is not 0x7F000 bytes"); | ||
| 1497 | |||
| 1498 | auto t_mem_1 = | ||
| 1499 | system.CurrentProcess()->GetHandleTable().Get<Kernel::TransferMemory>(t_mem_1_handle); | ||
| 1500 | |||
| 1501 | if (t_mem_1 == nullptr) { | ||
| 1502 | LOG_ERROR(Service_HID, "t_mem_1 is a nullptr for handle=0x{:08X}", t_mem_1_handle); | ||
| 1503 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 1504 | rb.Push(RESULT_UNKNOWN); | ||
| 1505 | return; | ||
| 1506 | } | ||
| 1507 | |||
| 1508 | auto t_mem_2 = | ||
| 1509 | system.CurrentProcess()->GetHandleTable().Get<Kernel::TransferMemory>(t_mem_2_handle); | ||
| 1510 | |||
| 1511 | if (t_mem_2 == nullptr) { | ||
| 1512 | LOG_ERROR(Service_HID, "t_mem_2 is a nullptr for handle=0x{:08X}", t_mem_2_handle); | ||
| 1513 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 1514 | rb.Push(RESULT_UNKNOWN); | ||
| 1515 | return; | ||
| 1516 | } | ||
| 1517 | |||
| 1518 | ASSERT_MSG(t_mem_1->GetSize() == 0x1000, "t_mem_1 has incorrect size"); | ||
| 1519 | ASSERT_MSG(t_mem_2->GetSize() == 0x7F000, "t_mem_2 has incorrect size"); | ||
| 1520 | |||
| 1521 | LOG_WARNING(Service_HID, | ||
| 1522 | "(STUBBED) called, t_mem_1_handle=0x{:08X}, t_mem_2_handle=0x{:08X}, " | ||
| 1523 | "applet_resource_user_id={}", | ||
| 1524 | t_mem_1_handle, t_mem_2_handle, applet_resource_user_id); | ||
| 1488 | 1525 | ||
| 1489 | IPC::ResponseBuilder rb{ctx, 2}; | 1526 | IPC::ResponseBuilder rb{ctx, 2}; |
| 1490 | rb.Push(RESULT_SUCCESS); | 1527 | rb.Push(RESULT_SUCCESS); |