aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Services
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.HLE/HOS/Services')
-rw-r--r--Ryujinx.HLE/HOS/Services/Lm/ILogService.cs19
-rw-r--r--Ryujinx.HLE/HOS/Services/Lm/LogService/ILogger.cs109
-rw-r--r--Ryujinx.HLE/HOS/Services/Lm/LogService/Types/LmLogField.cs18
-rw-r--r--Ryujinx.HLE/HOS/Services/Lm/LogService/Types/LmLogLevel.cs11
-rw-r--r--Ryujinx.HLE/HOS/Services/Prepo/IPrepoService.cs182
-rw-r--r--Ryujinx.HLE/HOS/Services/Prepo/ResultCode.cs15
-rw-r--r--Ryujinx.HLE/HOS/Services/Prepo/Types/PrepoServicePermissionLevel.cs10
-rw-r--r--Ryujinx.HLE/HOS/Services/Sm/IUserInterface.cs2
8 files changed, 1 insertions, 365 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Lm/ILogService.cs b/Ryujinx.HLE/HOS/Services/Lm/ILogService.cs
deleted file mode 100644
index 0976431b..00000000
--- a/Ryujinx.HLE/HOS/Services/Lm/ILogService.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using Ryujinx.HLE.HOS.Services.Lm.LogService;
-
-namespace Ryujinx.HLE.HOS.Services.Lm
-{
- [Service("lm")]
- class ILogService : IpcService
- {
- public ILogService(ServiceCtx context) { }
-
- [CommandHipc(0)]
- // Initialize(u64, pid) -> object<nn::lm::ILogger>
- public ResultCode Initialize(ServiceCtx context)
- {
- MakeObject(context, new ILogger());
-
- return ResultCode.Success;
- }
- }
-} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Services/Lm/LogService/ILogger.cs b/Ryujinx.HLE/HOS/Services/Lm/LogService/ILogger.cs
deleted file mode 100644
index 3181668f..00000000
--- a/Ryujinx.HLE/HOS/Services/Lm/LogService/ILogger.cs
+++ /dev/null
@@ -1,109 +0,0 @@
-using Ryujinx.Common.Logging;
-using System.IO;
-using System.Text;
-
-namespace Ryujinx.HLE.HOS.Services.Lm.LogService
-{
- class ILogger : IpcService
- {
- public ILogger() { }
-
- [CommandHipc(0)]
- // Log(buffer<unknown, 0x21>)
- public ResultCode Log(ServiceCtx context)
- {
- Logger.Guest?.Print(LogClass.ServiceLm, LogImpl(context));
-
- return ResultCode.Success;
- }
-
- private string LogImpl(ServiceCtx context)
- {
- (ulong bufPos, ulong bufSize) = context.Request.GetBufferType0x21();
-
- byte[] logBuffer = new byte[bufSize];
-
- context.Memory.Read(bufPos, logBuffer);
-
- using MemoryStream ms = new MemoryStream(logBuffer);
-
- BinaryReader reader = new BinaryReader(ms);
-
- long pid = reader.ReadInt64();
- long threadContext = reader.ReadInt64();
- short flags = reader.ReadInt16();
- byte level = reader.ReadByte();
- byte verbosity = reader.ReadByte();
- int payloadLength = reader.ReadInt32();
-
- StringBuilder sb = new StringBuilder();
-
- sb.AppendLine($"Guest Log:\n Log level: {(LmLogLevel)level}");
-
- while (ms.Position < ms.Length)
- {
- int type = ReadEncodedInt(reader);
- int size = ReadEncodedInt(reader);
-
- LmLogField field = (LmLogField)type;
-
- string fieldStr = string.Empty;
-
- if (field == LmLogField.Start)
- {
- reader.ReadBytes(size);
-
- continue;
- }
- else if (field == LmLogField.Stop)
- {
- break;
- }
- else if (field == LmLogField.Line)
- {
- fieldStr = $"{field}: {reader.ReadInt32()}";
- }
- else if (field == LmLogField.DropCount)
- {
- fieldStr = $"{field}: {reader.ReadInt64()}";
- }
- else if (field == LmLogField.Time)
- {
- fieldStr = $"{field}: {reader.ReadInt64()}s";
- }
- else if (field < LmLogField.Count)
- {
- fieldStr = $"{field}: '{Encoding.UTF8.GetString(reader.ReadBytes(size)).TrimEnd()}'";
- }
- else
- {
- fieldStr = $"Field{field}: '{Encoding.UTF8.GetString(reader.ReadBytes(size)).TrimEnd()}'";
- }
-
- sb.AppendLine($" {fieldStr}");
- }
-
- return sb.ToString();
- }
-
- private static int ReadEncodedInt(BinaryReader reader)
- {
- int result = 0;
- int position = 0;
-
- byte encoded;
-
- do
- {
- encoded = reader.ReadByte();
-
- result += (encoded & 0x7F) << (7 * position);
-
- position++;
-
- } while ((encoded & 0x80) != 0);
-
- return result;
- }
- }
-} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Services/Lm/LogService/Types/LmLogField.cs b/Ryujinx.HLE/HOS/Services/Lm/LogService/Types/LmLogField.cs
deleted file mode 100644
index 3f93e167..00000000
--- a/Ryujinx.HLE/HOS/Services/Lm/LogService/Types/LmLogField.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-namespace Ryujinx.HLE.HOS.Services.Lm.LogService
-{
- enum LmLogField
- {
- Start = 0,
- Stop = 1,
- Message = 2,
- Line = 3,
- Filename = 4,
- Function = 5,
- Module = 6,
- Thread = 7,
- DropCount = 8,
- Time = 9,
- ProgramName = 10,
- Count
- }
-} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Services/Lm/LogService/Types/LmLogLevel.cs b/Ryujinx.HLE/HOS/Services/Lm/LogService/Types/LmLogLevel.cs
deleted file mode 100644
index ee1a8396..00000000
--- a/Ryujinx.HLE/HOS/Services/Lm/LogService/Types/LmLogLevel.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-namespace Ryujinx.HLE.HOS.Services.Lm.LogService
-{
- enum LmLogLevel
- {
- Trace,
- Info,
- Warning,
- Error,
- Critical
- }
-} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Services/Prepo/IPrepoService.cs b/Ryujinx.HLE/HOS/Services/Prepo/IPrepoService.cs
deleted file mode 100644
index 019626f1..00000000
--- a/Ryujinx.HLE/HOS/Services/Prepo/IPrepoService.cs
+++ /dev/null
@@ -1,182 +0,0 @@
-using MsgPack;
-using MsgPack.Serialization;
-using Ryujinx.Common;
-using Ryujinx.Common.Logging;
-using Ryujinx.Common.Utilities;
-using Ryujinx.HLE.HOS.Services.Account.Acc;
-using Ryujinx.HLE.Utilities;
-using System;
-using System.Text;
-
-namespace Ryujinx.HLE.HOS.Services.Prepo
-{
- [Service("prepo:a", PrepoServicePermissionLevel.Admin)] // 1.0.0-5.1.0
- [Service("prepo:a2", PrepoServicePermissionLevel.Admin)] // 6.0.0+
- [Service("prepo:m", PrepoServicePermissionLevel.Manager)]
- [Service("prepo:u", PrepoServicePermissionLevel.User)]
- [Service("prepo:s", PrepoServicePermissionLevel.System)]
- class IPrepoService : IpcService
- {
- private PrepoServicePermissionLevel _permission;
- private ulong _systemSessionId;
-
- public IPrepoService(ServiceCtx context, PrepoServicePermissionLevel permission)
- {
- _permission = permission;
- }
-
- [CommandHipc(10100)] // 1.0.0-5.1.0
- [CommandHipc(10102)] // 6.0.0-9.2.0
- [CommandHipc(10104)] // 10.0.0+
- // SaveReport(u64, pid, buffer<u8, 9>, buffer<bytes, 5>)
- public ResultCode SaveReport(ServiceCtx context)
- {
- if ((_permission & PrepoServicePermissionLevel.User) == 0)
- {
- return ResultCode.PermissionDenied;
- }
-
- // We don't care about the differences since we don't use the play report.
- return ProcessReport(context, withUserID: false);
- }
-
- [CommandHipc(10101)] // 1.0.0-5.1.0
- [CommandHipc(10103)] // 6.0.0-9.2.0
- [CommandHipc(10105)] // 10.0.0+
- // SaveReportWithUser(nn::account::Uid, u64, pid, buffer<u8, 9>, buffer<bytes, 5>)
- public ResultCode SaveReportWithUser(ServiceCtx context)
- {
- if ((_permission & PrepoServicePermissionLevel.User) == 0)
- {
- return ResultCode.PermissionDenied;
- }
-
- // We don't care about the differences since we don't use the play report.
- return ProcessReport(context, withUserID: true);
- }
-
- [CommandHipc(10200)]
- // RequestImmediateTransmission()
- public ResultCode RequestImmediateTransmission(ServiceCtx context)
- {
- // It signals an event of nn::prepo::detail::service::core::TransmissionStatusManager that requests the transmission of the report.
- // Since we don't use reports it's fine to do nothing.
-
- return ResultCode.Success;
- }
-
- [CommandHipc(10300)]
- // GetTransmissionStatus() -> u32
- public ResultCode GetTransmissionStatus(ServiceCtx context)
- {
- // It returns the transmission result of nn::prepo::detail::service::core::TransmissionStatusManager.
- // Since we don't use reports it's fine to return ResultCode.Success.
- context.ResponseData.Write((int)ResultCode.Success);
-
- return ResultCode.Success;
- }
-
- [CommandHipc(10400)] // 9.0.0+
- // GetSystemSessionId() -> u64
- public ResultCode GetSystemSessionId(ServiceCtx context)
- {
- if ((_permission & PrepoServicePermissionLevel.User) == 0)
- {
- return ResultCode.PermissionDenied;
- }
-
- if (_systemSessionId == 0)
- {
- byte[] randomBuffer = new byte[8];
-
- Random.Shared.NextBytes(randomBuffer);
-
- _systemSessionId = BitConverter.ToUInt64(randomBuffer, 0);
- }
-
- context.ResponseData.Write(_systemSessionId);
-
- return ResultCode.Success;
- }
-
- [CommandHipc(20100)]
- // SaveSystemReport(u64, pid, buffer<u8, 9>, buffer<bytes, 5>)
- public ResultCode SaveSystemReport(ServiceCtx context)
- {
- if ((_permission & PrepoServicePermissionLevel.System) != 0)
- {
- return ResultCode.PermissionDenied;
- }
-
- // We don't care about the differences since we don't use the play report.
- return ProcessReport(context, withUserID: false);
- }
-
- [CommandHipc(20101)]
- // SaveSystemReportWithUser(nn::account::Uid, u64, pid, buffer<u8, 9>, buffer<bytes, 5>)
- public ResultCode SaveSystemReportWithUser(ServiceCtx context)
- {
- if ((_permission & PrepoServicePermissionLevel.System) != 0)
- {
- return ResultCode.PermissionDenied;
- }
-
- // We don't care about the differences since we don't use the play report.
- return ProcessReport(context, withUserID: true);
- }
-
- private ResultCode ProcessReport(ServiceCtx context, bool withUserID)
- {
- UserId userId = withUserID ? context.RequestData.ReadStruct<UserId>() : new UserId();
- string gameRoom = StringUtils.ReadUtf8String(context);
-
- if (withUserID)
- {
- if (userId.IsNull)
- {
- return ResultCode.InvalidArgument;
- }
- }
-
- if (gameRoom == string.Empty)
- {
- return ResultCode.InvalidState;
- }
-
- ulong inputPosition = context.Request.SendBuff[0].Position;
- ulong inputSize = context.Request.SendBuff[0].Size;
-
- if (inputSize == 0)
- {
- return ResultCode.InvalidBufferSize;
- }
-
- byte[] inputBuffer = new byte[inputSize];
-
- context.Memory.Read(inputPosition, inputBuffer);
-
- Logger.Info?.Print(LogClass.ServicePrepo, ReadReportBuffer(inputBuffer, gameRoom, userId));
-
- return ResultCode.Success;
- }
-
- private string ReadReportBuffer(byte[] buffer, string room, UserId userId)
- {
- StringBuilder builder = new StringBuilder();
- MessagePackObject deserializedReport = MessagePackSerializer.UnpackMessagePackObject(buffer);
-
- builder.AppendLine();
- builder.AppendLine("PlayReport log:");
-
- if (!userId.IsNull)
- {
- builder.AppendLine($" UserId: {userId}");
- }
-
- builder.AppendLine($" Room: {room}");
- builder.AppendLine($" Report: {MessagePackObjectFormatter.Format(deserializedReport)}");
-
- return builder.ToString();
- }
- }
-} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Services/Prepo/ResultCode.cs b/Ryujinx.HLE/HOS/Services/Prepo/ResultCode.cs
deleted file mode 100644
index 3199e270..00000000
--- a/Ryujinx.HLE/HOS/Services/Prepo/ResultCode.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace Ryujinx.HLE.HOS.Services.Prepo
-{
- enum ResultCode
- {
- ModuleId = 129,
- ErrorCodeShift = 9,
-
- Success = 0,
-
- InvalidArgument = (1 << ErrorCodeShift) | ModuleId,
- InvalidState = (5 << ErrorCodeShift) | ModuleId,
- InvalidBufferSize = (9 << ErrorCodeShift) | ModuleId,
- PermissionDenied = (90 << ErrorCodeShift) | ModuleId
- }
-} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Services/Prepo/Types/PrepoServicePermissionLevel.cs b/Ryujinx.HLE/HOS/Services/Prepo/Types/PrepoServicePermissionLevel.cs
deleted file mode 100644
index 35774707..00000000
--- a/Ryujinx.HLE/HOS/Services/Prepo/Types/PrepoServicePermissionLevel.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace Ryujinx.HLE.HOS.Services.Prepo
-{
- enum PrepoServicePermissionLevel
- {
- Admin = -1,
- User = 1,
- System = 2,
- Manager = 6
- }
-} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Services/Sm/IUserInterface.cs b/Ryujinx.HLE/HOS/Services/Sm/IUserInterface.cs
index 86031a70..73652da4 100644
--- a/Ryujinx.HLE/HOS/Services/Sm/IUserInterface.cs
+++ b/Ryujinx.HLE/HOS/Services/Sm/IUserInterface.cs
@@ -180,7 +180,7 @@ namespace Ryujinx.HLE.HOS.Services.Sm
return ResultCode.InvalidName;
}
- Logger.Info?.Print(LogClass.ServiceSm, $"Register \"{name}\".");
+ Logger.Debug?.Print(LogClass.ServiceSm, $"Register \"{name}\".");
KPort port = new KPort(context.Device.System.KernelContext, maxSessions, isLight, null);