diff options
Diffstat (limited to 'Ryujinx.HLE/HOS/Services')
-rw-r--r-- | Ryujinx.HLE/HOS/Services/Lm/ILogService.cs | 19 | ||||
-rw-r--r-- | Ryujinx.HLE/HOS/Services/Lm/LogService/ILogger.cs | 109 | ||||
-rw-r--r-- | Ryujinx.HLE/HOS/Services/Lm/LogService/Types/LmLogField.cs | 18 | ||||
-rw-r--r-- | Ryujinx.HLE/HOS/Services/Lm/LogService/Types/LmLogLevel.cs | 11 | ||||
-rw-r--r-- | Ryujinx.HLE/HOS/Services/Prepo/IPrepoService.cs | 182 | ||||
-rw-r--r-- | Ryujinx.HLE/HOS/Services/Prepo/ResultCode.cs | 15 | ||||
-rw-r--r-- | Ryujinx.HLE/HOS/Services/Prepo/Types/PrepoServicePermissionLevel.cs | 10 | ||||
-rw-r--r-- | Ryujinx.HLE/HOS/Services/Sm/IUserInterface.cs | 2 |
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); |