diff options
Diffstat (limited to 'src/core/hle/service/nim/nim.cpp')
| -rw-r--r-- | src/core/hle/service/nim/nim.cpp | 685 |
1 files changed, 346 insertions, 339 deletions
diff --git a/src/core/hle/service/nim/nim.cpp b/src/core/hle/service/nim/nim.cpp index c48bf54646..e5f2d85dde 100644 --- a/src/core/hle/service/nim/nim.cpp +++ b/src/core/hle/service/nim/nim.cpp @@ -24,13 +24,22 @@ namespace Service::NIM { class IShopServiceAsync final : public ServiceFramework<IShopServiceAsync> { public: explicit IShopServiceAsync(Core::System& system_) - : ServiceFramework{system_, "IShopServiceAsync"} - , service_context{system_, "IShopServiceAsync"} { - completion_event = service_context.CreateEvent("IShopServiceAsync:Completion"); - } + : ServiceFramework{system_, "IShopServiceAsync"}, + service_context{system_, "IShopServiceAsync"} { + // clang-format off + static const FunctionInfo functions[] = { + {0, D<&IShopServiceAsync::Cancel>, "Cancel"}, + {1, D<&IShopServiceAsync::GetSize>, "GetSize"}, + {2, D<&IShopServiceAsync::Read>, "Read"}, + {3, D<&IShopServiceAsync::GetErrorCode>, "GetErrorCode"}, + {4, D<&IShopServiceAsync::Request>, "Request"}, + {5, D<&IShopServiceAsync::Prepare>, "Prepare"}, + }; + // clang-format on + + RegisterHandlers(functions); - std::optional<FunctionInfoBase> FindRequest(u32 key) override { - return HandlerTableGenerateWithFind(key, functions); + completion_event = service_context.CreateEvent("IShopServiceAsync:Completion"); } ~IShopServiceAsync() override { @@ -43,6 +52,15 @@ public: } private: + KernelHelpers::ServiceContext service_context; + Kernel::KEvent* completion_event; + + std::jthread worker; + std::atomic<u32> error_code{0}; + + std::mutex data_mutex; + std::vector<u8> download_data; + void CancelImpl() { worker.request_stop(); if (worker.joinable()) { @@ -118,30 +136,19 @@ private: } R_SUCCEED(); } - - static constexpr auto functions = CreateStaticMap( - FunctionInfo{0, D<&IShopServiceAsync::Cancel>, "Cancel"}, - FunctionInfo{1, D<&IShopServiceAsync::GetSize>, "GetSize"}, - FunctionInfo{2, D<&IShopServiceAsync::Read>, "Read"}, - FunctionInfo{3, D<&IShopServiceAsync::GetErrorCode>, "GetErrorCode"}, - FunctionInfo{4, D<&IShopServiceAsync::Request>, "Request"}, - FunctionInfo{5, D<&IShopServiceAsync::Prepare>, "Prepare"} - ); - KernelHelpers::ServiceContext service_context; - Kernel::KEvent* completion_event; - std::jthread worker; - std::atomic<u32> error_code{0}; - std::mutex data_mutex; - std::vector<u8> download_data; }; class IShopServiceAccessor final : public ServiceFramework<IShopServiceAccessor> { public: explicit IShopServiceAccessor(Core::System& system_) - : ServiceFramework{system_, "IShopServiceAccessor"} {} + : ServiceFramework{system_, "IShopServiceAccessor"} { + // clang-format off + static const FunctionInfo functions[] = { + {0, &IShopServiceAccessor::CreateAsyncInterface, "CreateAsyncInterface"}, + }; + // clang-format on - std::optional<FunctionInfoBase> FindRequest(u32 key) override { - return HandlerTableGenerateWithFind(key, functions); + RegisterHandlers(functions); } private: @@ -153,19 +160,19 @@ private: rb.PushCopyObjects(ctx, async_interface->GetEvent()); rb.PushIpcInterface<IShopServiceAsync>(ctx, std::move(async_interface)); } - - static constexpr auto functions = CreateStaticMap( - FunctionInfo{0, &IShopServiceAccessor::CreateAsyncInterface, "CreateAsyncInterface"} - ); }; class IShopServiceAccessServer final : public ServiceFramework<IShopServiceAccessServer> { public: explicit IShopServiceAccessServer(Core::System& system_) - : ServiceFramework{system_, "IShopServiceAccessServer"} {} + : ServiceFramework{system_, "IShopServiceAccessServer"} { + // clang-format off + static const FunctionInfo functions[] = { + {0, &IShopServiceAccessServer::CreateAccessorInterface, "CreateAccessorInterface"}, + }; + // clang-format on - std::optional<FunctionInfoBase> FindRequest(u32 key) override { - return HandlerTableGenerateWithFind(key, functions); + RegisterHandlers(functions); } private: @@ -175,252 +182,258 @@ private: rb.Push(ResultSuccess); rb.PushIpcInterface<IShopServiceAccessor>(ctx, system); } - - static constexpr auto functions = CreateStaticMap( - FunctionInfo{0, &IShopServiceAccessServer::CreateAccessorInterface, "CreateAccessorInterface"} - ); }; class NIM final : public ServiceFramework<NIM> { public: - explicit NIM(Core::System& system_) : ServiceFramework{system_, "nim"} {} - - static constexpr auto functions = CreateStaticMap( - FunctionInfo{0, nullptr, "CreateSystemUpdateTask"}, - FunctionInfo{1, nullptr, "DestroySystemUpdateTask"}, - FunctionInfo{2, nullptr, "ListSystemUpdateTask"}, - FunctionInfo{3, nullptr, "RequestSystemUpdateTaskRun"}, - FunctionInfo{4, nullptr, "GetSystemUpdateTaskInfo"}, - FunctionInfo{5, nullptr, "CommitSystemUpdateTask"}, - FunctionInfo{6, nullptr, "CreateNetworkInstallTask"}, - FunctionInfo{7, nullptr, "DestroyNetworkInstallTask"}, - FunctionInfo{8, nullptr, "ListNetworkInstallTask"}, - FunctionInfo{9, nullptr, "RequestNetworkInstallTaskRun"}, - FunctionInfo{10, nullptr, "GetNetworkInstallTaskInfo"}, - FunctionInfo{11, nullptr, "CommitNetworkInstallTask"}, - FunctionInfo{12, nullptr, "RequestLatestSystemUpdateMeta"}, - FunctionInfo{14, nullptr, "ListApplicationNetworkInstallTask"}, - FunctionInfo{15, nullptr, "ListNetworkInstallTaskContentMeta"}, - FunctionInfo{16, nullptr, "RequestLatestVersion"}, - FunctionInfo{17, nullptr, "SetNetworkInstallTaskAttribute"}, - FunctionInfo{18, nullptr, "AddNetworkInstallTaskContentMeta"}, - FunctionInfo{19, nullptr, "GetDownloadedSystemDataPath"}, - FunctionInfo{20, nullptr, "CalculateNetworkInstallTaskRequiredSize"}, - FunctionInfo{21, nullptr, "IsExFatDriverIncluded"}, - FunctionInfo{22, nullptr, "GetBackgroundDownloadStressTaskInfo"}, - FunctionInfo{23, nullptr, "RequestDeviceAuthenticationToken"}, - FunctionInfo{24, nullptr, "RequestGameCardRegistrationStatus"}, - FunctionInfo{25, nullptr, "RequestRegisterGameCard"}, - FunctionInfo{26, nullptr, "RequestRegisterNotificationToken"}, - FunctionInfo{27, nullptr, "RequestDownloadTaskList"}, - FunctionInfo{28, nullptr, "RequestApplicationControl"}, - FunctionInfo{29, nullptr, "RequestLatestApplicationControl"}, - FunctionInfo{30, nullptr, "RequestVersionList"}, - FunctionInfo{31, nullptr, "CreateApplyDeltaTask"}, - FunctionInfo{32, nullptr, "DestroyApplyDeltaTask"}, - FunctionInfo{33, nullptr, "ListApplicationApplyDeltaTask"}, - FunctionInfo{34, nullptr, "RequestApplyDeltaTaskRun"}, - FunctionInfo{35, nullptr, "GetApplyDeltaTaskInfo"}, - FunctionInfo{36, nullptr, "ListApplyDeltaTask"}, - FunctionInfo{37, nullptr, "CommitApplyDeltaTask"}, - FunctionInfo{38, nullptr, "CalculateApplyDeltaTaskRequiredSize"}, - FunctionInfo{39, nullptr, "PrepareShutdown"}, - FunctionInfo{40, nullptr, "ListApplyDeltaTask"}, - FunctionInfo{41, nullptr, "ClearNotEnoughSpaceStateOfApplyDeltaTask"}, - FunctionInfo{42, nullptr, "CreateApplyDeltaTaskFromDownloadTask"}, - FunctionInfo{43, nullptr, "GetBackgroundApplyDeltaStressTaskInfo"}, - FunctionInfo{44, nullptr, "GetApplyDeltaTaskRequiredStorage"}, - FunctionInfo{45, nullptr, "CalculateNetworkInstallTaskContentsSize"}, - FunctionInfo{46, nullptr, "PrepareShutdownForSystemUpdate"}, - FunctionInfo{47, nullptr, "FindMaxRequiredApplicationVersionOfTask"}, - FunctionInfo{48, nullptr, "CommitNetworkInstallTaskPartially"}, - FunctionInfo{49, nullptr, "ListNetworkInstallTaskCommittedContentMeta"}, - FunctionInfo{50, nullptr, "ListNetworkInstallTaskNotCommittedContentMeta"}, - FunctionInfo{51, nullptr, "FindMaxRequiredSystemVersionOfTask"}, - FunctionInfo{52, nullptr, "GetNetworkInstallTaskErrorContext"}, - FunctionInfo{53, nullptr, "CreateLocalCommunicationReceiveApplicationTask"}, - FunctionInfo{54, nullptr, "DestroyLocalCommunicationReceiveApplicationTask"}, - FunctionInfo{55, nullptr, "ListLocalCommunicationReceiveApplicationTask"}, - FunctionInfo{56, nullptr, "RequestLocalCommunicationReceiveApplicationTaskRun"}, - FunctionInfo{57, nullptr, "GetLocalCommunicationReceiveApplicationTaskInfo"}, - FunctionInfo{58, nullptr, "CommitLocalCommunicationReceiveApplicationTask"}, - FunctionInfo{59, nullptr, "ListLocalCommunicationReceiveApplicationTaskContentMeta"}, - FunctionInfo{60, nullptr, "CreateLocalCommunicationSendApplicationTask"}, - FunctionInfo{61, nullptr, "RequestLocalCommunicationSendApplicationTaskRun"}, - FunctionInfo{62, nullptr, "GetLocalCommunicationReceiveApplicationTaskErrorContext"}, - FunctionInfo{63, nullptr, "GetLocalCommunicationSendApplicationTaskInfo"}, - FunctionInfo{64, nullptr, "DestroyLocalCommunicationSendApplicationTask"}, - FunctionInfo{65, nullptr, "GetLocalCommunicationSendApplicationTaskErrorContext"}, - FunctionInfo{66, nullptr, "CalculateLocalCommunicationReceiveApplicationTaskRequiredSize"}, - FunctionInfo{67, nullptr, "ListApplicationLocalCommunicationReceiveApplicationTask"}, - FunctionInfo{68, nullptr, "ListApplicationLocalCommunicationSendApplicationTask"}, - FunctionInfo{69, nullptr, "CreateLocalCommunicationReceiveSystemUpdateTask"}, - FunctionInfo{70, nullptr, "DestroyLocalCommunicationReceiveSystemUpdateTask"}, - FunctionInfo{71, nullptr, "ListLocalCommunicationReceiveSystemUpdateTask"}, - FunctionInfo{72, nullptr, "RequestLocalCommunicationReceiveSystemUpdateTaskRun"}, - FunctionInfo{73, nullptr, "GetLocalCommunicationReceiveSystemUpdateTaskInfo"}, - FunctionInfo{74, nullptr, "CommitLocalCommunicationReceiveSystemUpdateTask"}, - FunctionInfo{75, nullptr, "GetLocalCommunicationReceiveSystemUpdateTaskErrorContext"}, - FunctionInfo{76, nullptr, "CreateLocalCommunicationSendSystemUpdateTask"}, - FunctionInfo{77, nullptr, "RequestLocalCommunicationSendSystemUpdateTaskRun"}, - FunctionInfo{78, nullptr, "GetLocalCommunicationSendSystemUpdateTaskInfo"}, - FunctionInfo{79, nullptr, "DestroyLocalCommunicationSendSystemUpdateTask"}, - FunctionInfo{80, nullptr, "GetLocalCommunicationSendSystemUpdateTaskErrorContext"}, - FunctionInfo{81, nullptr, "ListLocalCommunicationSendSystemUpdateTask"}, - FunctionInfo{82, nullptr, "GetReceivedSystemDataPath"}, - FunctionInfo{83, nullptr, "CalculateApplyDeltaTaskOccupiedSize"}, - FunctionInfo{84, nullptr, "ReloadErrorSimulation"}, - FunctionInfo{85, nullptr, "ListNetworkInstallTaskContentMetaFromInstallMeta"}, - FunctionInfo{86, nullptr, "ListNetworkInstallTaskOccupiedSize"}, - FunctionInfo{87, nullptr, "RequestQueryAvailableELicenses"}, - FunctionInfo{88, nullptr, "RequestAssignELicenses"}, - FunctionInfo{89, nullptr, "RequestExtendELicenses"}, - FunctionInfo{90, nullptr, "RequestSyncELicenses"}, - FunctionInfo{91, nullptr, "Unknown91", MakeVersionGate({6,0,0}, {14,1,2})}, - FunctionInfo{92, nullptr, "Unknown92", MakeVersionGate({21,0,0})}, - FunctionInfo{93, nullptr, "RequestReportActiveELicenses"}, - FunctionInfo{94, nullptr, "RequestReportActiveELicensesPassively"}, - FunctionInfo{95, nullptr, "RequestRegisterDynamicRightsNotificationToken"}, - FunctionInfo{96, nullptr, "RequestAssignAllDeviceLinkedELicenses"}, - FunctionInfo{97, nullptr, "RequestRevokeAllELicenses"}, - FunctionInfo{98, nullptr, "RequestPrefetchForDynamicRights"}, - FunctionInfo{99, nullptr, "CreateNetworkInstallTask"}, - FunctionInfo{100, nullptr, "ListNetworkInstallTaskRightsIds"}, - FunctionInfo{101, nullptr, "RequestDownloadETickets"}, - FunctionInfo{102, nullptr, "RequestQueryDownloadableContents"}, - FunctionInfo{103, nullptr, "DeleteNetworkInstallTaskContentMeta"}, - FunctionInfo{104, nullptr, "RequestIssueEdgeTokenForDebug"}, - FunctionInfo{105, nullptr, "RequestQueryAvailableELicenses2"}, - FunctionInfo{106, nullptr, "RequestAssignELicenses2"}, - FunctionInfo{107, nullptr, "GetNetworkInstallTaskStateCounter"}, - FunctionInfo{108, nullptr, "InvalidateDynamicRightsNaIdTokenCacheForDebug"}, - FunctionInfo{109, nullptr, "ListNetworkInstallTaskPartialInstallContentMeta"}, - FunctionInfo{110, nullptr, "ListNetworkInstallTaskRightsIdsFromIndex"}, - FunctionInfo{111, nullptr, "AddNetworkInstallTaskContentMetaForUser"}, - FunctionInfo{112, nullptr, "RequestAssignELicensesAndDownloadETickets"}, - FunctionInfo{113, nullptr, "RequestQueryAvailableCommonELicenses"}, - FunctionInfo{114, nullptr, "SetNetworkInstallTaskExtendedAttribute"}, - FunctionInfo{115, nullptr, "GetNetworkInstallTaskExtendedAttribute"}, - FunctionInfo{116, nullptr, "GetAllocatorInfo"}, - FunctionInfo{117, nullptr, "RequestQueryDownloadableContentsByApplicationId"}, - FunctionInfo{118, nullptr, "MarkNoDownloadRightsErrorResolved"}, - FunctionInfo{119, nullptr, "GetApplyDeltaTaskAllAppliedContentMeta"}, - FunctionInfo{120, nullptr, "PrioritizeNetworkInstallTask"}, - FunctionInfo{121, nullptr, "RequestQueryAvailableCommonELicenses2"}, - FunctionInfo{122, nullptr, "RequestAssignCommonELicenses"}, - FunctionInfo{123, nullptr, "RequestAssignCommonELicenses2"}, - FunctionInfo{124, nullptr, "IsNetworkInstallTaskFrontOfQueue"}, - FunctionInfo{125, nullptr, "PrioritizeApplyDeltaTask"}, - FunctionInfo{126, nullptr, "RerouteDownloadingPatch"}, - FunctionInfo{127, nullptr, "UnmarkNoDownloadRightsErrorResolved"}, - FunctionInfo{128, nullptr, "RequestContentsSize"}, - FunctionInfo{129, nullptr, "RequestContentsAuthorizationToken"}, - FunctionInfo{130, nullptr, "RequestCdnVendorDiscovery"}, - FunctionInfo{131, nullptr, "RefreshDebugAvailability"}, - FunctionInfo{132, nullptr, "ClearResponseSimulationEntry"}, - FunctionInfo{133, nullptr, "RegisterResponseSimulationEntry"}, - FunctionInfo{134, nullptr, "GetProcessedCdnVendors"}, - FunctionInfo{135, nullptr, "RefreshRuntimeBehaviorsForDebug"}, - FunctionInfo{136, nullptr, "RequestOnlineSubscriptionFreeTrialAvailability"}, - FunctionInfo{137, nullptr, "GetNetworkInstallTaskContentMetaCount"}, - FunctionInfo{138, nullptr, "RequestRevokeELicenses"}, - FunctionInfo{139, nullptr, "EnableNetworkConnectionToUseApplicationCore"}, - FunctionInfo{140, nullptr, "DisableNetworkConnectionToUseApplicationCore"}, - FunctionInfo{141, nullptr, "IsNetworkConnectionEnabledToUseApplicationCore"}, - FunctionInfo{142, nullptr, "RequestCheckSafeSystemVersion"}, - FunctionInfo{143, nullptr, "RequestApplicationIcon"}, - FunctionInfo{144, nullptr, "RequestDownloadIdbeIconFile"}, - FunctionInfo{147, nullptr, "Unknown147", MakeVersionGate({18,0,0})}, - FunctionInfo{148, nullptr, "Unknown148", MakeVersionGate({18,0,0})}, - FunctionInfo{150, nullptr, "Unknown150", MakeVersionGate({19,0,0})}, - FunctionInfo{151, nullptr, "Unknown151", MakeVersionGate({20,0,0})}, - FunctionInfo{152, nullptr, "Unknown152", MakeVersionGate({20,0,0})}, - FunctionInfo{153, nullptr, "Unknown153", MakeVersionGate({20,0,0})}, - FunctionInfo{154, nullptr, "Unknown154", MakeVersionGate({20,0,0})}, - FunctionInfo{155, nullptr, "Unknown155", MakeVersionGate({20,0,0})}, - FunctionInfo{156, nullptr, "Unknown156", MakeVersionGate({20,0,0})}, - FunctionInfo{157, nullptr, "Unknown157", MakeVersionGate({20,0,0})}, - FunctionInfo{158, nullptr, "Unknown158", MakeVersionGate({20,0,0})}, - FunctionInfo{159, nullptr, "Unknown159", MakeVersionGate({20,0,0})}, - FunctionInfo{160, nullptr, "Unknown160", MakeVersionGate({20,0,0})}, - FunctionInfo{161, nullptr, "Unknown161", MakeVersionGate({20,0,0})}, - FunctionInfo{162, nullptr, "Unknown162", MakeVersionGate({20,0,0})}, - FunctionInfo{163, nullptr, "Unknown163", MakeVersionGate({20,0,0})}, - FunctionInfo{164, nullptr, "Unknown164", MakeVersionGate({20,0,0})}, - FunctionInfo{165, nullptr, "Unknown165", MakeVersionGate({20,0,0})}, - FunctionInfo{166, nullptr, "Unknown166", MakeVersionGate({20,0,0})}, - FunctionInfo{167, nullptr, "Unknown167", MakeVersionGate({20,0,0})}, - FunctionInfo{168, nullptr, "Unknown168", MakeVersionGate({20,0,0})}, - FunctionInfo{169, nullptr, "Unknown169", MakeVersionGate({20,0,0})}, - FunctionInfo{170, nullptr, "Unknown170", MakeVersionGate({20,0,0})}, - FunctionInfo{171, nullptr, "Unknown171", MakeVersionGate({20,0,0})}, - FunctionInfo{172, nullptr, "Unknown172", MakeVersionGate({20,0,0})}, - FunctionInfo{173, nullptr, "Unknown173", MakeVersionGate({20,0,0})}, - FunctionInfo{174, nullptr, "Unknown174", MakeVersionGate({20,0,0})}, - FunctionInfo{175, nullptr, "Unknown175", MakeVersionGate({20,0,0})}, - FunctionInfo{176, nullptr, "Unknown176", MakeVersionGate({20,0,0})}, - FunctionInfo{177, nullptr, "Unknown177", MakeVersionGate({20,0,0})}, - FunctionInfo{2000, nullptr, "Unknown2000", MakeVersionGate({20,0,0})}, - FunctionInfo{2001, nullptr, "Unknown2001", MakeVersionGate({20,0,0})}, - FunctionInfo{2002, nullptr, "Unknown2002", MakeVersionGate({20,0,0})}, - FunctionInfo{2003, nullptr, "Unknown2003", MakeVersionGate({20,0,0})}, - FunctionInfo{2004, nullptr, "Unknown2004", MakeVersionGate({20,0,0})}, - FunctionInfo{2007, nullptr, "Unknown2007", MakeVersionGate({20,0,0})}, - FunctionInfo{2011, nullptr, "Unknown2011", MakeVersionGate({20,0,0})}, - FunctionInfo{2012, nullptr, "Unknown2012", MakeVersionGate({20,0,0})}, - FunctionInfo{2013, nullptr, "Unknown2013", MakeVersionGate({20,0,0})}, - FunctionInfo{2014, nullptr, "Unknown2014", MakeVersionGate({20,0,0})}, - FunctionInfo{2015, nullptr, "Unknown2015", MakeVersionGate({20,0,0})}, - FunctionInfo{2016, nullptr, "Unknown2016", MakeVersionGate({20,0,0})}, - FunctionInfo{2017, nullptr, "Unknown2017", MakeVersionGate({20,0,0})}, - FunctionInfo{2018, nullptr, "Unknown2018", MakeVersionGate({20,0,0})}, - FunctionInfo{2019, nullptr, "Unknown2019", MakeVersionGate({20,0,0})}, - FunctionInfo{2020, nullptr, "Unknown2020", MakeVersionGate({20,0,0})}, - FunctionInfo{2021, nullptr, "Unknown2021", MakeVersionGate({20,0,0})}, - FunctionInfo{2022, nullptr, "Unknown2022", MakeVersionGate({20,0,0})}, - FunctionInfo{2023, nullptr, "Unknown2023", MakeVersionGate({20,0,0})}, - FunctionInfo{2024, nullptr, "Unknown2024", MakeVersionGate({20,0,0})}, - FunctionInfo{2025, nullptr, "Unknown2025", MakeVersionGate({20,0,0})}, - FunctionInfo{2026, nullptr, "Unknown2026", MakeVersionGate({20,0,0})}, - FunctionInfo{2027, nullptr, "Unknown2027", MakeVersionGate({20,0,0})}, - FunctionInfo{2028, nullptr, "Unknown2028", MakeVersionGate({20,0,0})}, - FunctionInfo{2029, nullptr, "Unknown2029", MakeVersionGate({20,0,0})}, - FunctionInfo{2030, nullptr, "Unknown2030", MakeVersionGate({20,0,0})}, - FunctionInfo{2031, nullptr, "Unknown2031", MakeVersionGate({20,0,0})}, - FunctionInfo{2032, nullptr, "Unknown2032", MakeVersionGate({20,0,0})}, - FunctionInfo{2033, nullptr, "Unknown2033", MakeVersionGate({20,0,0})}, - FunctionInfo{2034, nullptr, "Unknown2034", MakeVersionGate({20,0,0})}, - FunctionInfo{2035, nullptr, "Unknown2035", MakeVersionGate({20,0,0})}, - FunctionInfo{2036, nullptr, "Unknown2036", MakeVersionGate({20,0,0})}, - FunctionInfo{2037, nullptr, "Unknown2037", MakeVersionGate({20,0,0})}, - FunctionInfo{2038, nullptr, "Unknown2038", MakeVersionGate({20,0,0})}, - FunctionInfo{2039, nullptr, "Unknown2039", MakeVersionGate({20,0,0})}, - FunctionInfo{2040, nullptr, "Unknown2040", MakeVersionGate({20,0,0})}, - FunctionInfo{2041, nullptr, "Unknown2041", MakeVersionGate({20,0,0})}, - FunctionInfo{2042, nullptr, "Unknown2042", MakeVersionGate({20,0,0})}, - FunctionInfo{2043, nullptr, "Unknown2043", MakeVersionGate({20,0,0})}, - FunctionInfo{2044, nullptr, "Unknown2044", MakeVersionGate({20,0,0})}, - FunctionInfo{2045, nullptr, "Unknown2045", MakeVersionGate({20,0,0})}, - FunctionInfo{2046, nullptr, "Unknown2046", MakeVersionGate({20,0,0})}, - FunctionInfo{2047, nullptr, "Unknown2047", MakeVersionGate({20,0,0})}, - FunctionInfo{2048, nullptr, "Unknown2048", MakeVersionGate({20,0,0})}, - FunctionInfo{2049, nullptr, "Unknown2049", MakeVersionGate({20,0,0})}, - FunctionInfo{2050, nullptr, "Unknown2050", MakeVersionGate({20,0,0})}, - FunctionInfo{2051, nullptr, "Unknown2051", MakeVersionGate({20,0,0})}, - FunctionInfo{3000, nullptr, "RequestLatestApplicationIcon", MakeVersionGate({17,0,0})}, - FunctionInfo{3001, nullptr, "RequestDownloadIdbeLatestIconFile", MakeVersionGate({17,0,0})} - ); - std::optional<FunctionInfoBase> FindRequest(u32 key) override { - return HandlerTableGenerateWithFind(key, functions); + explicit NIM(Core::System& system_) : ServiceFramework{system_, "nim"} { + // clang-format off + static const FunctionInfo functions[] = { + {0, nullptr, "CreateSystemUpdateTask"}, + {1, nullptr, "DestroySystemUpdateTask"}, + {2, nullptr, "ListSystemUpdateTask"}, + {3, nullptr, "RequestSystemUpdateTaskRun"}, + {4, nullptr, "GetSystemUpdateTaskInfo"}, + {5, nullptr, "CommitSystemUpdateTask"}, + {6, nullptr, "CreateNetworkInstallTask"}, + {7, nullptr, "DestroyNetworkInstallTask"}, + {8, nullptr, "ListNetworkInstallTask"}, + {9, nullptr, "RequestNetworkInstallTaskRun"}, + {10, nullptr, "GetNetworkInstallTaskInfo"}, + {11, nullptr, "CommitNetworkInstallTask"}, + {12, nullptr, "RequestLatestSystemUpdateMeta"}, + {14, nullptr, "ListApplicationNetworkInstallTask"}, + {15, nullptr, "ListNetworkInstallTaskContentMeta"}, + {16, nullptr, "RequestLatestVersion"}, + {17, nullptr, "SetNetworkInstallTaskAttribute"}, + {18, nullptr, "AddNetworkInstallTaskContentMeta"}, + {19, nullptr, "GetDownloadedSystemDataPath"}, + {20, nullptr, "CalculateNetworkInstallTaskRequiredSize"}, + {21, nullptr, "IsExFatDriverIncluded"}, + {22, nullptr, "GetBackgroundDownloadStressTaskInfo"}, + {23, nullptr, "RequestDeviceAuthenticationToken"}, + {24, nullptr, "RequestGameCardRegistrationStatus"}, + {25, nullptr, "RequestRegisterGameCard"}, + {26, nullptr, "RequestRegisterNotificationToken"}, + {27, nullptr, "RequestDownloadTaskList"}, + {28, nullptr, "RequestApplicationControl"}, + {29, nullptr, "RequestLatestApplicationControl"}, + {30, nullptr, "RequestVersionList"}, + {31, nullptr, "CreateApplyDeltaTask"}, + {32, nullptr, "DestroyApplyDeltaTask"}, + {33, nullptr, "ListApplicationApplyDeltaTask"}, + {34, nullptr, "RequestApplyDeltaTaskRun"}, + {35, nullptr, "GetApplyDeltaTaskInfo"}, + {36, nullptr, "ListApplyDeltaTask"}, + {37, nullptr, "CommitApplyDeltaTask"}, + {38, nullptr, "CalculateApplyDeltaTaskRequiredSize"}, + {39, nullptr, "PrepareShutdown"}, + {40, nullptr, "ListApplyDeltaTask"}, + {41, nullptr, "ClearNotEnoughSpaceStateOfApplyDeltaTask"}, + {42, nullptr, "CreateApplyDeltaTaskFromDownloadTask"}, + {43, nullptr, "GetBackgroundApplyDeltaStressTaskInfo"}, + {44, nullptr, "GetApplyDeltaTaskRequiredStorage"}, + {45, nullptr, "CalculateNetworkInstallTaskContentsSize"}, + {46, nullptr, "PrepareShutdownForSystemUpdate"}, + {47, nullptr, "FindMaxRequiredApplicationVersionOfTask"}, + {48, nullptr, "CommitNetworkInstallTaskPartially"}, + {49, nullptr, "ListNetworkInstallTaskCommittedContentMeta"}, + {50, nullptr, "ListNetworkInstallTaskNotCommittedContentMeta"}, + {51, nullptr, "FindMaxRequiredSystemVersionOfTask"}, + {52, nullptr, "GetNetworkInstallTaskErrorContext"}, + {53, nullptr, "CreateLocalCommunicationReceiveApplicationTask"}, + {54, nullptr, "DestroyLocalCommunicationReceiveApplicationTask"}, + {55, nullptr, "ListLocalCommunicationReceiveApplicationTask"}, + {56, nullptr, "RequestLocalCommunicationReceiveApplicationTaskRun"}, + {57, nullptr, "GetLocalCommunicationReceiveApplicationTaskInfo"}, + {58, nullptr, "CommitLocalCommunicationReceiveApplicationTask"}, + {59, nullptr, "ListLocalCommunicationReceiveApplicationTaskContentMeta"}, + {60, nullptr, "CreateLocalCommunicationSendApplicationTask"}, + {61, nullptr, "RequestLocalCommunicationSendApplicationTaskRun"}, + {62, nullptr, "GetLocalCommunicationReceiveApplicationTaskErrorContext"}, + {63, nullptr, "GetLocalCommunicationSendApplicationTaskInfo"}, + {64, nullptr, "DestroyLocalCommunicationSendApplicationTask"}, + {65, nullptr, "GetLocalCommunicationSendApplicationTaskErrorContext"}, + {66, nullptr, "CalculateLocalCommunicationReceiveApplicationTaskRequiredSize"}, + {67, nullptr, "ListApplicationLocalCommunicationReceiveApplicationTask"}, + {68, nullptr, "ListApplicationLocalCommunicationSendApplicationTask"}, + {69, nullptr, "CreateLocalCommunicationReceiveSystemUpdateTask"}, + {70, nullptr, "DestroyLocalCommunicationReceiveSystemUpdateTask"}, + {71, nullptr, "ListLocalCommunicationReceiveSystemUpdateTask"}, + {72, nullptr, "RequestLocalCommunicationReceiveSystemUpdateTaskRun"}, + {73, nullptr, "GetLocalCommunicationReceiveSystemUpdateTaskInfo"}, + {74, nullptr, "CommitLocalCommunicationReceiveSystemUpdateTask"}, + {75, nullptr, "GetLocalCommunicationReceiveSystemUpdateTaskErrorContext"}, + {76, nullptr, "CreateLocalCommunicationSendSystemUpdateTask"}, + {77, nullptr, "RequestLocalCommunicationSendSystemUpdateTaskRun"}, + {78, nullptr, "GetLocalCommunicationSendSystemUpdateTaskInfo"}, + {79, nullptr, "DestroyLocalCommunicationSendSystemUpdateTask"}, + {80, nullptr, "GetLocalCommunicationSendSystemUpdateTaskErrorContext"}, + {81, nullptr, "ListLocalCommunicationSendSystemUpdateTask"}, + {82, nullptr, "GetReceivedSystemDataPath"}, + {83, nullptr, "CalculateApplyDeltaTaskOccupiedSize"}, + {84, nullptr, "ReloadErrorSimulation"}, + {85, nullptr, "ListNetworkInstallTaskContentMetaFromInstallMeta"}, + {86, nullptr, "ListNetworkInstallTaskOccupiedSize"}, + {87, nullptr, "RequestQueryAvailableELicenses"}, + {88, nullptr, "RequestAssignELicenses"}, + {89, nullptr, "RequestExtendELicenses"}, + {90, nullptr, "RequestSyncELicenses"}, + {91, nullptr, "Unknown91"}, //6.0.0-14.1.2 + {92, nullptr, "Unknown92"}, //21.0.0+ + {93, nullptr, "RequestReportActiveELicenses"}, + {94, nullptr, "RequestReportActiveELicensesPassively"}, + {95, nullptr, "RequestRegisterDynamicRightsNotificationToken"}, + {96, nullptr, "RequestAssignAllDeviceLinkedELicenses"}, + {97, nullptr, "RequestRevokeAllELicenses"}, + {98, nullptr, "RequestPrefetchForDynamicRights"}, + {99, nullptr, "CreateNetworkInstallTask"}, + {100, nullptr, "ListNetworkInstallTaskRightsIds"}, + {101, nullptr, "RequestDownloadETickets"}, + {102, nullptr, "RequestQueryDownloadableContents"}, + {103, nullptr, "DeleteNetworkInstallTaskContentMeta"}, + {104, nullptr, "RequestIssueEdgeTokenForDebug"}, + {105, nullptr, "RequestQueryAvailableELicenses2"}, + {106, nullptr, "RequestAssignELicenses2"}, + {107, nullptr, "GetNetworkInstallTaskStateCounter"}, + {108, nullptr, "InvalidateDynamicRightsNaIdTokenCacheForDebug"}, + {109, nullptr, "ListNetworkInstallTaskPartialInstallContentMeta"}, + {110, nullptr, "ListNetworkInstallTaskRightsIdsFromIndex"}, + {111, nullptr, "AddNetworkInstallTaskContentMetaForUser"}, + {112, nullptr, "RequestAssignELicensesAndDownloadETickets"}, + {113, nullptr, "RequestQueryAvailableCommonELicenses"}, + {114, nullptr, "SetNetworkInstallTaskExtendedAttribute"}, + {115, nullptr, "GetNetworkInstallTaskExtendedAttribute"}, + {116, nullptr, "GetAllocatorInfo"}, + {117, nullptr, "RequestQueryDownloadableContentsByApplicationId"}, + {118, nullptr, "MarkNoDownloadRightsErrorResolved"}, + {119, nullptr, "GetApplyDeltaTaskAllAppliedContentMeta"}, + {120, nullptr, "PrioritizeNetworkInstallTask"}, + {121, nullptr, "RequestQueryAvailableCommonELicenses2"}, + {122, nullptr, "RequestAssignCommonELicenses"}, + {123, nullptr, "RequestAssignCommonELicenses2"}, + {124, nullptr, "IsNetworkInstallTaskFrontOfQueue"}, + {125, nullptr, "PrioritizeApplyDeltaTask"}, + {126, nullptr, "RerouteDownloadingPatch"}, + {127, nullptr, "UnmarkNoDownloadRightsErrorResolved"}, + {128, nullptr, "RequestContentsSize"}, + {129, nullptr, "RequestContentsAuthorizationToken"}, + {130, nullptr, "RequestCdnVendorDiscovery"}, + {131, nullptr, "RefreshDebugAvailability"}, + {132, nullptr, "ClearResponseSimulationEntry"}, + {133, nullptr, "RegisterResponseSimulationEntry"}, + {134, nullptr, "GetProcessedCdnVendors"}, + {135, nullptr, "RefreshRuntimeBehaviorsForDebug"}, + {136, nullptr, "RequestOnlineSubscriptionFreeTrialAvailability"}, + {137, nullptr, "GetNetworkInstallTaskContentMetaCount"}, + {138, nullptr, "RequestRevokeELicenses"}, + {139, nullptr, "EnableNetworkConnectionToUseApplicationCore"}, + {140, nullptr, "DisableNetworkConnectionToUseApplicationCore"}, + {141, nullptr, "IsNetworkConnectionEnabledToUseApplicationCore"}, + {142, nullptr, "RequestCheckSafeSystemVersion"}, + {143, nullptr, "RequestApplicationIcon"}, + {144, nullptr, "RequestDownloadIdbeIconFile"}, + {147, nullptr, "Unknown147"}, //18.0.0+ + {148, nullptr, "Unknown148"}, //18.0.0+ + {150, nullptr, "Unknown150"}, //19.0.0+ + {151, nullptr, "Unknown151"}, //20.0.0+ + {152, nullptr, "Unknown152"}, //20.0.0+ + {153, nullptr, "Unknown153"}, //20.0.0+ + {154, nullptr, "Unknown154"}, //20.0.0+ + {155, nullptr, "Unknown155"}, //20.0.0+ + {156, nullptr, "Unknown156"}, //20.0.0+ + {157, nullptr, "Unknown157"}, //20.0.0+ + {158, nullptr, "Unknown158"}, //20.0.0+ + {159, nullptr, "Unknown159"}, //20.0.0+ + {160, nullptr, "Unknown160"}, //20.0.0+ + {161, nullptr, "Unknown161"}, //20.0.0+ + {162, nullptr, "Unknown162"}, //20.0.0+ + {163, nullptr, "Unknown163"}, //20.0.0+ + {164, nullptr, "Unknown164"}, //20.0.0+ + {165, nullptr, "Unknown165"}, //20.0.0+ + {166, nullptr, "Unknown166"}, //20.0.0+ + {167, nullptr, "Unknown167"}, //20.0.0+ + {168, nullptr, "Unknown168"}, //20.0.0+ + {169, nullptr, "Unknown169"}, //20.0.0+ + {170, nullptr, "Unknown170"}, //20.0.0+ + {171, nullptr, "Unknown171"}, //20.0.0+ + {172, nullptr, "Unknown172"}, //20.0.0+ + {173, nullptr, "Unknown173"}, //20.0.0+ + {174, nullptr, "Unknown174"}, //20.0.0+ + {175, nullptr, "Unknown175"}, //20.0.0+ + {176, nullptr, "Unknown176"}, //20.0.0+ + {177, nullptr, "Unknown177"}, //20.0.0+ + {2000, nullptr, "Unknown2000"}, //20.0.0+ + {2001, nullptr, "Unknown2001"}, //20.0.0+ + {2002, nullptr, "Unknown2002"}, //20.0.0+ + {2003, nullptr, "Unknown2003"}, //20.0.0+ + {2004, nullptr, "Unknown2004"}, //20.0.0+ + {2007, nullptr, "Unknown2007"}, //20.0.0+ + {2011, nullptr, "Unknown2011"}, //20.0.0+ + {2012, nullptr, "Unknown2012"}, //20.0.0+ + {2013, nullptr, "Unknown2013"}, //20.0.0+ + {2014, nullptr, "Unknown2014"}, //20.0.0+ + {2015, nullptr, "Unknown2015"}, //20.0.0+ + {2016, nullptr, "Unknown2016"}, //20.0.0+ + {2017, nullptr, "Unknown2017"}, //20.0.0+ + {2018, nullptr, "Unknown2018"}, //20.0.0+ + {2019, nullptr, "Unknown2019"}, //20.0.0+ + {2020, nullptr, "Unknown2020"}, //20.0.0+ + {2021, nullptr, "Unknown2021"}, //20.0.0+ + {2022, nullptr, "Unknown2022"}, //20.0.0+ + {2023, nullptr, "Unknown2023"}, //20.0.0+ + {2024, nullptr, "Unknown2024"}, //20.0.0+ + {2025, nullptr, "Unknown2025"}, //20.0.0+ + {2026, nullptr, "Unknown2026"}, //20.0.0+ + {2027, nullptr, "Unknown2027"}, //20.0.0+ + {2028, nullptr, "Unknown2028"}, //20.0.0+ + {2029, nullptr, "Unknown2029"}, //20.0.0+ + {2030, nullptr, "Unknown2030"}, //20.0.0+ + {2031, nullptr, "Unknown2031"}, //20.0.0+ + {2032, nullptr, "Unknown2032"}, //20.0.0+ + {2033, nullptr, "Unknown2033"}, //20.0.0+ + {2034, nullptr, "Unknown2034"}, //20.0.0+ + {2035, nullptr, "Unknown2035"}, //20.0.0+ + {2036, nullptr, "Unknown2036"}, //20.0.0+ + {2037, nullptr, "Unknown2037"}, //20.0.0+ + {2038, nullptr, "Unknown2038"}, //20.0.0+ + {2039, nullptr, "Unknown2039"}, //20.0.0+ + {2040, nullptr, "Unknown2040"}, //20.0.0+ + {2041, nullptr, "Unknown2041"}, //20.0.0+ + {2042, nullptr, "Unknown2042"}, //20.0.0+ + {2043, nullptr, "Unknown2043"}, //20.0.0+ + {2044, nullptr, "Unknown2044"}, //20.0.0+ + {2045, nullptr, "Unknown2045"}, //20.0.0+ + {2046, nullptr, "Unknown2046"}, //20.0.0+ + {2047, nullptr, "Unknown2047"}, //20.0.0+ + {2048, nullptr, "Unknown2048"}, //20.0.0+ + {2049, nullptr, "Unknown2049"}, //20.0.0+ + {2050, nullptr, "Unknown2050"}, //20.0.0+ + {2051, nullptr, "Unknown2051"}, //20.0.0+ + {3000, nullptr, "RequestLatestApplicationIcon"}, //17.0.0+ + {3001, nullptr, "RequestDownloadIdbeLatestIconFile"}, //17.0.0+ + }; + // clang-format on + + RegisterHandlers(functions); } }; class NIM_ECA final : public ServiceFramework<NIM_ECA> { public: - explicit NIM_ECA(Core::System& system_) : ServiceFramework{system_, "nim:eca"} {} + explicit NIM_ECA(Core::System& system_) : ServiceFramework{system_, "nim:eca"} { + // clang-format off + static const FunctionInfo functions[] = { + {0, &NIM_ECA::CreateServerInterface, "CreateServerInterface"}, + {1, nullptr, "RefreshDebugAvailability"}, + {2, nullptr, "ClearDebugResponse"}, + {3, nullptr, "RegisterDebugResponse"}, + {4, &NIM_ECA::IsLargeResourceAvailable, "IsLargeResourceAvailable"}, + {5, &NIM_ECA::CreateServerInterface2, "CreateServerInterface2"} // 17.0.0+ + }; + // clang-format on - std::optional<FunctionInfoBase> FindRequest(u32 key) override { - return HandlerTableGenerateWithFind(key, functions); + RegisterHandlers(functions); } private: @@ -450,53 +463,45 @@ private: rb.Push(ResultSuccess); rb.PushIpcInterface<IShopServiceAccessServer>(ctx, system); } - - static constexpr auto functions = CreateStaticMap( - FunctionInfo{0, &NIM_ECA::CreateServerInterface, "CreateServerInterface"}, - FunctionInfo{1, nullptr, "RefreshDebugAvailability"}, - FunctionInfo{2, nullptr, "ClearDebugResponse"}, - FunctionInfo{3, nullptr, "RegisterDebugResponse"}, - FunctionInfo{4, &NIM_ECA::IsLargeResourceAvailable, "IsLargeResourceAvailable"}, - FunctionInfo{5, &NIM_ECA::CreateServerInterface2, "CreateServerInterface2", MakeVersionGate({17,0,0})} - ); }; class NIM_SHP final : public ServiceFramework<NIM_SHP> { public: - explicit NIM_SHP(Core::System& system_) : ServiceFramework{system_, "nim:shp"} {} - - static constexpr auto functions = CreateStaticMap( - FunctionInfo{0, nullptr, "RequestDeviceAuthenticationToken"}, - FunctionInfo{1, nullptr, "RequestCachedDeviceAuthenticationToken"}, - FunctionInfo{2, nullptr, "RequestEdgeToken"}, - FunctionInfo{3, nullptr, "RequestCachedEdgeToken"}, - FunctionInfo{100, nullptr, "RequestRegisterDeviceAccount"}, - FunctionInfo{101, nullptr, "RequestUnregisterDeviceAccount"}, - FunctionInfo{102, nullptr, "RequestDeviceAccountStatus"}, - FunctionInfo{103, nullptr, "GetDeviceAccountInfo"}, - FunctionInfo{104, nullptr, "RequestDeviceRegistrationInfo"}, - FunctionInfo{105, nullptr, "RequestTransferDeviceAccount"}, - FunctionInfo{106, nullptr, "RequestSyncRegistration"}, - FunctionInfo{107, nullptr, "IsOwnDeviceId"}, - FunctionInfo{200, nullptr, "RequestRegisterNotificationToken"}, - FunctionInfo{300, nullptr, "RequestUnlinkDevice"}, - FunctionInfo{301, nullptr, "RequestUnlinkDeviceIntegrated"}, - FunctionInfo{302, nullptr, "RequestLinkDevice"}, - FunctionInfo{303, nullptr, "HasDeviceLink"}, - FunctionInfo{304, nullptr, "RequestUnlinkDeviceAll"}, - FunctionInfo{305, nullptr, "RequestCreateVirtualAccount"}, - FunctionInfo{306, nullptr, "RequestDeviceLinkStatus"}, - FunctionInfo{400, nullptr, "GetAccountByVirtualAccount"}, - FunctionInfo{401, nullptr, "GetVirtualAccount"}, - FunctionInfo{500, nullptr, "RequestSyncTicketLegacy"}, - FunctionInfo{501, nullptr, "RequestDownloadTicket"}, - FunctionInfo{502, nullptr, "RequestDownloadTicketForPrepurchasedContents"}, - FunctionInfo{503, nullptr, "RequestSyncTicket"}, - FunctionInfo{504, nullptr, "RequestDownloadTicketForPrepurchasedContents2"}, - FunctionInfo{505, nullptr, "RequestDownloadTicketForPrepurchasedContentsForAccount"} - ); - std::optional<FunctionInfoBase> FindRequest(u32 key) override { - return HandlerTableGenerateWithFind(key, functions); + explicit NIM_SHP(Core::System& system_) : ServiceFramework{system_, "nim:shp"} { + // clang-format off + static const FunctionInfo functions[] = { + {0, nullptr, "RequestDeviceAuthenticationToken"}, + {1, nullptr, "RequestCachedDeviceAuthenticationToken"}, + {2, nullptr, "RequestEdgeToken"}, + {3, nullptr, "RequestCachedEdgeToken"}, + {100, nullptr, "RequestRegisterDeviceAccount"}, + {101, nullptr, "RequestUnregisterDeviceAccount"}, + {102, nullptr, "RequestDeviceAccountStatus"}, + {103, nullptr, "GetDeviceAccountInfo"}, + {104, nullptr, "RequestDeviceRegistrationInfo"}, + {105, nullptr, "RequestTransferDeviceAccount"}, + {106, nullptr, "RequestSyncRegistration"}, + {107, nullptr, "IsOwnDeviceId"}, + {200, nullptr, "RequestRegisterNotificationToken"}, + {300, nullptr, "RequestUnlinkDevice"}, + {301, nullptr, "RequestUnlinkDeviceIntegrated"}, + {302, nullptr, "RequestLinkDevice"}, + {303, nullptr, "HasDeviceLink"}, + {304, nullptr, "RequestUnlinkDeviceAll"}, + {305, nullptr, "RequestCreateVirtualAccount"}, + {306, nullptr, "RequestDeviceLinkStatus"}, + {400, nullptr, "GetAccountByVirtualAccount"}, + {401, nullptr, "GetVirtualAccount"}, + {500, nullptr, "RequestSyncTicketLegacy"}, + {501, nullptr, "RequestDownloadTicket"}, + {502, nullptr, "RequestDownloadTicketForPrepurchasedContents"}, + {503, nullptr, "RequestSyncTicket"}, + {504, nullptr, "RequestDownloadTicketForPrepurchasedContents2"}, + {505, nullptr, "RequestDownloadTicketForPrepurchasedContentsForAccount"}, + }; + // clang-format on + + RegisterHandlers(functions); } }; @@ -506,7 +511,19 @@ public: explicit IEnsureNetworkClockAvailabilityService(Core::System& system_) : ServiceFramework{system_, "IEnsureNetworkClockAvailabilityService"}, service_context{system_, "IEnsureNetworkClockAvailabilityService"} { - finished_event = service_context.CreateEvent("IEnsureNetworkClockAvailabilityService:FinishEvent"); + static const FunctionInfo functions[] = { + {0, &IEnsureNetworkClockAvailabilityService::StartTask, "StartTask"}, + {1, &IEnsureNetworkClockAvailabilityService::GetFinishNotificationEvent, + "GetFinishNotificationEvent"}, + {2, &IEnsureNetworkClockAvailabilityService::GetResult, "GetResult"}, + {3, &IEnsureNetworkClockAvailabilityService::Cancel, "Cancel"}, + {4, &IEnsureNetworkClockAvailabilityService::IsProcessing, "IsProcessing"}, + {5, &IEnsureNetworkClockAvailabilityService::GetServerTime, "GetServerTime"}, + }; + RegisterHandlers(functions); + + finished_event = + service_context.CreateEvent("IEnsureNetworkClockAvailabilityService:FinishEvent"); } ~IEnsureNetworkClockAvailabilityService() override { @@ -563,27 +580,23 @@ private: rb.PushRaw<s64>(server_time); } - std::optional<FunctionInfoBase> FindRequest(u32 key) override { - return HandlerTableGenerateWithFind(key, functions); - } - static constexpr auto functions = CreateStaticMap( - FunctionInfo{0, &IEnsureNetworkClockAvailabilityService::StartTask, "StartTask"}, - FunctionInfo{1, &IEnsureNetworkClockAvailabilityService::GetFinishNotificationEvent, "GetFinishNotificationEvent"}, - FunctionInfo{2, &IEnsureNetworkClockAvailabilityService::GetResult, "GetResult"}, - FunctionInfo{3, &IEnsureNetworkClockAvailabilityService::Cancel, "Cancel"}, - FunctionInfo{4, &IEnsureNetworkClockAvailabilityService::IsProcessing, "IsProcessing"}, - FunctionInfo{5, &IEnsureNetworkClockAvailabilityService::GetServerTime, "GetServerTime"} - ); KernelHelpers::ServiceContext service_context; + Kernel::KEvent* finished_event; }; class NTC final : public ServiceFramework<NTC> { public: - explicit NTC(Core::System& system_) : ServiceFramework{system_, "ntc"} {} + explicit NTC(Core::System& system_) : ServiceFramework{system_, "ntc"} { + // clang-format off + static const FunctionInfo functions[] = { + {0, &NTC::OpenEnsureNetworkClockAvailabilityService, "OpenEnsureNetworkClockAvailabilityService"}, + {100, &NTC::SuspendAutonomicTimeCorrection, "SuspendAutonomicTimeCorrection"}, + {101, &NTC::ResumeAutonomicTimeCorrection, "ResumeAutonomicTimeCorrection"}, + }; + // clang-format on - std::optional<FunctionInfoBase> FindRequest(u32 key) override { - return HandlerTableGenerateWithFind(key, functions); + RegisterHandlers(functions); } private: @@ -609,24 +622,18 @@ private: IPC::ResponseBuilder rb{ctx, 2}; rb.Push(ResultSuccess); } - - static constexpr auto functions = CreateStaticMap( - FunctionInfo{0, &NTC::OpenEnsureNetworkClockAvailabilityService, "OpenEnsureNetworkClockAvailabilityService"}, - FunctionInfo{100, &NTC::SuspendAutonomicTimeCorrection, "SuspendAutonomicTimeCorrection"}, - FunctionInfo{101, &NTC::ResumeAutonomicTimeCorrection, "ResumeAutonomicTimeCorrection"} - ); }; class NIM_ECAS final : public ServiceFramework<NIM_ECAS> { public: - explicit NIM_ECAS(Core::System& system_) : ServiceFramework{system_, "nim:ecas"} {} - - static constexpr auto functions = CreateStaticMap( - FunctionInfo{0, nullptr, "RegisterSpecialClient"}, - FunctionInfo{1, nullptr, "UnregisterSpecialClient"} - ); - std::optional<FunctionInfoBase> FindRequest(u32 key) override { - return HandlerTableGenerateWithFind(key, functions); + explicit NIM_ECAS(Core::System& system_) : ServiceFramework{system_, "nim:ecas"} { + // clang-format off + static const FunctionInfo functions[] = { + {0, nullptr, "RegisterSpecialClient"}, + {1, nullptr, "UnregisterSpecialClient"}, + }; + // clang-format on + RegisterHandlers(functions); } }; |
