mirror of
https://github.com/yuzu-emu/yuzu-android
synced 2024-12-26 22:01:21 -08:00
service: Update function tables
This commit is contained in:
parent
058ec22787
commit
6a0010d0c6
@ -55,7 +55,7 @@ public:
|
|||||||
{19, &IUser::GetState, "GetState"},
|
{19, &IUser::GetState, "GetState"},
|
||||||
{20, &IUser::GetDeviceState, "GetDeviceState"},
|
{20, &IUser::GetDeviceState, "GetDeviceState"},
|
||||||
{21, &IUser::GetNpadId, "GetNpadId"},
|
{21, &IUser::GetNpadId, "GetNpadId"},
|
||||||
{22, &IUser::GetApplicationAreaSize, "GetApplicationAreaSize"},
|
{22, &IUser::GetApplicationArea2, "GetApplicationArea2"},
|
||||||
{23, &IUser::AttachAvailabilityChangeEvent, "AttachAvailabilityChangeEvent"},
|
{23, &IUser::AttachAvailabilityChangeEvent, "AttachAvailabilityChangeEvent"},
|
||||||
{24, nullptr, "RecreateApplicationArea"},
|
{24, nullptr, "RecreateApplicationArea"},
|
||||||
};
|
};
|
||||||
@ -295,7 +295,7 @@ private:
|
|||||||
rb.Push(ErrCodes::ERR_NO_APPLICATION_AREA);
|
rb.Push(ErrCodes::ERR_NO_APPLICATION_AREA);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GetApplicationAreaSize(Kernel::HLERequestContext& ctx) {
|
void GetApplicationArea2(Kernel::HLERequestContext& ctx) {
|
||||||
LOG_WARNING(Service_NFP, "(STUBBED) called");
|
LOG_WARNING(Service_NFP, "(STUBBED) called");
|
||||||
// We don't need to worry about this since we can just open the file
|
// We don't need to worry about this since we can just open the file
|
||||||
IPC::ResponseBuilder rb{ctx, 3};
|
IPC::ResponseBuilder rb{ctx, 3};
|
||||||
|
@ -121,11 +121,83 @@ public:
|
|||||||
{39, nullptr, "PrepareShutdown"},
|
{39, nullptr, "PrepareShutdown"},
|
||||||
{40, nullptr, "ListApplyDeltaTask"},
|
{40, nullptr, "ListApplyDeltaTask"},
|
||||||
{41, nullptr, "ClearNotEnoughSpaceStateOfApplyDeltaTask"},
|
{41, nullptr, "ClearNotEnoughSpaceStateOfApplyDeltaTask"},
|
||||||
{42, nullptr, "Unknown1"},
|
{42, nullptr, "Unknown42"},
|
||||||
{43, nullptr, "Unknown2"},
|
{43, nullptr, "Unknown42"},
|
||||||
{44, nullptr, "Unknown3"},
|
{44, nullptr, "Unknown44"},
|
||||||
{45, nullptr, "Unknown4"},
|
{45, nullptr, "Unknown45"},
|
||||||
{46, nullptr, "Unknown5"},
|
{46, nullptr, "Unknown46"},
|
||||||
|
{47, nullptr, "Unknown47"},
|
||||||
|
{48, nullptr, "Unknown48"},
|
||||||
|
{49, nullptr, "Unknown49"},
|
||||||
|
{50, nullptr, "Unknown50"},
|
||||||
|
{51, nullptr, "Unknown51"},
|
||||||
|
{52, nullptr, "Unknown52"},
|
||||||
|
{53, nullptr, "Unknown53"},
|
||||||
|
{54, nullptr, "Unknown54"},
|
||||||
|
{55, nullptr, "Unknown55"},
|
||||||
|
{56, nullptr, "Unknown56"},
|
||||||
|
{57, nullptr, "Unknown57"},
|
||||||
|
{58, nullptr, "Unknown58"},
|
||||||
|
{59, nullptr, "Unknown59"},
|
||||||
|
{60, nullptr, "Unknown60"},
|
||||||
|
{61, nullptr, "Unknown61"},
|
||||||
|
{62, nullptr, "Unknown62"},
|
||||||
|
{63, nullptr, "Unknown63"},
|
||||||
|
{64, nullptr, "Unknown64"},
|
||||||
|
{65, nullptr, "Unknown65"},
|
||||||
|
{66, nullptr, "Unknown66"},
|
||||||
|
{67, nullptr, "Unknown67"},
|
||||||
|
{68, nullptr, "Unknown68"},
|
||||||
|
{69, nullptr, "Unknown69"},
|
||||||
|
{70, nullptr, "Unknown70"},
|
||||||
|
{71, nullptr, "Unknown71"},
|
||||||
|
{72, nullptr, "Unknown72"},
|
||||||
|
{73, nullptr, "Unknown73"},
|
||||||
|
{74, nullptr, "Unknown74"},
|
||||||
|
{75, nullptr, "Unknown75"},
|
||||||
|
{76, nullptr, "Unknown76"},
|
||||||
|
{77, nullptr, "Unknown77"},
|
||||||
|
{78, nullptr, "Unknown78"},
|
||||||
|
{79, nullptr, "Unknown79"},
|
||||||
|
{80, nullptr, "Unknown80"},
|
||||||
|
{81, nullptr, "Unknown81"},
|
||||||
|
{82, nullptr, "Unknown82"},
|
||||||
|
{83, nullptr, "Unknown83"},
|
||||||
|
{84, nullptr, "Unknown84"},
|
||||||
|
{85, nullptr, "Unknown85"},
|
||||||
|
{86, nullptr, "Unknown86"},
|
||||||
|
{87, nullptr, "Unknown87"},
|
||||||
|
{88, nullptr, "Unknown88"},
|
||||||
|
{89, nullptr, "Unknown89"},
|
||||||
|
{90, nullptr, "Unknown90"},
|
||||||
|
{91, nullptr, "Unknown91"},
|
||||||
|
{92, nullptr, "Unknown92"},
|
||||||
|
{93, nullptr, "Unknown93"},
|
||||||
|
{94, nullptr, "Unknown94"},
|
||||||
|
{95, nullptr, "Unknown95"},
|
||||||
|
{96, nullptr, "Unknown96"},
|
||||||
|
{97, nullptr, "Unknown97"},
|
||||||
|
{98, nullptr, "Unknown98"},
|
||||||
|
{99, nullptr, "Unknown99"},
|
||||||
|
{100, nullptr, "Unknown100"},
|
||||||
|
{101, nullptr, "Unknown101"},
|
||||||
|
{102, nullptr, "Unknown102"},
|
||||||
|
{103, nullptr, "Unknown103"},
|
||||||
|
{104, nullptr, "Unknown104"},
|
||||||
|
{105, nullptr, "Unknown105"},
|
||||||
|
{106, nullptr, "Unknown106"},
|
||||||
|
{107, nullptr, "Unknown107"},
|
||||||
|
{108, nullptr, "Unknown108"},
|
||||||
|
{109, nullptr, "Unknown109"},
|
||||||
|
{110, nullptr, "Unknown110"},
|
||||||
|
{111, nullptr, "Unknown111"},
|
||||||
|
{112, nullptr, "Unknown112"},
|
||||||
|
{113, nullptr, "Unknown113"},
|
||||||
|
{114, nullptr, "Unknown114"},
|
||||||
|
{115, nullptr, "Unknown115"},
|
||||||
|
{116, nullptr, "Unknown116"},
|
||||||
|
{117, nullptr, "Unknown117"},
|
||||||
|
{118, nullptr, "Unknown118"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
@ -142,6 +214,7 @@ public:
|
|||||||
{1, nullptr, "RefreshDebugAvailability"},
|
{1, nullptr, "RefreshDebugAvailability"},
|
||||||
{2, nullptr, "ClearDebugResponse"},
|
{2, nullptr, "ClearDebugResponse"},
|
||||||
{3, nullptr, "RegisterDebugResponse"},
|
{3, nullptr, "RegisterDebugResponse"},
|
||||||
|
{4, nullptr, "IsLargeResourceAvailable"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
@ -164,6 +237,8 @@ public:
|
|||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "RequestDeviceAuthenticationToken"},
|
{0, nullptr, "RequestDeviceAuthenticationToken"},
|
||||||
{1, nullptr, "RequestCachedDeviceAuthenticationToken"},
|
{1, nullptr, "RequestCachedDeviceAuthenticationToken"},
|
||||||
|
{2, nullptr, "RequestEdgeToken"},
|
||||||
|
{3, nullptr, "RequestCachedEdgeToken"},
|
||||||
{100, nullptr, "RequestRegisterDeviceAccount"},
|
{100, nullptr, "RequestRegisterDeviceAccount"},
|
||||||
{101, nullptr, "RequestUnregisterDeviceAccount"},
|
{101, nullptr, "RequestUnregisterDeviceAccount"},
|
||||||
{102, nullptr, "RequestDeviceAccountStatus"},
|
{102, nullptr, "RequestDeviceAccountStatus"},
|
||||||
@ -181,7 +256,8 @@ public:
|
|||||||
{305, nullptr, "RequestCreateVirtualAccount"},
|
{305, nullptr, "RequestCreateVirtualAccount"},
|
||||||
{306, nullptr, "RequestDeviceLinkStatus"},
|
{306, nullptr, "RequestDeviceLinkStatus"},
|
||||||
{400, nullptr, "GetAccountByVirtualAccount"},
|
{400, nullptr, "GetAccountByVirtualAccount"},
|
||||||
{500, nullptr, "RequestSyncTicket"},
|
{401, nullptr, "GetVirtualAccount"},
|
||||||
|
{500, nullptr, "RequestSyncTicketLegacy"},
|
||||||
{501, nullptr, "RequestDownloadTicket"},
|
{501, nullptr, "RequestDownloadTicket"},
|
||||||
{502, nullptr, "RequestDownloadTicketForPrepurchasedContents"},
|
{502, nullptr, "RequestDownloadTicketForPrepurchasedContents"},
|
||||||
{503, nullptr, "RequestSyncTicket"},
|
{503, nullptr, "RequestSyncTicket"},
|
||||||
|
@ -30,6 +30,7 @@ public:
|
|||||||
{23, nullptr, "DestroyToken"},
|
{23, nullptr, "DestroyToken"},
|
||||||
{24, nullptr, "DestroyTokenWithApplicationId"},
|
{24, nullptr, "DestroyTokenWithApplicationId"},
|
||||||
{25, nullptr, "QueryIsTokenValid"},
|
{25, nullptr, "QueryIsTokenValid"},
|
||||||
|
{26, nullptr, "ListenToMyApplicationId"},
|
||||||
{31, nullptr, "UploadTokenToBaaS"},
|
{31, nullptr, "UploadTokenToBaaS"},
|
||||||
{32, nullptr, "DestroyTokenForBaaS"},
|
{32, nullptr, "DestroyTokenForBaaS"},
|
||||||
{33, nullptr, "CreateTokenForBaaS"},
|
{33, nullptr, "CreateTokenForBaaS"},
|
||||||
|
@ -104,7 +104,7 @@ IApplicationManagerInterface::IApplicationManagerInterface()
|
|||||||
{94, nullptr, "LaunchApplication"},
|
{94, nullptr, "LaunchApplication"},
|
||||||
{95, nullptr, "GetApplicationLaunchInfo"},
|
{95, nullptr, "GetApplicationLaunchInfo"},
|
||||||
{96, nullptr, "AcquireApplicationLaunchInfo"},
|
{96, nullptr, "AcquireApplicationLaunchInfo"},
|
||||||
{97, nullptr, "GetMainApplicationProgramIndex2"},
|
{97, nullptr, "GetMainApplicationProgramIndexByApplicationLaunchInfo"},
|
||||||
{98, nullptr, "EnableApplicationAllThreadDumpOnCrash"},
|
{98, nullptr, "EnableApplicationAllThreadDumpOnCrash"},
|
||||||
{99, nullptr, "LaunchDevMenu"},
|
{99, nullptr, "LaunchDevMenu"},
|
||||||
{100, nullptr, "ResetToFactorySettings"},
|
{100, nullptr, "ResetToFactorySettings"},
|
||||||
@ -254,7 +254,7 @@ IApplicationManagerInterface::IApplicationManagerInterface()
|
|||||||
{2170, nullptr, "GetRightsEnvironmentStatus"},
|
{2170, nullptr, "GetRightsEnvironmentStatus"},
|
||||||
{2171, nullptr, "GetRightsEnvironmentStatusChangedEvent"},
|
{2171, nullptr, "GetRightsEnvironmentStatusChangedEvent"},
|
||||||
{2180, nullptr, "RequestExtendRightsInRightsEnvironment"},
|
{2180, nullptr, "RequestExtendRightsInRightsEnvironment"},
|
||||||
{2181, nullptr, "GetLastResultOfExtendRightsInRightsEnvironment"},
|
{2181, nullptr, "GetResultOfExtendRightsInRightsEnvironment"},
|
||||||
{2182, nullptr, "SetActiveRightsContextUsingStateToRightsEnvironment"},
|
{2182, nullptr, "SetActiveRightsContextUsingStateToRightsEnvironment"},
|
||||||
{2190, nullptr, "GetRightsEnvironmentHandleForApplication"},
|
{2190, nullptr, "GetRightsEnvironmentHandleForApplication"},
|
||||||
{2199, nullptr, "GetRightsEnvironmentCountForDebug"},
|
{2199, nullptr, "GetRightsEnvironmentCountForDebug"},
|
||||||
@ -445,8 +445,8 @@ IApplicationVersionInterface::IApplicationVersionInterface()
|
|||||||
|
|
||||||
IApplicationVersionInterface::~IApplicationVersionInterface() = default;
|
IApplicationVersionInterface::~IApplicationVersionInterface() = default;
|
||||||
|
|
||||||
IContentManagerInterface::IContentManagerInterface()
|
IContentManagementInterface::IContentManagementInterface()
|
||||||
: ServiceFramework{"IContentManagerInterface"} {
|
: ServiceFramework{"IContentManagementInterface"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{11, nullptr, "CalculateApplicationOccupiedSize"},
|
{11, nullptr, "CalculateApplicationOccupiedSize"},
|
||||||
@ -463,7 +463,7 @@ IContentManagerInterface::IContentManagerInterface()
|
|||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
|
||||||
IContentManagerInterface::~IContentManagerInterface() = default;
|
IContentManagementInterface::~IContentManagementInterface() = default;
|
||||||
|
|
||||||
IDocumentInterface::IDocumentInterface() : ServiceFramework{"IDocumentInterface"} {
|
IDocumentInterface::IDocumentInterface() : ServiceFramework{"IDocumentInterface"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
@ -545,7 +545,7 @@ NS::NS(const char* name) : ServiceFramework{name} {
|
|||||||
{7995, &NS::PushInterface<IAccountProxyInterface>, "GetAccountProxyInterface"},
|
{7995, &NS::PushInterface<IAccountProxyInterface>, "GetAccountProxyInterface"},
|
||||||
{7996, &NS::PushInterface<IApplicationManagerInterface>, "GetApplicationManagerInterface"},
|
{7996, &NS::PushInterface<IApplicationManagerInterface>, "GetApplicationManagerInterface"},
|
||||||
{7997, &NS::PushInterface<IDownloadTaskInterface>, "GetDownloadTaskInterface"},
|
{7997, &NS::PushInterface<IDownloadTaskInterface>, "GetDownloadTaskInterface"},
|
||||||
{7998, &NS::PushInterface<IContentManagerInterface>, "GetContentManagementInterface"},
|
{7998, &NS::PushInterface<IContentManagementInterface>, "GetContentManagementInterface"},
|
||||||
{7999, &NS::PushInterface<IDocumentInterface>, "GetDocumentInterface"},
|
{7999, &NS::PushInterface<IDocumentInterface>, "GetDocumentInterface"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
@ -567,14 +567,14 @@ public:
|
|||||||
{0, nullptr, "LaunchProgram"},
|
{0, nullptr, "LaunchProgram"},
|
||||||
{1, nullptr, "TerminateProcess"},
|
{1, nullptr, "TerminateProcess"},
|
||||||
{2, nullptr, "TerminateProgram"},
|
{2, nullptr, "TerminateProgram"},
|
||||||
{4, nullptr, "GetShellEventHandle"},
|
{4, nullptr, "GetShellEvent"},
|
||||||
{5, nullptr, "GetShellEventInfo"},
|
{5, nullptr, "GetShellEventInfo"},
|
||||||
{6, nullptr, "TerminateApplication"},
|
{6, nullptr, "TerminateApplication"},
|
||||||
{7, nullptr, "PrepareLaunchProgramFromHost"},
|
{7, nullptr, "PrepareLaunchProgramFromHost"},
|
||||||
{8, nullptr, "LaunchApplication"},
|
{8, nullptr, "LaunchApplicationFromHost"},
|
||||||
{9, nullptr, "LaunchApplicationWithStorageId"},
|
{9, nullptr, "LaunchApplicationWithStorageIdForDevelop"},
|
||||||
{10, nullptr, "TerminateApplication2"},
|
{10, nullptr, "IsSystemMemoryResourceLimitBoosted"},
|
||||||
{11, nullptr, "GetRunningApplicationProcessId"},
|
{11, nullptr, "GetRunningApplicationProcessIdForDevelop"},
|
||||||
{12, nullptr, "SetCurrentApplicationRightsEnvironmentCanBeActive"},
|
{12, nullptr, "SetCurrentApplicationRightsEnvironmentCanBeActive"},
|
||||||
{13, nullptr, "CreateApplicationResourceForDevelop"},
|
{13, nullptr, "CreateApplicationResourceForDevelop"},
|
||||||
{14, nullptr, "IsPreomiaForDevelop"},
|
{14, nullptr, "IsPreomiaForDevelop"},
|
||||||
@ -636,6 +636,10 @@ public:
|
|||||||
{9, nullptr, "GetSystemUpdateNotificationEventForContentDelivery"},
|
{9, nullptr, "GetSystemUpdateNotificationEventForContentDelivery"},
|
||||||
{10, nullptr, "NotifySystemUpdateForContentDelivery"},
|
{10, nullptr, "NotifySystemUpdateForContentDelivery"},
|
||||||
{11, nullptr, "PrepareShutdown"},
|
{11, nullptr, "PrepareShutdown"},
|
||||||
|
{12, nullptr, "Unknown12"},
|
||||||
|
{13, nullptr, "Unknown13"},
|
||||||
|
{14, nullptr, "Unknown14"},
|
||||||
|
{15, nullptr, "Unknown15"},
|
||||||
{16, nullptr, "DestroySystemUpdateTask"},
|
{16, nullptr, "DestroySystemUpdateTask"},
|
||||||
{17, nullptr, "RequestSendSystemUpdate"},
|
{17, nullptr, "RequestSendSystemUpdate"},
|
||||||
{18, nullptr, "GetSendSystemUpdateProgress"},
|
{18, nullptr, "GetSendSystemUpdateProgress"},
|
||||||
|
@ -40,10 +40,10 @@ public:
|
|||||||
~IApplicationVersionInterface() override;
|
~IApplicationVersionInterface() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class IContentManagerInterface final : public ServiceFramework<IContentManagerInterface> {
|
class IContentManagementInterface final : public ServiceFramework<IContentManagementInterface> {
|
||||||
public:
|
public:
|
||||||
explicit IContentManagerInterface();
|
explicit IContentManagementInterface();
|
||||||
~IContentManagerInterface() override;
|
~IContentManagementInterface() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class IDocumentInterface final : public ServiceFramework<IDocumentInterface> {
|
class IDocumentInterface final : public ServiceFramework<IDocumentInterface> {
|
||||||
|
@ -163,7 +163,7 @@ PL_U::PL_U(Core::System& system)
|
|||||||
{5, &PL_U::GetSharedFontInOrderOfPriority, "GetSharedFontInOrderOfPriority"},
|
{5, &PL_U::GetSharedFontInOrderOfPriority, "GetSharedFontInOrderOfPriority"},
|
||||||
{6, nullptr, "GetSharedFontInOrderOfPriorityForSystem"},
|
{6, nullptr, "GetSharedFontInOrderOfPriorityForSystem"},
|
||||||
{100, nullptr, "RequestApplicationFunctionAuthorization"},
|
{100, nullptr, "RequestApplicationFunctionAuthorization"},
|
||||||
{101, nullptr, "RequestApplicationFunctionAuthorizationForSystem"},
|
{101, nullptr, "RequestApplicationFunctionAuthorizationByProcessId"},
|
||||||
{102, nullptr, "RequestApplicationFunctionAuthorizationByApplicationId"},
|
{102, nullptr, "RequestApplicationFunctionAuthorizationByApplicationId"},
|
||||||
{1000, nullptr, "LoadNgWordDataForPlatformRegionChina"},
|
{1000, nullptr, "LoadNgWordDataForPlatformRegionChina"},
|
||||||
{1001, nullptr, "GetNgWordDataSizeForPlatformRegionChina"},
|
{1001, nullptr, "GetNgWordDataSizeForPlatformRegionChina"},
|
||||||
|
@ -144,7 +144,7 @@ void NVDRV::QueryEvent(Kernel::HLERequestContext& ctx) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NVDRV::SetClientPID(Kernel::HLERequestContext& ctx) {
|
void NVDRV::SetAruid(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{ctx};
|
||||||
pid = rp.Pop<u64>();
|
pid = rp.Pop<u64>();
|
||||||
LOG_WARNING(Service_NVDRV, "(STUBBED) called, pid=0x{:X}", pid);
|
LOG_WARNING(Service_NVDRV, "(STUBBED) called, pid=0x{:X}", pid);
|
||||||
@ -154,7 +154,7 @@ void NVDRV::SetClientPID(Kernel::HLERequestContext& ctx) {
|
|||||||
rb.Push<u32>(0);
|
rb.Push<u32>(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NVDRV::FinishInitialize(Kernel::HLERequestContext& ctx) {
|
void NVDRV::SetGraphicsFirmwareMemoryMarginEnabled(Kernel::HLERequestContext& ctx) {
|
||||||
LOG_WARNING(Service_NVDRV, "(STUBBED) called");
|
LOG_WARNING(Service_NVDRV, "(STUBBED) called");
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
@ -187,13 +187,14 @@ NVDRV::NVDRV(std::shared_ptr<Module> nvdrv, const char* name)
|
|||||||
{4, &NVDRV::QueryEvent, "QueryEvent"},
|
{4, &NVDRV::QueryEvent, "QueryEvent"},
|
||||||
{5, nullptr, "MapSharedMem"},
|
{5, nullptr, "MapSharedMem"},
|
||||||
{6, &NVDRV::GetStatus, "GetStatus"},
|
{6, &NVDRV::GetStatus, "GetStatus"},
|
||||||
{7, nullptr, "ForceSetClientPID"},
|
{7, nullptr, "SetAruidForTest"},
|
||||||
{8, &NVDRV::SetClientPID, "SetClientPID"},
|
{8, &NVDRV::SetAruid, "SetAruid"},
|
||||||
{9, &NVDRV::DumpGraphicsMemoryInfo, "DumpGraphicsMemoryInfo"},
|
{9, &NVDRV::DumpGraphicsMemoryInfo, "DumpGraphicsMemoryInfo"},
|
||||||
{10, nullptr, "InitializeDevtools"},
|
{10, nullptr, "InitializeDevtools"},
|
||||||
{11, &NVDRV::Ioctl2, "Ioctl2"},
|
{11, &NVDRV::Ioctl2, "Ioctl2"},
|
||||||
{12, &NVDRV::Ioctl3, "Ioctl3"},
|
{12, &NVDRV::Ioctl3, "Ioctl3"},
|
||||||
{13, &NVDRV::FinishInitialize, "FinishInitialize"},
|
{13, &NVDRV::SetGraphicsFirmwareMemoryMarginEnabled,
|
||||||
|
"SetGraphicsFirmwareMemoryMarginEnabled"},
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
@ -29,8 +29,8 @@ private:
|
|||||||
void Close(Kernel::HLERequestContext& ctx);
|
void Close(Kernel::HLERequestContext& ctx);
|
||||||
void Initialize(Kernel::HLERequestContext& ctx);
|
void Initialize(Kernel::HLERequestContext& ctx);
|
||||||
void QueryEvent(Kernel::HLERequestContext& ctx);
|
void QueryEvent(Kernel::HLERequestContext& ctx);
|
||||||
void SetClientPID(Kernel::HLERequestContext& ctx);
|
void SetAruid(Kernel::HLERequestContext& ctx);
|
||||||
void FinishInitialize(Kernel::HLERequestContext& ctx);
|
void SetGraphicsFirmwareMemoryMarginEnabled(Kernel::HLERequestContext& ctx);
|
||||||
void GetStatus(Kernel::HLERequestContext& ctx);
|
void GetStatus(Kernel::HLERequestContext& ctx);
|
||||||
void DumpGraphicsMemoryInfo(Kernel::HLERequestContext& ctx);
|
void DumpGraphicsMemoryInfo(Kernel::HLERequestContext& ctx);
|
||||||
void IoctlBase(Kernel::HLERequestContext& ctx, IoctlVersion version);
|
void IoctlBase(Kernel::HLERequestContext& ctx, IoctlVersion version);
|
||||||
|
@ -10,19 +10,19 @@ namespace Service::Nvidia {
|
|||||||
|
|
||||||
NVMEMP::NVMEMP() : ServiceFramework("nvmemp") {
|
NVMEMP::NVMEMP() : ServiceFramework("nvmemp") {
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, &NVMEMP::Cmd0, "Cmd0"},
|
{0, &NVMEMP::Open, "Open"},
|
||||||
{1, &NVMEMP::Cmd1, "Cmd1"},
|
{1, &NVMEMP::GetAruid, "GetAruid"},
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
|
||||||
NVMEMP::~NVMEMP() = default;
|
NVMEMP::~NVMEMP() = default;
|
||||||
|
|
||||||
void NVMEMP::Cmd0(Kernel::HLERequestContext& ctx) {
|
void NVMEMP::Open(Kernel::HLERequestContext& ctx) {
|
||||||
UNIMPLEMENTED();
|
UNIMPLEMENTED();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NVMEMP::Cmd1(Kernel::HLERequestContext& ctx) {
|
void NVMEMP::GetAruid(Kernel::HLERequestContext& ctx) {
|
||||||
UNIMPLEMENTED();
|
UNIMPLEMENTED();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,8 +14,8 @@ public:
|
|||||||
~NVMEMP() override;
|
~NVMEMP() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void Cmd0(Kernel::HLERequestContext& ctx);
|
void Open(Kernel::HLERequestContext& ctx);
|
||||||
void Cmd1(Kernel::HLERequestContext& ctx);
|
void GetAruid(Kernel::HLERequestContext& ctx);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Service::Nvidia
|
} // namespace Service::Nvidia
|
||||||
|
@ -36,6 +36,9 @@ public:
|
|||||||
{18, nullptr, "ReleaseIrq"},
|
{18, nullptr, "ReleaseIrq"},
|
||||||
{19, nullptr, "SetIrqEnable"},
|
{19, nullptr, "SetIrqEnable"},
|
||||||
{20, nullptr, "SetAspmEnable"},
|
{20, nullptr, "SetAspmEnable"},
|
||||||
|
{21, nullptr, "SetResetUponResumeEnable"},
|
||||||
|
{22, nullptr, "Unknown22"},
|
||||||
|
{23, nullptr, "Unknown23"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
@ -42,6 +42,9 @@ public:
|
|||||||
{24, nullptr, "GetModuleStateTable"},
|
{24, nullptr, "GetModuleStateTable"},
|
||||||
{25, nullptr, "GetPowerDomainStateTable"},
|
{25, nullptr, "GetPowerDomainStateTable"},
|
||||||
{26, nullptr, "GetFuseInfo"},
|
{26, nullptr, "GetFuseInfo"},
|
||||||
|
{27, nullptr, "GetDramId"},
|
||||||
|
{28, nullptr, "IsPoweredOn"},
|
||||||
|
{29, nullptr, "GetVoltage"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
@ -78,13 +78,13 @@ public:
|
|||||||
: ServiceFramework{"pm:dmnt"}, kernel(kernel) {
|
: ServiceFramework{"pm:dmnt"}, kernel(kernel) {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "GetDebugProcesses"},
|
{0, nullptr, "GetJitDebugProcessIdList"},
|
||||||
{1, nullptr, "StartDebugProcess"},
|
{1, nullptr, "StartProcess"},
|
||||||
{2, &DebugMonitor::GetTitlePid, "GetTitlePid"},
|
{2, &DebugMonitor::GetProcessId, "GetProcessId"},
|
||||||
{3, nullptr, "EnableDebugForTitleId"},
|
{3, nullptr, "HookToCreateProcess"},
|
||||||
{4, &DebugMonitor::GetApplicationPid, "GetApplicationPid"},
|
{4, &DebugMonitor::GetApplicationProcessId, "GetApplicationProcessId"},
|
||||||
{5, nullptr, "EnableDebugForApplication"},
|
{5, nullptr, "HookToCreateApplicationProgress"},
|
||||||
{6, nullptr, "DisableDebug"},
|
{6, nullptr, "ClearHook"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
@ -92,7 +92,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void GetTitlePid(Kernel::HLERequestContext& ctx) {
|
void GetProcessId(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{ctx};
|
||||||
const auto title_id = rp.PopRaw<u64>();
|
const auto title_id = rp.PopRaw<u64>();
|
||||||
|
|
||||||
@ -114,7 +114,7 @@ private:
|
|||||||
rb.Push((*process)->GetProcessID());
|
rb.Push((*process)->GetProcessID());
|
||||||
}
|
}
|
||||||
|
|
||||||
void GetApplicationPid(Kernel::HLERequestContext& ctx) {
|
void GetApplicationProcessId(Kernel::HLERequestContext& ctx) {
|
||||||
LOG_DEBUG(Service_PM, "called");
|
LOG_DEBUG(Service_PM, "called");
|
||||||
GetApplicationPidGeneric(ctx, kernel.GetProcessList());
|
GetApplicationPidGeneric(ctx, kernel.GetProcessList());
|
||||||
}
|
}
|
||||||
@ -163,15 +163,15 @@ public:
|
|||||||
: ServiceFramework{"pm:shell"}, kernel(kernel) {
|
: ServiceFramework{"pm:shell"}, kernel(kernel) {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "LaunchProcess"},
|
{0, nullptr, "LaunchProgram"},
|
||||||
{1, nullptr, "TerminateProcessByPid"},
|
{1, nullptr, "TerminateProcess"},
|
||||||
{2, nullptr, "TerminateProcessByTitleId"},
|
{2, nullptr, "TerminateProgram"},
|
||||||
{3, nullptr, "GetProcessEventWaiter"},
|
{3, nullptr, "GetProcessEventHandle"},
|
||||||
{4, nullptr, "GetProcessEventType"},
|
{4, nullptr, "GetProcessEventInfo"},
|
||||||
{5, nullptr, "NotifyBootFinished"},
|
{5, nullptr, "NotifyBootFinished"},
|
||||||
{6, &Shell::GetApplicationPid, "GetApplicationPid"},
|
{6, &Shell::GetApplicationProcessIdForShell, "GetApplicationProcessIdForShell"},
|
||||||
{7, nullptr, "BoostSystemMemoryResourceLimit"},
|
{7, nullptr, "BoostSystemMemoryResourceLimit"},
|
||||||
{8, nullptr, "EnableAdditionalSystemThreads"},
|
{8, nullptr, "BoostApplicationThreadResourceLimit"},
|
||||||
{9, nullptr, "GetBootFinishedEventHandle"},
|
{9, nullptr, "GetBootFinishedEventHandle"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
@ -180,7 +180,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void GetApplicationPid(Kernel::HLERequestContext& ctx) {
|
void GetApplicationProcessIdForShell(Kernel::HLERequestContext& ctx) {
|
||||||
LOG_DEBUG(Service_PM, "called");
|
LOG_DEBUG(Service_PM, "called");
|
||||||
GetApplicationPidGeneric(ctx, kernel.GetProcessList());
|
GetApplicationPidGeneric(ctx, kernel.GetProcessList());
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,11 @@ public:
|
|||||||
{40101, nullptr, "SetUserAgreementCheckEnabled"},
|
{40101, nullptr, "SetUserAgreementCheckEnabled"},
|
||||||
{50100, nullptr, "ReadAllApplicationReportFiles"},
|
{50100, nullptr, "ReadAllApplicationReportFiles"},
|
||||||
{90100, nullptr, "ReadAllReportFiles"},
|
{90100, nullptr, "ReadAllReportFiles"},
|
||||||
|
{90101, nullptr, "Unknown90101"},
|
||||||
|
{90102, nullptr, "Unknown90102"},
|
||||||
|
{90200, nullptr, "GetStatistics"},
|
||||||
|
{90201, nullptr, "GetThroughputHistory"},
|
||||||
|
{90300, nullptr, "GetLastUploadError"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
@ -24,6 +24,8 @@ public:
|
|||||||
{4, nullptr, "Cancel"},
|
{4, nullptr, "Cancel"},
|
||||||
{5, nullptr, "PrintModuleInformation"},
|
{5, nullptr, "PrintModuleInformation"},
|
||||||
{6, nullptr, "GetModuleInformation"},
|
{6, nullptr, "GetModuleInformation"},
|
||||||
|
{10, nullptr, "Unknown10"},
|
||||||
|
{11, nullptr, "Unknown11"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
@ -35,6 +35,7 @@ public:
|
|||||||
{15, nullptr, "GetBatteryAgePercentage"},
|
{15, nullptr, "GetBatteryAgePercentage"},
|
||||||
{16, nullptr, "GetBatteryChargeInfoEvent"},
|
{16, nullptr, "GetBatteryChargeInfoEvent"},
|
||||||
{17, nullptr, "GetBatteryChargeInfoFields"},
|
{17, nullptr, "GetBatteryChargeInfoFields"},
|
||||||
|
{18, nullptr, "GetBatteryChargeCalibratedEvent"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
namespace Service::SM {
|
namespace Service::SM {
|
||||||
|
|
||||||
void Controller::ConvertSessionToDomain(Kernel::HLERequestContext& ctx) {
|
void Controller::ConvertCurrentObjectToDomain(Kernel::HLERequestContext& ctx) {
|
||||||
ASSERT_MSG(ctx.Session()->IsSession(), "Session is already a domain");
|
ASSERT_MSG(ctx.Session()->IsSession(), "Session is already a domain");
|
||||||
LOG_DEBUG(Service, "called, server_session={}", ctx.Session()->GetObjectId());
|
LOG_DEBUG(Service, "called, server_session={}", ctx.Session()->GetObjectId());
|
||||||
ctx.Session()->ConvertToDomain();
|
ctx.Session()->ConvertToDomain();
|
||||||
@ -22,7 +22,7 @@ void Controller::ConvertSessionToDomain(Kernel::HLERequestContext& ctx) {
|
|||||||
rb.Push<u32>(1); // Converted sessions start with 1 request handler
|
rb.Push<u32>(1); // Converted sessions start with 1 request handler
|
||||||
}
|
}
|
||||||
|
|
||||||
void Controller::DuplicateSession(Kernel::HLERequestContext& ctx) {
|
void Controller::CloneCurrentObject(Kernel::HLERequestContext& ctx) {
|
||||||
// TODO(bunnei): This is just creating a new handle to the same Session. I assume this is wrong
|
// TODO(bunnei): This is just creating a new handle to the same Session. I assume this is wrong
|
||||||
// and that we probably want to actually make an entirely new Session, but we still need to
|
// and that we probably want to actually make an entirely new Session, but we still need to
|
||||||
// verify this on hardware.
|
// verify this on hardware.
|
||||||
@ -33,10 +33,10 @@ void Controller::DuplicateSession(Kernel::HLERequestContext& ctx) {
|
|||||||
rb.PushMoveObjects(ctx.Session()->GetParent()->Client());
|
rb.PushMoveObjects(ctx.Session()->GetParent()->Client());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Controller::DuplicateSessionEx(Kernel::HLERequestContext& ctx) {
|
void Controller::CloneCurrentObjectEx(Kernel::HLERequestContext& ctx) {
|
||||||
LOG_WARNING(Service, "(STUBBED) called, using DuplicateSession");
|
LOG_WARNING(Service, "(STUBBED) called, using CloneCurrentObject");
|
||||||
|
|
||||||
DuplicateSession(ctx);
|
CloneCurrentObject(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Controller::QueryPointerBufferSize(Kernel::HLERequestContext& ctx) {
|
void Controller::QueryPointerBufferSize(Kernel::HLERequestContext& ctx) {
|
||||||
@ -47,13 +47,14 @@ void Controller::QueryPointerBufferSize(Kernel::HLERequestContext& ctx) {
|
|||||||
rb.Push<u16>(0x1000);
|
rb.Push<u16>(0x1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://switchbrew.org/wiki/IPC_Marshalling
|
||||||
Controller::Controller() : ServiceFramework("IpcController") {
|
Controller::Controller() : ServiceFramework("IpcController") {
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0x00000000, &Controller::ConvertSessionToDomain, "ConvertSessionToDomain"},
|
{0x00000000, &Controller::ConvertCurrentObjectToDomain, "ConvertCurrentObjectToDomain"},
|
||||||
{0x00000001, nullptr, "ConvertDomainToSession"},
|
{0x00000001, nullptr, "CopyFromCurrentDomain"},
|
||||||
{0x00000002, &Controller::DuplicateSession, "DuplicateSession"},
|
{0x00000002, &Controller::CloneCurrentObject, "CloneCurrentObject"},
|
||||||
{0x00000003, &Controller::QueryPointerBufferSize, "QueryPointerBufferSize"},
|
{0x00000003, &Controller::QueryPointerBufferSize, "QueryPointerBufferSize"},
|
||||||
{0x00000004, &Controller::DuplicateSessionEx, "DuplicateSessionEx"},
|
{0x00000004, &Controller::CloneCurrentObjectEx, "CloneCurrentObjectEx"},
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
@ -14,9 +14,9 @@ public:
|
|||||||
~Controller() override;
|
~Controller() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void ConvertSessionToDomain(Kernel::HLERequestContext& ctx);
|
void ConvertCurrentObjectToDomain(Kernel::HLERequestContext& ctx);
|
||||||
void DuplicateSession(Kernel::HLERequestContext& ctx);
|
void CloneCurrentObject(Kernel::HLERequestContext& ctx);
|
||||||
void DuplicateSessionEx(Kernel::HLERequestContext& ctx);
|
void CloneCurrentObjectEx(Kernel::HLERequestContext& ctx);
|
||||||
void QueryPointerBufferSize(Kernel::HLERequestContext& ctx);
|
void QueryPointerBufferSize(Kernel::HLERequestContext& ctx);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ NSD::NSD(const char* name) : ServiceFramework(name) {
|
|||||||
{12, nullptr, "GetDeviceId"},
|
{12, nullptr, "GetDeviceId"},
|
||||||
{13, nullptr, "DeleteSettings"},
|
{13, nullptr, "DeleteSettings"},
|
||||||
{14, nullptr, "ImportSettings"},
|
{14, nullptr, "ImportSettings"},
|
||||||
|
{15, nullptr, "SetChangeEnvironmentIdentifierDisabled"},
|
||||||
{20, nullptr, "Resolve"},
|
{20, nullptr, "Resolve"},
|
||||||
{21, nullptr, "ResolveEx"},
|
{21, nullptr, "ResolveEx"},
|
||||||
{30, nullptr, "GetNasServiceSetting"},
|
{30, nullptr, "GetNasServiceSetting"},
|
||||||
@ -28,6 +29,11 @@ NSD::NSD(const char* name) : ServiceFramework(name) {
|
|||||||
{60, nullptr, "ReadSaveDataFromFsForTest"},
|
{60, nullptr, "ReadSaveDataFromFsForTest"},
|
||||||
{61, nullptr, "WriteSaveDataToFsForTest"},
|
{61, nullptr, "WriteSaveDataToFsForTest"},
|
||||||
{62, nullptr, "DeleteSaveDataOfFsForTest"},
|
{62, nullptr, "DeleteSaveDataOfFsForTest"},
|
||||||
|
{63, nullptr, "IsChangeEnvironmentIdentifierDisabled"},
|
||||||
|
{64, nullptr, "SetWithoutDomainExchangeFqdns"},
|
||||||
|
{100, nullptr, "GetApplicationServerEnvironmentType"},
|
||||||
|
{101, nullptr, "SetApplicationServerEnvironmentType"},
|
||||||
|
{102, nullptr, "DeleteApplicationServerEnvironmentType"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
namespace Service::Sockets {
|
namespace Service::Sockets {
|
||||||
|
|
||||||
void SFDNSRES::GetAddrInfo(Kernel::HLERequestContext& ctx) {
|
void SFDNSRES::GetAddrInfoRequest(Kernel::HLERequestContext& ctx) {
|
||||||
struct Parameters {
|
struct Parameters {
|
||||||
u8 use_nsd_resolve;
|
u8 use_nsd_resolve;
|
||||||
u32 unknown;
|
u32 unknown;
|
||||||
@ -29,15 +29,20 @@ SFDNSRES::SFDNSRES() : ServiceFramework("sfdnsres") {
|
|||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "SetDnsAddressesPrivate"},
|
{0, nullptr, "SetDnsAddressesPrivate"},
|
||||||
{1, nullptr, "GetDnsAddressPrivate"},
|
{1, nullptr, "GetDnsAddressPrivate"},
|
||||||
{2, nullptr, "GetHostByName"},
|
{2, nullptr, "GetHostByNameRequest"},
|
||||||
{3, nullptr, "GetHostByAddr"},
|
{3, nullptr, "GetHostByAddrRequest"},
|
||||||
{4, nullptr, "GetHostStringError"},
|
{4, nullptr, "GetHostStringErrorRequest"},
|
||||||
{5, nullptr, "GetGaiStringError"},
|
{5, nullptr, "GetGaiStringErrorRequest"},
|
||||||
{6, &SFDNSRES::GetAddrInfo, "GetAddrInfo"},
|
{6, &SFDNSRES::GetAddrInfoRequest, "GetAddrInfoRequest"},
|
||||||
{7, nullptr, "GetNameInfo"},
|
{7, nullptr, "GetNameInfoRequest"},
|
||||||
{8, nullptr, "RequestCancelHandle"},
|
{8, nullptr, "RequestCancelHandleRequest"},
|
||||||
{9, nullptr, "CancelSocketCall"},
|
{9, nullptr, "CancelRequest"},
|
||||||
{11, nullptr, "ClearDnsIpServerAddressArray"},
|
{10, nullptr, "GetHostByNameRequestWithOptions"},
|
||||||
|
{11, nullptr, "GetHostByAddrRequestWithOptions"},
|
||||||
|
{12, nullptr, "GetAddrInfoRequestWithOptions"},
|
||||||
|
{13, nullptr, "GetNameInfoRequestWithOptions"},
|
||||||
|
{14, nullptr, "ResolverSetOptionRequest"},
|
||||||
|
{15, nullptr, "ResolverGetOptionRequest"},
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ public:
|
|||||||
~SFDNSRES() override;
|
~SFDNSRES() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void GetAddrInfo(Kernel::HLERequestContext& ctx);
|
void GetAddrInfoRequest(Kernel::HLERequestContext& ctx);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Service::Sockets
|
} // namespace Service::Sockets
|
||||||
|
@ -9,35 +9,36 @@ namespace Service::SPL {
|
|||||||
SPL::SPL(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "spl:") {
|
SPL::SPL(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "spl:") {
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "GetConfig"},
|
{0, nullptr, "GetConfig"},
|
||||||
{1, nullptr, "UserExpMod"},
|
{1, nullptr, "ModularExponentiate"},
|
||||||
{2, nullptr, "GenerateAesKek"},
|
{2, nullptr, "GenerateAesKek"},
|
||||||
{3, nullptr, "LoadAesKey"},
|
{3, nullptr, "LoadAesKey"},
|
||||||
{4, nullptr, "GenerateAesKey"},
|
{4, nullptr, "GenerateAesKey"},
|
||||||
{5, nullptr, "SetConfig"},
|
{5, nullptr, "SetConfig"},
|
||||||
{7, &SPL::GetRandomBytes, "GetRandomBytes"},
|
{7, &SPL::GetRandomBytes, "GetRandomBytes"},
|
||||||
{9, nullptr, "LoadSecureExpModKey"},
|
{9, nullptr, "ImportLotusKey"},
|
||||||
{10, nullptr, "SecureExpMod"},
|
{10, nullptr, "DecryptLotusMessage"},
|
||||||
{11, nullptr, "IsDevelopment"},
|
{11, nullptr, "IsDevelopment"},
|
||||||
{12, nullptr, "GenerateSpecificAesKey"},
|
{12, nullptr, "GenerateSpecificAesKey"},
|
||||||
{13, nullptr, "DecryptPrivk"},
|
{13, nullptr, "DecryptDeviceUniqueData"},
|
||||||
{14, nullptr, "DecryptAesKey"},
|
{14, nullptr, "DecryptAesKey"},
|
||||||
{15, nullptr, "DecryptAesCtr"},
|
{15, nullptr, "CryptAesCtr"},
|
||||||
{16, nullptr, "ComputeCmac"},
|
{16, nullptr, "ComputeCmac"},
|
||||||
{17, nullptr, "LoadRsaOaepKey"},
|
{17, nullptr, "ImportEsKey"},
|
||||||
{18, nullptr, "UnwrapRsaOaepWrappedTitleKey"},
|
{18, nullptr, "UnwrapTitleKey"},
|
||||||
{19, nullptr, "LoadTitleKey"},
|
{19, nullptr, "LoadTitleKey"},
|
||||||
{20, nullptr, "UnwrapAesWrappedTitleKey"},
|
{20, nullptr, "PrepareEsCommonKey"},
|
||||||
{21, nullptr, "LockAesEngine"},
|
{21, nullptr, "AllocateAesKeyslot"},
|
||||||
{22, nullptr, "UnlockAesEngine"},
|
{22, nullptr, "DeallocateAesKeySlot"},
|
||||||
{23, nullptr, "GetSplWaitEvent"},
|
{23, nullptr, "GetAesKeyslotAvailableEvent"},
|
||||||
{24, nullptr, "SetSharedData"},
|
{24, nullptr, "SetBootReason"},
|
||||||
{25, nullptr, "GetSharedData"},
|
{25, nullptr, "GetBootReason"},
|
||||||
{26, nullptr, "ImportSslRsaKey"},
|
{26, nullptr, "DecryptAndStoreSslClientCertKey"},
|
||||||
{27, nullptr, "SecureExpModWithSslKey"},
|
{27, nullptr, "ModularExponentiateWithSslClientCertKey"},
|
||||||
{28, nullptr, "ImportEsRsaKey"},
|
{28, nullptr, "DecryptAndStoreDrmDeviceCertKey"},
|
||||||
{29, nullptr, "SecureExpModWithEsKey"},
|
{29, nullptr, "ModularExponentiateWithDrmDeviceCertKey"},
|
||||||
{30, nullptr, "EncryptManuRsaKeyForImport"},
|
{30, nullptr, "ReencryptDeviceUniqueData "},
|
||||||
{31, nullptr, "GetPackage2Hash"},
|
{31, nullptr, "PrepareEsArchiveKey"}, // This is also GetPackage2Hash?
|
||||||
|
{32, nullptr, "LoadPreparedAesKey"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
@ -90,6 +90,13 @@ public:
|
|||||||
: ServiceFramework("ISteadyClock"), clock_core{clock_core}, system{system} {
|
: ServiceFramework("ISteadyClock"), clock_core{clock_core}, system{system} {
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, &ISteadyClock::GetCurrentTimePoint, "GetCurrentTimePoint"},
|
{0, &ISteadyClock::GetCurrentTimePoint, "GetCurrentTimePoint"},
|
||||||
|
{2, nullptr, "GetTestOffset"},
|
||||||
|
{3, nullptr, "SetTestOffset"},
|
||||||
|
{100, nullptr, "GetRtcValue"},
|
||||||
|
{101, nullptr, "IsRtcResetDetected"},
|
||||||
|
{102, nullptr, "GetSetupResultValue"},
|
||||||
|
{200, nullptr, "GetInternalOffset"},
|
||||||
|
{201, nullptr, "SetInternalOffset"},
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ public:
|
|||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "GetDsEndpoint"},
|
{0, nullptr, "GetDsEndpoint"},
|
||||||
{1, nullptr, "GetSetupEvent"},
|
{1, nullptr, "GetSetupEvent"},
|
||||||
{2, nullptr, "Unknown"},
|
{2, nullptr, "Unknown2"},
|
||||||
{3, nullptr, "EnableInterface"},
|
{3, nullptr, "EnableInterface"},
|
||||||
{4, nullptr, "DisableInterface"},
|
{4, nullptr, "DisableInterface"},
|
||||||
{5, nullptr, "CtrlInPostBufferAsync"},
|
{5, nullptr, "CtrlInPostBufferAsync"},
|
||||||
@ -55,6 +55,7 @@ public:
|
|||||||
{9, nullptr, "SetBinaryObjectStore"},
|
{9, nullptr, "SetBinaryObjectStore"},
|
||||||
{10, nullptr, "Enable"},
|
{10, nullptr, "Enable"},
|
||||||
{11, nullptr, "Disable"},
|
{11, nullptr, "Disable"},
|
||||||
|
{12, nullptr, "Unknown12"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
@ -69,13 +70,13 @@ public:
|
|||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "Open"},
|
{0, nullptr, "Open"},
|
||||||
{1, nullptr, "Close"},
|
{1, nullptr, "Close"},
|
||||||
{2, nullptr, "Unknown1"},
|
{2, nullptr, "Unknown2"},
|
||||||
{3, nullptr, "Populate"},
|
{3, nullptr, "Populate"},
|
||||||
{4, nullptr, "PostBufferAsync"},
|
{4, nullptr, "PostBufferAsync"},
|
||||||
{5, nullptr, "GetXferReport"},
|
{5, nullptr, "GetXferReport"},
|
||||||
{6, nullptr, "PostBufferMultiAsync"},
|
{6, nullptr, "PostBufferMultiAsync"},
|
||||||
{7, nullptr, "Unknown3"},
|
{7, nullptr, "Unknown7"},
|
||||||
{8, nullptr, "Unknown4"},
|
{8, nullptr, "Unknown8"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
@ -88,13 +89,13 @@ public:
|
|||||||
explicit IClientIfSession() : ServiceFramework{"IClientIfSession"} {
|
explicit IClientIfSession() : ServiceFramework{"IClientIfSession"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "Unknown1"},
|
{0, nullptr, "Unknown0"},
|
||||||
{1, nullptr, "SetInterface"},
|
{1, nullptr, "SetInterface"},
|
||||||
{2, nullptr, "GetInterface"},
|
{2, nullptr, "GetInterface"},
|
||||||
{3, nullptr, "GetAlternateInterface"},
|
{3, nullptr, "GetAlternateInterface"},
|
||||||
{4, nullptr, "GetCurrentFrame"},
|
{4, nullptr, "GetCurrentFrame"},
|
||||||
{5, nullptr, "CtrlXferAsync"},
|
{5, nullptr, "CtrlXferAsync"},
|
||||||
{6, nullptr, "Unknown2"},
|
{6, nullptr, "Unknown6"},
|
||||||
{7, nullptr, "GetCtrlXferReport"},
|
{7, nullptr, "GetCtrlXferReport"},
|
||||||
{8, nullptr, "ResetDevice"},
|
{8, nullptr, "ResetDevice"},
|
||||||
{9, nullptr, "OpenUsbEp"},
|
{9, nullptr, "OpenUsbEp"},
|
||||||
@ -118,7 +119,7 @@ public:
|
|||||||
{5, nullptr, "DestroyInterfaceAvailableEvent"},
|
{5, nullptr, "DestroyInterfaceAvailableEvent"},
|
||||||
{6, nullptr, "GetInterfaceStateChangeEvent"},
|
{6, nullptr, "GetInterfaceStateChangeEvent"},
|
||||||
{7, nullptr, "AcquireUsbIf"},
|
{7, nullptr, "AcquireUsbIf"},
|
||||||
{8, nullptr, "Unknown1"},
|
{8, nullptr, "Unknown8"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
@ -179,8 +180,8 @@ public:
|
|||||||
{4, nullptr, "GetFwRevision"},
|
{4, nullptr, "GetFwRevision"},
|
||||||
{5, nullptr, "GetManufacturerId"},
|
{5, nullptr, "GetManufacturerId"},
|
||||||
{6, nullptr, "GetDeviceId"},
|
{6, nullptr, "GetDeviceId"},
|
||||||
{7, nullptr, "Unknown1"},
|
{7, nullptr, "Unknown7"},
|
||||||
{8, nullptr, "Unknown2"},
|
{8, nullptr, "Unknown8"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
@ -215,12 +216,12 @@ public:
|
|||||||
explicit USB_PM() : ServiceFramework{"usb:pm"} {
|
explicit USB_PM() : ServiceFramework{"usb:pm"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "Unknown1"},
|
{0, nullptr, "Unknown0"},
|
||||||
{1, nullptr, "Unknown2"},
|
{1, nullptr, "Unknown1"},
|
||||||
{2, nullptr, "Unknown3"},
|
{2, nullptr, "Unknown2"},
|
||||||
{3, nullptr, "Unknown4"},
|
{3, nullptr, "Unknown3"},
|
||||||
{4, nullptr, "Unknown5"},
|
{4, nullptr, "Unknown4"},
|
||||||
{5, nullptr, "Unknown6"},
|
{5, nullptr, "Unknown5"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
@ -698,6 +698,7 @@ public:
|
|||||||
{3215, nullptr, "SetDisplayGamma"},
|
{3215, nullptr, "SetDisplayGamma"},
|
||||||
{3216, nullptr, "GetDisplayCmuLuma"},
|
{3216, nullptr, "GetDisplayCmuLuma"},
|
||||||
{3217, nullptr, "SetDisplayCmuLuma"},
|
{3217, nullptr, "SetDisplayCmuLuma"},
|
||||||
|
{6013, nullptr, "GetLayerPresentationSubmissionTimestamps"},
|
||||||
{8225, nullptr, "GetSharedBufferMemoryHandleId"},
|
{8225, nullptr, "GetSharedBufferMemoryHandleId"},
|
||||||
{8250, nullptr, "OpenSharedLayer"},
|
{8250, nullptr, "OpenSharedLayer"},
|
||||||
{8251, nullptr, "CloseSharedLayer"},
|
{8251, nullptr, "CloseSharedLayer"},
|
||||||
@ -783,6 +784,7 @@ public:
|
|||||||
{2300, nullptr, "AcquireLayerTexturePresentingEvent"},
|
{2300, nullptr, "AcquireLayerTexturePresentingEvent"},
|
||||||
{2301, nullptr, "ReleaseLayerTexturePresentingEvent"},
|
{2301, nullptr, "ReleaseLayerTexturePresentingEvent"},
|
||||||
{2302, nullptr, "GetDisplayHotplugEvent"},
|
{2302, nullptr, "GetDisplayHotplugEvent"},
|
||||||
|
{2303, nullptr, "GetDisplayModeChangedEvent"},
|
||||||
{2402, nullptr, "GetDisplayHotplugState"},
|
{2402, nullptr, "GetDisplayHotplugState"},
|
||||||
{2501, nullptr, "GetCompositorErrorInfo"},
|
{2501, nullptr, "GetCompositorErrorInfo"},
|
||||||
{2601, nullptr, "GetDisplayErrorEvent"},
|
{2601, nullptr, "GetDisplayErrorEvent"},
|
||||||
|
@ -12,6 +12,7 @@ VI_U::VI_U(std::shared_ptr<NVFlinger::NVFlinger> nv_flinger)
|
|||||||
: ServiceFramework{"vi:u"}, nv_flinger{std::move(nv_flinger)} {
|
: ServiceFramework{"vi:u"}, nv_flinger{std::move(nv_flinger)} {
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, &VI_U::GetDisplayService, "GetDisplayService"},
|
{0, &VI_U::GetDisplayService, "GetDisplayService"},
|
||||||
|
{1, nullptr, "GetDisplayServiceWithProxyNameExchange"},
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
@ -15,34 +15,37 @@ public:
|
|||||||
explicit WLANInfra() : ServiceFramework{"wlan:inf"} {
|
explicit WLANInfra() : ServiceFramework{"wlan:inf"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "Unknown1"},
|
{0, nullptr, "OpenMode"},
|
||||||
{1, nullptr, "Unknown2"},
|
{1, nullptr, "CloseMode"},
|
||||||
{2, nullptr, "GetMacAddress"},
|
{2, nullptr, "GetMacAddress"},
|
||||||
{3, nullptr, "StartScan"},
|
{3, nullptr, "StartScan"},
|
||||||
{4, nullptr, "StopScan"},
|
{4, nullptr, "StopScan"},
|
||||||
{5, nullptr, "Connect"},
|
{5, nullptr, "Connect"},
|
||||||
{6, nullptr, "CancelConnect"},
|
{6, nullptr, "CancelConnect"},
|
||||||
{7, nullptr, "Disconnect"},
|
{7, nullptr, "Disconnect"},
|
||||||
{8, nullptr, "Unknown3"},
|
{8, nullptr, "GetConnectionEvent"},
|
||||||
{9, nullptr, "Unknown4"},
|
{9, nullptr, "GetConnectionStatus"},
|
||||||
{10, nullptr, "GetState"},
|
{10, nullptr, "GetState"},
|
||||||
{11, nullptr, "GetScanResult"},
|
{11, nullptr, "GetScanResult"},
|
||||||
{12, nullptr, "GetRssi"},
|
{12, nullptr, "GetRssi"},
|
||||||
{13, nullptr, "ChangeRxAntenna"},
|
{13, nullptr, "ChangeRxAntenna"},
|
||||||
{14, nullptr, "Unknown5"},
|
{14, nullptr, "GetFwVersion"},
|
||||||
{15, nullptr, "Unknown6"},
|
{15, nullptr, "RequestSleep"},
|
||||||
{16, nullptr, "RequestWakeUp"},
|
{16, nullptr, "RequestWakeUp"},
|
||||||
{17, nullptr, "RequestIfUpDown"},
|
{17, nullptr, "RequestIfUpDown"},
|
||||||
{18, nullptr, "Unknown7"},
|
{18, nullptr, "Unknown18"},
|
||||||
{19, nullptr, "Unknown8"},
|
{19, nullptr, "Unknown19"},
|
||||||
{20, nullptr, "Unknown9"},
|
{20, nullptr, "Unknown20"},
|
||||||
{21, nullptr, "Unknown10"},
|
{21, nullptr, "Unknown21"},
|
||||||
{22, nullptr, "Unknown11"},
|
{22, nullptr, "Unknown22"},
|
||||||
{23, nullptr, "Unknown12"},
|
{23, nullptr, "Unknown23"},
|
||||||
{24, nullptr, "Unknown13"},
|
{24, nullptr, "Unknown24"},
|
||||||
{25, nullptr, "Unknown14"},
|
{25, nullptr, "Unknown25"},
|
||||||
{26, nullptr, "Unknown15"},
|
{26, nullptr, "Unknown26"},
|
||||||
{27, nullptr, "Unknown16"},
|
{27, nullptr, "Unknown27"},
|
||||||
|
{28, nullptr, "Unknown28"},
|
||||||
|
{29, nullptr, "Unknown29"},
|
||||||
|
{30, nullptr, "Unknown30"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
@ -55,12 +58,12 @@ public:
|
|||||||
explicit WLANLocal() : ServiceFramework{"wlan:lcl"} {
|
explicit WLANLocal() : ServiceFramework{"wlan:lcl"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "Unknown1"},
|
{0, nullptr, "Unknown0"},
|
||||||
{1, nullptr, "Unknown2"},
|
{1, nullptr, "Unknown1"},
|
||||||
{2, nullptr, "Unknown3"},
|
{2, nullptr, "Unknown2"},
|
||||||
{3, nullptr, "Unknown4"},
|
{3, nullptr, "Unknown3"},
|
||||||
{4, nullptr, "Unknown5"},
|
{4, nullptr, "Unknown4"},
|
||||||
{5, nullptr, "Unknown6"},
|
{5, nullptr, "Unknown5"},
|
||||||
{6, nullptr, "GetMacAddress"},
|
{6, nullptr, "GetMacAddress"},
|
||||||
{7, nullptr, "CreateBss"},
|
{7, nullptr, "CreateBss"},
|
||||||
{8, nullptr, "DestroyBss"},
|
{8, nullptr, "DestroyBss"},
|
||||||
@ -72,38 +75,42 @@ public:
|
|||||||
{14, nullptr, "CancelJoin"},
|
{14, nullptr, "CancelJoin"},
|
||||||
{15, nullptr, "Disconnect"},
|
{15, nullptr, "Disconnect"},
|
||||||
{16, nullptr, "SetBeaconLostCount"},
|
{16, nullptr, "SetBeaconLostCount"},
|
||||||
{17, nullptr, "Unknown7"},
|
{17, nullptr, "Unknown17"},
|
||||||
{18, nullptr, "Unknown8"},
|
{18, nullptr, "Unknown18"},
|
||||||
{19, nullptr, "Unknown9"},
|
{19, nullptr, "Unknown19"},
|
||||||
{20, nullptr, "GetBssIndicationEvent"},
|
{20, nullptr, "GetBssIndicationEvent"},
|
||||||
{21, nullptr, "GetBssIndicationInfo"},
|
{21, nullptr, "GetBssIndicationInfo"},
|
||||||
{22, nullptr, "GetState"},
|
{22, nullptr, "GetState"},
|
||||||
{23, nullptr, "GetAllowedChannels"},
|
{23, nullptr, "GetAllowedChannels"},
|
||||||
{24, nullptr, "AddIe"},
|
{24, nullptr, "AddIe"},
|
||||||
{25, nullptr, "DeleteIe"},
|
{25, nullptr, "DeleteIe"},
|
||||||
{26, nullptr, "Unknown10"},
|
{26, nullptr, "Unknown26"},
|
||||||
{27, nullptr, "Unknown11"},
|
{27, nullptr, "Unknown27"},
|
||||||
{28, nullptr, "CreateRxEntry"},
|
{28, nullptr, "CreateRxEntry"},
|
||||||
{29, nullptr, "DeleteRxEntry"},
|
{29, nullptr, "DeleteRxEntry"},
|
||||||
{30, nullptr, "Unknown12"},
|
{30, nullptr, "Unknown30"},
|
||||||
{31, nullptr, "Unknown13"},
|
{31, nullptr, "Unknown31"},
|
||||||
{32, nullptr, "AddMatchingDataToRxEntry"},
|
{32, nullptr, "AddMatchingDataToRxEntry"},
|
||||||
{33, nullptr, "RemoveMatchingDataFromRxEntry"},
|
{33, nullptr, "RemoveMatchingDataFromRxEntry"},
|
||||||
{34, nullptr, "GetScanResult"},
|
{34, nullptr, "GetScanResult"},
|
||||||
{35, nullptr, "Unknown14"},
|
{35, nullptr, "Unknown35"},
|
||||||
{36, nullptr, "SetActionFrameWithBeacon"},
|
{36, nullptr, "SetActionFrameWithBeacon"},
|
||||||
{37, nullptr, "CancelActionFrameWithBeacon"},
|
{37, nullptr, "CancelActionFrameWithBeacon"},
|
||||||
{38, nullptr, "CreateRxEntryForActionFrame"},
|
{38, nullptr, "CreateRxEntryForActionFrame"},
|
||||||
{39, nullptr, "DeleteRxEntryForActionFrame"},
|
{39, nullptr, "DeleteRxEntryForActionFrame"},
|
||||||
{40, nullptr, "Unknown15"},
|
{40, nullptr, "Unknown40"},
|
||||||
{41, nullptr, "Unknown16"},
|
{41, nullptr, "Unknown41"},
|
||||||
{42, nullptr, "CancelGetActionFrame"},
|
{42, nullptr, "CancelGetActionFrame"},
|
||||||
{43, nullptr, "GetRssi"},
|
{43, nullptr, "GetRssi"},
|
||||||
{44, nullptr, "Unknown17"},
|
{44, nullptr, "Unknown44"},
|
||||||
{45, nullptr, "Unknown18"},
|
{45, nullptr, "Unknown45"},
|
||||||
{46, nullptr, "Unknown19"},
|
{46, nullptr, "Unknown46"},
|
||||||
{47, nullptr, "Unknown20"},
|
{47, nullptr, "Unknown47"},
|
||||||
{48, nullptr, "Unknown21"},
|
{48, nullptr, "Unknown48"},
|
||||||
|
{49, nullptr, "Unknown49"},
|
||||||
|
{50, nullptr, "Unknown50"},
|
||||||
|
{51, nullptr, "Unknown51"},
|
||||||
|
{52, nullptr, "Unknown52"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
@ -142,18 +149,19 @@ public:
|
|||||||
explicit WLANSocketManager() : ServiceFramework{"wlan:soc"} {
|
explicit WLANSocketManager() : ServiceFramework{"wlan:soc"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "Unknown1"},
|
{0, nullptr, "Unknown0"},
|
||||||
{1, nullptr, "Unknown2"},
|
{1, nullptr, "Unknown1"},
|
||||||
{2, nullptr, "Unknown3"},
|
{2, nullptr, "Unknown2"},
|
||||||
{3, nullptr, "Unknown4"},
|
{3, nullptr, "Unknown3"},
|
||||||
{4, nullptr, "Unknown5"},
|
{4, nullptr, "Unknown4"},
|
||||||
{5, nullptr, "Unknown6"},
|
{5, nullptr, "Unknown5"},
|
||||||
{6, nullptr, "GetMacAddress"},
|
{6, nullptr, "GetMacAddress"},
|
||||||
{7, nullptr, "SwitchTsfTimerFunction"},
|
{7, nullptr, "SwitchTsfTimerFunction"},
|
||||||
{8, nullptr, "Unknown7"},
|
{8, nullptr, "Unknown8"},
|
||||||
{9, nullptr, "Unknown8"},
|
{9, nullptr, "Unknown9"},
|
||||||
{10, nullptr, "Unknown9"},
|
{10, nullptr, "Unknown10"},
|
||||||
{11, nullptr, "Unknown10"},
|
{11, nullptr, "Unknown11"},
|
||||||
|
{12, nullptr, "Unknown12"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user