hle: Eliminate need to specify command headers for IPC. (#6678)

This commit is contained in:
Steveice10 2023-07-14 17:32:59 -07:00 committed by GitHub
parent 0bedb28bdc
commit e043caac27
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
96 changed files with 2691 additions and 2707 deletions

View file

@ -12,14 +12,14 @@ namespace Service::NIM {
NIM_AOC::NIM_AOC() : ServiceFramework("nim:aoc", 2) {
const FunctionInfo functions[] = {
// clang-format off
{IPC::MakeHeader(0x0003, 1, 2), nullptr, "SetApplicationId"},
{IPC::MakeHeader(0x0004, 1, 2), nullptr, "SetTin"},
{IPC::MakeHeader(0x0009, 11, 16), nullptr, "ListContentSetsEx"},
{IPC::MakeHeader(0x0018, 0, 0), nullptr, "GetBalance"},
{IPC::MakeHeader(0x001D, 0, 0), nullptr, "GetCustomerSupportCode"},
{IPC::MakeHeader(0x0021, 0, 0), nullptr, "Initialize"},
{IPC::MakeHeader(0x0024, 10, 2), nullptr, "CalculateContentsRequiredSize"},
{IPC::MakeHeader(0x0025, 0, 0), nullptr, "RefreshServerTime"},
{0x0003, nullptr, "SetApplicationId"},
{0x0004, nullptr, "SetTin"},
{0x0009, nullptr, "ListContentSetsEx"},
{0x0018, nullptr, "GetBalance"},
{0x001D, nullptr, "GetCustomerSupportCode"},
{0x0021, nullptr, "Initialize"},
{0x0024, nullptr, "CalculateContentsRequiredSize"},
{0x0025, nullptr, "RefreshServerTime"},
// clang-format on
};
RegisterHandlers(functions);

View file

@ -12,11 +12,11 @@ namespace Service::NIM {
NIM_S::NIM_S() : ServiceFramework("nim:s", 1) {
const FunctionInfo functions[] = {
// clang-format off
{IPC::MakeHeader(0x000A, 0, 0), nullptr, "CheckSysupdateAvailableSOAP"},
{IPC::MakeHeader(0x0016, 8, 10), nullptr, "ListTitles"},
{IPC::MakeHeader(0x0029, 0, 0), nullptr, "AccountCheckBalanceSOAP"},
{IPC::MakeHeader(0x002D, 1, 2), nullptr, "DownloadTickets"},
{IPC::MakeHeader(0x0042, 9, 0), nullptr, "StartDownload"},
{0x000A, nullptr, "CheckSysupdateAvailableSOAP"},
{0x0016, nullptr, "ListTitles"},
{0x0029, nullptr, "AccountCheckBalanceSOAP"},
{0x002D, nullptr, "DownloadTickets"},
{0x0042, nullptr, "StartDownload"},
// clang-format on
};
RegisterHandlers(functions);

View file

@ -126,52 +126,52 @@ static_assert(sizeof(AutoDbgDat) == 0x108, "AutoDbgDat structure size is wrong")
NIM_U::NIM_U(Core::System& system) : ServiceFramework("nim:u", 2) {
const FunctionInfo functions[] = {
// clang-format off
{IPC::MakeHeader(0x0001, 0, 0), &NIM_U::StartNetworkUpdate, "StartNetworkUpdate"},
{IPC::MakeHeader(0x0002, 0, 0), &NIM_U::GetProgress, "GetProgress"},
{IPC::MakeHeader(0x0003, 0, 0), &NIM_U::Cancel, "Cancel"},
{IPC::MakeHeader(0x0004, 0, 0), &NIM_U::CommitSystemTitles, "CommitSystemTitles"},
{IPC::MakeHeader(0x0005, 0, 0), &NIM_U::GetBackgroundEventForMenu, "GetBackgroundEventForMenu"},
{IPC::MakeHeader(0x0006, 0, 0), &NIM_U::GetBackgroundEventForNews, "GetBackgroundEventForNews"},
{IPC::MakeHeader(0x0007, 0, 0), &NIM_U::FormatSaveData, "FormatSaveData"},
{IPC::MakeHeader(0x0008, 0, 0), &NIM_U::GetCustomerSupportCode, "GetCustomerSupportCode"},
{IPC::MakeHeader(0x0009, 0, 0), &NIM_U::IsCommittableAllSystemTitles, "IsCommittableAllSystemTitles"},
{IPC::MakeHeader(0x000A, 0, 0), &NIM_U::GetBackgroundProgress, "GetBackgroundProgress"},
{IPC::MakeHeader(0x000B, 0, 0), &NIM_U::GetSavedHash, "GetSavedHash"},
{IPC::MakeHeader(0x000C, 2, 2), &NIM_U::UnregisterTask, "UnregisterTask"},
{IPC::MakeHeader(0x000D, 2, 0), &NIM_U::IsRegistered, "IsRegistered"},
{IPC::MakeHeader(0x000E, 2, 0), &NIM_U::FindTaskInfo, "FindTaskInfo"},
{IPC::MakeHeader(0x000F, 1, 2), &NIM_U::GetTaskInfos, "GetTaskInfos"},
{IPC::MakeHeader(0x0010, 0, 0), &NIM_U::DeleteUnmanagedContexts, "DeleteUnmanagedContexts"},
{IPC::MakeHeader(0x0011, 0, 0), &NIM_U::UpdateAutoTitleDownloadTasksAsync, "UpdateAutoTitleDownloadTasksAsync"},
{IPC::MakeHeader(0x0012, 0, 0), &NIM_U::StartPendingAutoTitleDownloadTasksAsync, "StartPendingAutoTitleDownloadTasksAsync"},
{IPC::MakeHeader(0x0013, 0, 0), &NIM_U::GetAsyncResult, "GetAsyncResult"},
{IPC::MakeHeader(0x0014, 0, 0), &NIM_U::CancelAsyncCall, "CancelAsyncCall"},
{IPC::MakeHeader(0x0015, 0, 0), &NIM_U::IsPendingAutoTitleDownloadTasks, "IsPendingAutoTitleDownloadTasks"},
{IPC::MakeHeader(0x0016, 0, 0), &NIM_U::GetNumAutoTitleDownloadTasks, "GetNumAutoTitleDownloadTasks"},
{IPC::MakeHeader(0x0017, 1, 2), &NIM_U::GetAutoTitleDownloadTaskInfos, "GetAutoTitleDownloadTaskInfos"},
{IPC::MakeHeader(0x0018, 2, 0), &NIM_U::CancelAutoTitleDownloadTask, "CancelAutoTitleDownloadTask"},
{IPC::MakeHeader(0x0019, 0, 2), &NIM_U::SetAutoDbgDat, "SetAutoDbgDat"},
{IPC::MakeHeader(0x001A, 0, 2), &NIM_U::GetAutoDbgDat, "GetAutoDbgDat"},
{IPC::MakeHeader(0x001B, 1, 2), &NIM_U::SetDbgTasks, "SetDbgTasks"},
{IPC::MakeHeader(0x001C, 1, 2), &NIM_U::GetDbgTasks, "GetDbgTasks"},
{IPC::MakeHeader(0x001D, 0, 0), &NIM_U::DeleteDbgData, "DeleteDbgData"},
{IPC::MakeHeader(0x001E, 1, 2), &NIM_U::SetTslXml, "SetTslXml"},
{IPC::MakeHeader(0x001F, 0, 0), &NIM_U::GetTslXmlSize, "GetTslXmlSize"},
{IPC::MakeHeader(0x0020, 1, 2), &NIM_U::GetTslXml, "GetTslXml"},
{IPC::MakeHeader(0x0021, 0, 0), &NIM_U::DeleteTslXml, "DeleteTslXml"},
{IPC::MakeHeader(0x0022, 1, 2), &NIM_U::SetDtlXml, "SetDtlXml"},
{IPC::MakeHeader(0x0023, 0, 0), &NIM_U::GetDtlXmlSize, "GetDtlXmlSize"},
{IPC::MakeHeader(0x0024, 1, 2), &NIM_U::GetDtlXml, "GetDtlXml"},
{IPC::MakeHeader(0x0025, 0, 0), &NIM_U::UpdateAccountStatus, "UpdateAccountStatus"},
{IPC::MakeHeader(0x0026, 6, 0), &NIM_U::StartTitleDownload, "StartTitleDownload"},
{IPC::MakeHeader(0x0027, 0, 0), &NIM_U::StopTitleDownload, "StopTitleDownload"},
{IPC::MakeHeader(0x0028, 0, 0), &NIM_U::GetTitleDownloadProgress, "GetTitleDownloadProgress"},
{IPC::MakeHeader(0x0029, 9, 6), &NIM_U::RegisterTask, "RegisterTask"},
{IPC::MakeHeader(0x002A, 0, 0), &NIM_U::IsSystemUpdateAvailable, "IsSystemUpdateAvailable"},
{IPC::MakeHeader(0x002B, 0, 0), &NIM_U::Unknown2B, "Unknown2B"},
{IPC::MakeHeader(0x002C, 0, 0), &NIM_U::UpdateTickets, "UpdateTickets"},
{IPC::MakeHeader(0x002D, 3, 0), &NIM_U::DownloadTitleSeedAsync, "DownloadTitleSeedAsync"},
{IPC::MakeHeader(0x002E, 0, 0), &NIM_U::DownloadMissingTitleSeedsAsync, "DownloadMissingTitleSeedsAsync"},
{0x0001, &NIM_U::StartNetworkUpdate, "StartNetworkUpdate"},
{0x0002, &NIM_U::GetProgress, "GetProgress"},
{0x0003, &NIM_U::Cancel, "Cancel"},
{0x0004, &NIM_U::CommitSystemTitles, "CommitSystemTitles"},
{0x0005, &NIM_U::GetBackgroundEventForMenu, "GetBackgroundEventForMenu"},
{0x0006, &NIM_U::GetBackgroundEventForNews, "GetBackgroundEventForNews"},
{0x0007, &NIM_U::FormatSaveData, "FormatSaveData"},
{0x0008, &NIM_U::GetCustomerSupportCode, "GetCustomerSupportCode"},
{0x0009, &NIM_U::IsCommittableAllSystemTitles, "IsCommittableAllSystemTitles"},
{0x000A, &NIM_U::GetBackgroundProgress, "GetBackgroundProgress"},
{0x000B, &NIM_U::GetSavedHash, "GetSavedHash"},
{0x000C, &NIM_U::UnregisterTask, "UnregisterTask"},
{0x000D, &NIM_U::IsRegistered, "IsRegistered"},
{0x000E, &NIM_U::FindTaskInfo, "FindTaskInfo"},
{0x000F, &NIM_U::GetTaskInfos, "GetTaskInfos"},
{0x0010, &NIM_U::DeleteUnmanagedContexts, "DeleteUnmanagedContexts"},
{0x0011, &NIM_U::UpdateAutoTitleDownloadTasksAsync, "UpdateAutoTitleDownloadTasksAsync"},
{0x0012, &NIM_U::StartPendingAutoTitleDownloadTasksAsync, "StartPendingAutoTitleDownloadTasksAsync"},
{0x0013, &NIM_U::GetAsyncResult, "GetAsyncResult"},
{0x0014, &NIM_U::CancelAsyncCall, "CancelAsyncCall"},
{0x0015, &NIM_U::IsPendingAutoTitleDownloadTasks, "IsPendingAutoTitleDownloadTasks"},
{0x0016, &NIM_U::GetNumAutoTitleDownloadTasks, "GetNumAutoTitleDownloadTasks"},
{0x0017, &NIM_U::GetAutoTitleDownloadTaskInfos, "GetAutoTitleDownloadTaskInfos"},
{0x0018, &NIM_U::CancelAutoTitleDownloadTask, "CancelAutoTitleDownloadTask"},
{0x0019, &NIM_U::SetAutoDbgDat, "SetAutoDbgDat"},
{0x001A, &NIM_U::GetAutoDbgDat, "GetAutoDbgDat"},
{0x001B, &NIM_U::SetDbgTasks, "SetDbgTasks"},
{0x001C, &NIM_U::GetDbgTasks, "GetDbgTasks"},
{0x001D, &NIM_U::DeleteDbgData, "DeleteDbgData"},
{0x001E, &NIM_U::SetTslXml, "SetTslXml"},
{0x001F, &NIM_U::GetTslXmlSize, "GetTslXmlSize"},
{0x0020, &NIM_U::GetTslXml, "GetTslXml"},
{0x0021, &NIM_U::DeleteTslXml, "DeleteTslXml"},
{0x0022, &NIM_U::SetDtlXml, "SetDtlXml"},
{0x0023, &NIM_U::GetDtlXmlSize, "GetDtlXmlSize"},
{0x0024, &NIM_U::GetDtlXml, "GetDtlXml"},
{0x0025, &NIM_U::UpdateAccountStatus, "UpdateAccountStatus"},
{0x0026, &NIM_U::StartTitleDownload, "StartTitleDownload"},
{0x0027, &NIM_U::StopTitleDownload, "StopTitleDownload"},
{0x0028, &NIM_U::GetTitleDownloadProgress, "GetTitleDownloadProgress"},
{0x0029, &NIM_U::RegisterTask, "RegisterTask"},
{0x002A, &NIM_U::IsSystemUpdateAvailable, "IsSystemUpdateAvailable"},
{0x002B, &NIM_U::Unknown2B, "Unknown2B"},
{0x002C, &NIM_U::UpdateTickets, "UpdateTickets"},
{0x002D, &NIM_U::DownloadTitleSeedAsync, "DownloadTitleSeedAsync"},
{0x002E, &NIM_U::DownloadMissingTitleSeedsAsync, "DownloadMissingTitleSeedsAsync"},
// clang-format on
};
RegisterHandlers(functions);
@ -186,7 +186,7 @@ NIM_U::NIM_U(Core::System& system) : ServiceFramework("nim:u", 2) {
NIM_U::~NIM_U() = default;
void NIM_U::StartNetworkUpdate(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x1, 0, 0); // 0x10000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS);
@ -195,7 +195,7 @@ void NIM_U::StartNetworkUpdate(Kernel::HLERequestContext& ctx) {
}
void NIM_U::GetProgress(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x2, 0, 0); // 0x20000
IPC::RequestParser rp(ctx);
SystemUpdateProgress progress{};
std::memset(&progress, 0, sizeof(progress));
@ -210,7 +210,7 @@ void NIM_U::GetProgress(Kernel::HLERequestContext& ctx) {
}
void NIM_U::Cancel(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x3, 0, 0); // 0x30000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS);
@ -219,7 +219,7 @@ void NIM_U::Cancel(Kernel::HLERequestContext& ctx) {
}
void NIM_U::CommitSystemTitles(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x4, 0, 0); // 0x40000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS);
@ -228,7 +228,7 @@ void NIM_U::CommitSystemTitles(Kernel::HLERequestContext& ctx) {
}
void NIM_U::GetBackgroundEventForMenu(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x5, 0, 0); // 0x50000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(1, 2);
rb.Push(RESULT_SUCCESS);
@ -238,7 +238,7 @@ void NIM_U::GetBackgroundEventForMenu(Kernel::HLERequestContext& ctx) {
}
void NIM_U::GetBackgroundEventForNews(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x6, 0, 0); // 0x60000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(1, 2);
rb.Push(RESULT_SUCCESS);
@ -248,7 +248,7 @@ void NIM_U::GetBackgroundEventForNews(Kernel::HLERequestContext& ctx) {
}
void NIM_U::FormatSaveData(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x7, 0, 0); // 0x70000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS);
@ -257,7 +257,7 @@ void NIM_U::FormatSaveData(Kernel::HLERequestContext& ctx) {
}
void NIM_U::GetCustomerSupportCode(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x8, 0, 0); // 0x80000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
rb.Push(RESULT_SUCCESS);
@ -267,7 +267,7 @@ void NIM_U::GetCustomerSupportCode(Kernel::HLERequestContext& ctx) {
}
void NIM_U::IsCommittableAllSystemTitles(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x9, 0, 0); // 0x90000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
rb.Push(RESULT_SUCCESS);
@ -277,7 +277,7 @@ void NIM_U::IsCommittableAllSystemTitles(Kernel::HLERequestContext& ctx) {
}
void NIM_U::GetBackgroundProgress(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0xA, 0, 0); // 0xA0000
IPC::RequestParser rp(ctx);
SystemUpdateProgress progress{};
std::memset(&progress, 0, sizeof(progress));
@ -292,7 +292,7 @@ void NIM_U::GetBackgroundProgress(Kernel::HLERequestContext& ctx) {
}
void NIM_U::GetSavedHash(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0xB, 0, 0); // 0xB0000
IPC::RequestParser rp(ctx);
std::array<char, 0x24> hash{};
std::memset(&hash, 0, sizeof(hash));
@ -305,7 +305,7 @@ void NIM_U::GetSavedHash(Kernel::HLERequestContext& ctx) {
}
void NIM_U::UnregisterTask(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0xC, 2, 2); // 0xC0082
IPC::RequestParser rp(ctx);
const u64 title_id = rp.Pop<u64>();
const u32 process_id = rp.PopPID();
@ -319,7 +319,7 @@ void NIM_U::UnregisterTask(Kernel::HLERequestContext& ctx) {
}
void NIM_U::IsRegistered(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0xD, 2, 0); // 0xD0080
IPC::RequestParser rp(ctx);
const u64 title_id = rp.Pop<u64>();
@ -331,7 +331,7 @@ void NIM_U::IsRegistered(Kernel::HLERequestContext& ctx) {
}
void NIM_U::FindTaskInfo(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0xE, 2, 0); // 0xE0080
IPC::RequestParser rp(ctx);
const u64 title_id = rp.Pop<u64>();
@ -346,7 +346,7 @@ void NIM_U::FindTaskInfo(Kernel::HLERequestContext& ctx) {
}
void NIM_U::GetTaskInfos(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0xF, 1, 2); // 0xF0042
IPC::RequestParser rp(ctx);
const u64 max_task_infos = rp.Pop<u32>();
auto& task_infos_buffer = rp.PopMappedBuffer();
@ -361,7 +361,7 @@ void NIM_U::GetTaskInfos(Kernel::HLERequestContext& ctx) {
}
void NIM_U::DeleteUnmanagedContexts(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x10, 0, 0); // 0x100000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS);
@ -370,7 +370,7 @@ void NIM_U::DeleteUnmanagedContexts(Kernel::HLERequestContext& ctx) {
}
void NIM_U::UpdateAutoTitleDownloadTasksAsync(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x11, 0, 0); // 0x110000
IPC::RequestParser rp(ctx);
// Since this is a stub, signal the completion event so the caller won't get stuck waiting.
nim_async_completion_event->Signal();
@ -383,7 +383,7 @@ void NIM_U::UpdateAutoTitleDownloadTasksAsync(Kernel::HLERequestContext& ctx) {
}
void NIM_U::StartPendingAutoTitleDownloadTasksAsync(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x11, 0, 0); // 0x120000
IPC::RequestParser rp(ctx);
// Since this is a stub, signal the completion event so the caller won't get stuck waiting.
nim_async_completion_event->Signal();
@ -396,7 +396,7 @@ void NIM_U::StartPendingAutoTitleDownloadTasksAsync(Kernel::HLERequestContext& c
}
void NIM_U::GetAsyncResult(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x13, 0, 0); // 0x130000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(3, 0);
rb.Push(RESULT_SUCCESS);
@ -407,7 +407,7 @@ void NIM_U::GetAsyncResult(Kernel::HLERequestContext& ctx) {
}
void NIM_U::CancelAsyncCall(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x14, 0, 0); // 0x140000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS);
@ -416,7 +416,7 @@ void NIM_U::CancelAsyncCall(Kernel::HLERequestContext& ctx) {
}
void NIM_U::IsPendingAutoTitleDownloadTasks(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x15, 0, 0); // 0x150000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
rb.Push(RESULT_SUCCESS);
@ -426,7 +426,7 @@ void NIM_U::IsPendingAutoTitleDownloadTasks(Kernel::HLERequestContext& ctx) {
}
void NIM_U::GetNumAutoTitleDownloadTasks(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x16, 0, 0); // 0x160000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
rb.Push(RESULT_SUCCESS);
@ -436,7 +436,7 @@ void NIM_U::GetNumAutoTitleDownloadTasks(Kernel::HLERequestContext& ctx) {
}
void NIM_U::GetAutoTitleDownloadTaskInfos(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x17, 1, 2); // 0x170042
IPC::RequestParser rp(ctx);
const u64 max_task_infos = rp.Pop<u32>();
auto& task_infos_buffer = rp.PopMappedBuffer();
@ -451,7 +451,7 @@ void NIM_U::GetAutoTitleDownloadTaskInfos(Kernel::HLERequestContext& ctx) {
}
void NIM_U::CancelAutoTitleDownloadTask(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x18, 2, 0); // 0x180080
IPC::RequestParser rp(ctx);
const u64 task_id = rp.Pop<u64>();
@ -462,7 +462,7 @@ void NIM_U::CancelAutoTitleDownloadTask(Kernel::HLERequestContext& ctx) {
}
void NIM_U::SetAutoDbgDat(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x19, 0, 2); // 0x190002
IPC::RequestParser rp(ctx);
auto& auto_dbg_dat_buffer = rp.PopMappedBuffer();
@ -475,7 +475,7 @@ void NIM_U::SetAutoDbgDat(Kernel::HLERequestContext& ctx) {
}
void NIM_U::GetAutoDbgDat(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x1A, 0, 2); // 0x1A0002
IPC::RequestParser rp(ctx);
auto& auto_dbg_dat_buffer = rp.PopMappedBuffer();
@ -488,7 +488,7 @@ void NIM_U::GetAutoDbgDat(Kernel::HLERequestContext& ctx) {
}
void NIM_U::SetDbgTasks(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x1B, 1, 2); // 0x1B0042
IPC::RequestParser rp(ctx);
const u64 max_task_infos = rp.Pop<u32>();
auto& task_infos_buffer = rp.PopMappedBuffer();
@ -502,7 +502,7 @@ void NIM_U::SetDbgTasks(Kernel::HLERequestContext& ctx) {
}
void NIM_U::GetDbgTasks(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x1C, 1, 2); // 0x1C0042
IPC::RequestParser rp(ctx);
const u64 max_task_infos = rp.Pop<u32>();
auto& task_infos_buffer = rp.PopMappedBuffer();
@ -517,7 +517,7 @@ void NIM_U::GetDbgTasks(Kernel::HLERequestContext& ctx) {
}
void NIM_U::DeleteDbgData(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x1D, 0, 0); // 0x1D0000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS);
@ -526,7 +526,7 @@ void NIM_U::DeleteDbgData(Kernel::HLERequestContext& ctx) {
}
void NIM_U::SetTslXml(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x1E, 1, 2); // 0x1E0042
IPC::RequestParser rp(ctx);
const u32 buffer_size = rp.Pop<u32>();
auto& xml_buffer = rp.PopMappedBuffer();
@ -540,7 +540,7 @@ void NIM_U::SetTslXml(Kernel::HLERequestContext& ctx) {
}
void NIM_U::GetTslXmlSize(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x1F, 0, 0); // 0x1F0000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(3, 0);
rb.Push(RESULT_SUCCESS);
@ -550,7 +550,7 @@ void NIM_U::GetTslXmlSize(Kernel::HLERequestContext& ctx) {
}
void NIM_U::GetTslXml(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x20, 1, 2); // 0x200042
IPC::RequestParser rp(ctx);
const u32 buffer_capacity = rp.Pop<u32>();
auto& xml_buffer = rp.PopMappedBuffer();
@ -564,7 +564,7 @@ void NIM_U::GetTslXml(Kernel::HLERequestContext& ctx) {
}
void NIM_U::DeleteTslXml(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x21, 0, 0); // 0x210000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS);
@ -573,7 +573,7 @@ void NIM_U::DeleteTslXml(Kernel::HLERequestContext& ctx) {
}
void NIM_U::SetDtlXml(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x22, 1, 2); // 0x220042
IPC::RequestParser rp(ctx);
const u32 buffer_size = rp.Pop<u32>();
auto& xml_buffer = rp.PopMappedBuffer();
@ -587,7 +587,7 @@ void NIM_U::SetDtlXml(Kernel::HLERequestContext& ctx) {
}
void NIM_U::GetDtlXmlSize(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x23, 0, 0); // 0x230000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(3, 0);
rb.Push(RESULT_SUCCESS);
@ -597,7 +597,7 @@ void NIM_U::GetDtlXmlSize(Kernel::HLERequestContext& ctx) {
}
void NIM_U::GetDtlXml(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x24, 1, 2); // 0x240042
IPC::RequestParser rp(ctx);
const u32 buffer_capacity = rp.Pop<u32>();
auto& xml_buffer = rp.PopMappedBuffer();
@ -611,7 +611,7 @@ void NIM_U::GetDtlXml(Kernel::HLERequestContext& ctx) {
}
void NIM_U::UpdateAccountStatus(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x25, 0, 0); // 0x250000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(3, 0);
rb.Push(RESULT_SUCCESS);
@ -622,7 +622,7 @@ void NIM_U::UpdateAccountStatus(Kernel::HLERequestContext& ctx) {
}
void NIM_U::StartTitleDownload(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x26, 6, 0); // 0x260180
IPC::RequestParser rp(ctx);
const auto& download_config = rp.PopRaw<TitleDownloadConfig>();
@ -633,7 +633,7 @@ void NIM_U::StartTitleDownload(Kernel::HLERequestContext& ctx) {
}
void NIM_U::StopTitleDownload(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x27, 0, 0); // 0x270000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS);
@ -642,7 +642,7 @@ void NIM_U::StopTitleDownload(Kernel::HLERequestContext& ctx) {
}
void NIM_U::GetTitleDownloadProgress(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x28, 0, 0); // 0x280000
IPC::RequestParser rp(ctx);
TitleDownloadProgress progress{};
std::memset(&progress, 0, sizeof(progress));
@ -657,7 +657,7 @@ void NIM_U::GetTitleDownloadProgress(Kernel::HLERequestContext& ctx) {
}
void NIM_U::RegisterTask(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x29, 9, 6); // 0x290246
IPC::RequestParser rp(ctx);
const auto& download_config = rp.PopRaw<TitleDownloadConfig>();
const u32 unknown_1 = rp.Pop<u32>();
@ -686,7 +686,7 @@ void NIM_U::RegisterTask(Kernel::HLERequestContext& ctx) {
}
void NIM_U::IsSystemUpdateAvailable(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x2A, 0, 0); // 0x2A0000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(4, 0);
rb.Push(RESULT_SUCCESS);
@ -698,7 +698,7 @@ void NIM_U::IsSystemUpdateAvailable(Kernel::HLERequestContext& ctx) {
}
void NIM_U::Unknown2B(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x2B, 0, 0); // 0x2B0000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS);
@ -707,7 +707,7 @@ void NIM_U::Unknown2B(Kernel::HLERequestContext& ctx) {
}
void NIM_U::UpdateTickets(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x2C, 0, 0); // 0x2C0000
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(3, 0);
rb.Push(RESULT_SUCCESS);
@ -718,7 +718,7 @@ void NIM_U::UpdateTickets(Kernel::HLERequestContext& ctx) {
}
void NIM_U::DownloadTitleSeedAsync(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x2D, 3, 0); // 0x2D00C0
IPC::RequestParser rp(ctx);
const u64 title_id = rp.Pop<u64>();
const u16 country_code = rp.Pop<u16>();
@ -735,7 +735,7 @@ void NIM_U::DownloadTitleSeedAsync(Kernel::HLERequestContext& ctx) {
}
void NIM_U::DownloadMissingTitleSeedsAsync(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x2E, 0, 0); // 0x2E0000
IPC::RequestParser rp(ctx);
// Since this is a stub, signal the completion event so the caller won't get stuck waiting.
nim_async_completion_event->Signal();