From 4d2c8e2a442d2859a75c6c9162a192a0a9a221be Mon Sep 17 00:00:00 2001 From: Ac_K Date: Fri, 13 Jan 2023 01:50:14 +0100 Subject: Prepo: Fix SaveSystemReport* IPC definitions (#4278) * Prepo: Fix SaveSystemReport IPC definitions * Follow original code * Fix args index in HipcGenerator * Addresses feedback * oops --- Ryujinx.Horizon/Sdk/Account/Uid.cs | 2 +- Ryujinx.Horizon/Sdk/Ncm/ApplicationId.cs | 52 ++++++++++++++++++++++++++++++ Ryujinx.Horizon/Sdk/Prepo/IPrepoService.cs | 4 +-- Ryujinx.Horizon/Sdk/Sm/ServiceName.cs | 2 +- 4 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 Ryujinx.Horizon/Sdk/Ncm/ApplicationId.cs (limited to 'Ryujinx.Horizon/Sdk') diff --git a/Ryujinx.Horizon/Sdk/Account/Uid.cs b/Ryujinx.Horizon/Sdk/Account/Uid.cs index a0a39978..5aad0463 100644 --- a/Ryujinx.Horizon/Sdk/Account/Uid.cs +++ b/Ryujinx.Horizon/Sdk/Account/Uid.cs @@ -6,7 +6,7 @@ using System.Runtime.InteropServices; namespace Ryujinx.Horizon.Sdk.Account { [StructLayout(LayoutKind.Sequential)] - public readonly record struct Uid + readonly record struct Uid { public readonly long High; public readonly long Low; diff --git a/Ryujinx.Horizon/Sdk/Ncm/ApplicationId.cs b/Ryujinx.Horizon/Sdk/Ncm/ApplicationId.cs new file mode 100644 index 00000000..37b4cbfb --- /dev/null +++ b/Ryujinx.Horizon/Sdk/Ncm/ApplicationId.cs @@ -0,0 +1,52 @@ +namespace Ryujinx.Horizon.Sdk.Ncm +{ + readonly struct ApplicationId + { + public readonly ulong Id; + + public static int Length => sizeof(ulong); + + public static ApplicationId First => new(0x0100000000010000); + + public static ApplicationId Last => new(0x01FFFFFFFFFFFFFF); + + public static ApplicationId Invalid => new(0); + + public bool IsValid => Id >= First.Id && Id <= Last.Id; + + public ApplicationId(ulong id) + { + Id = id; + } + + public override bool Equals(object obj) + { + return obj is ApplicationId applicationId && applicationId.Equals(this); + } + + public bool Equals(ApplicationId other) + { + return other.Id == Id; + } + + public override int GetHashCode() + { + return Id.GetHashCode(); + } + + public static bool operator ==(ApplicationId lhs, ApplicationId rhs) + { + return lhs.Equals(rhs); + } + + public static bool operator !=(ApplicationId lhs, ApplicationId rhs) + { + return !lhs.Equals(rhs); + } + + public override string ToString() + { + return $"0x{Id:x}"; + } + } +} \ No newline at end of file diff --git a/Ryujinx.Horizon/Sdk/Prepo/IPrepoService.cs b/Ryujinx.Horizon/Sdk/Prepo/IPrepoService.cs index f61ee61b..042cb400 100644 --- a/Ryujinx.Horizon/Sdk/Prepo/IPrepoService.cs +++ b/Ryujinx.Horizon/Sdk/Prepo/IPrepoService.cs @@ -12,8 +12,8 @@ namespace Ryujinx.Horizon.Sdk.Prepo Result RequestImmediateTransmission(); Result GetTransmissionStatus(out int status); Result GetSystemSessionId(out ulong systemSessionId); - Result SaveSystemReport(ReadOnlySpan gameRoomBuffer, ReadOnlySpan reportBuffer, ulong pid); - Result SaveSystemReportWithUser(Uid userId, ReadOnlySpan gameRoomBuffer, ReadOnlySpan reportBuffer, ulong pid); + Result SaveSystemReport(ReadOnlySpan gameRoomBuffer, Ncm.ApplicationId applicationId, ReadOnlySpan reportBuffer); + Result SaveSystemReportWithUser(Uid userId, ReadOnlySpan gameRoomBuffer, Ncm.ApplicationId applicationId, ReadOnlySpan reportBuffer); Result IsUserAgreementCheckEnabled(out bool enabled); Result SetUserAgreementCheckEnabled(bool enabled); } diff --git a/Ryujinx.Horizon/Sdk/Sm/ServiceName.cs b/Ryujinx.Horizon/Sdk/Sm/ServiceName.cs index dbb30078..9b7fae3f 100644 --- a/Ryujinx.Horizon/Sdk/Sm/ServiceName.cs +++ b/Ryujinx.Horizon/Sdk/Sm/ServiceName.cs @@ -8,7 +8,7 @@ namespace Ryujinx.Horizon.Sdk.Sm { public static ServiceName Invalid { get; } = new ServiceName(0); - public bool IsInvalid => Packed == 0; + public bool IsValid => Packed != 0; public int Length => sizeof(ulong); -- cgit v1.2.3