diff options
author | Ac_K <Acoustik666@gmail.com> | 2020-11-19 23:56:23 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-20 09:56:23 +1100 |
commit | c2356a7653d46ad2e3320dfd0f7816d63f8ff1a7 (patch) | |
tree | c6d467773821aecb04d564d32bf56a94bac370fe /Ryujinx.HLE/HOS/Services | |
parent | f8f23bf8999f5e4e2ead01b797c31353267ce815 (diff) |
olsc: Add service olsc:u and stub some calls (#1734)
Diffstat (limited to 'Ryujinx.HLE/HOS/Services')
-rw-r--r-- | Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForApplication.cs | 53 | ||||
-rw-r--r-- | Ryujinx.HLE/HOS/Services/Olsc/ResultCode.cs | 13 |
2 files changed, 66 insertions, 0 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForApplication.cs b/Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForApplication.cs new file mode 100644 index 00000000..757ed7e2 --- /dev/null +++ b/Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForApplication.cs @@ -0,0 +1,53 @@ +using Ryujinx.Common; +using Ryujinx.Common.Logging; +using Ryujinx.HLE.HOS.Services.Account.Acc; + +namespace Ryujinx.HLE.HOS.Services.Olsc +{ + [Service("olsc:u")] // 10.0.0+ + class IOlscServiceForApplication : IpcService + { + private bool _initialized; + + public IOlscServiceForApplication(ServiceCtx context) { } + + [Command(0)] + // Initialize(pid) + public ResultCode Initialize(ServiceCtx context) + { + // NOTE: Service call arp:r GetApplicationInstanceUnregistrationNotifier with the pid and initialize some internal struct. + // Since we will not support online savedata backup. It's fine to stub it for now. + + _initialized = true; + + Logger.Stub?.PrintStub(LogClass.ServiceOlsc); + + return ResultCode.Success; + } + + [Command(14)] + // SetSaveDataBackupSettingEnabled(nn::account::Uid, bool) + public ResultCode SetSaveDataBackupSettingEnabled(ServiceCtx context) + { + UserId userId = context.RequestData.ReadStruct<UserId>(); + ulong saveDataBackupSettingEnabled = context.RequestData.ReadUInt64(); + + if (!_initialized) + { + return ResultCode.NotInitialized; + } + + if (userId.IsNull) + { + return ResultCode.NullArgument; + } + + // NOTE: Service store the UserId and the boolean in an internal SaveDataBackupSettingDatabase object. + // Since we will not support online savedata backup. It's fine to stub it for now. + + Logger.Stub?.PrintStub(LogClass.ServiceOlsc, new { userId, saveDataBackupSettingEnabled }); + + return ResultCode.Success; + } + } +}
\ No newline at end of file diff --git a/Ryujinx.HLE/HOS/Services/Olsc/ResultCode.cs b/Ryujinx.HLE/HOS/Services/Olsc/ResultCode.cs new file mode 100644 index 00000000..141d1ae9 --- /dev/null +++ b/Ryujinx.HLE/HOS/Services/Olsc/ResultCode.cs @@ -0,0 +1,13 @@ +namespace Ryujinx.HLE.HOS.Services.Olsc +{ + enum ResultCode + { + ModuleId = 179, + ErrorCodeShift = 9, + + Success = 0, + + NullArgument = (100 << ErrorCodeShift) | ModuleId, + NotInitialized = (101 << ErrorCodeShift) | ModuleId + } +} |