aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForApplication.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForApplication.cs')
-rw-r--r--Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForApplication.cs47
1 files changed, 42 insertions, 5 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForApplication.cs b/Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForApplication.cs
index 39e82b8c..c70134c5 100644
--- a/Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForApplication.cs
+++ b/Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForApplication.cs
@@ -1,13 +1,15 @@
using Ryujinx.Common;
using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Services.Account.Acc;
+using System.Collections.Generic;
namespace Ryujinx.HLE.HOS.Services.Olsc
{
[Service("olsc:u")] // 10.0.0+
class IOlscServiceForApplication : IpcService
{
- private bool _initialized;
+ private bool _initialized;
+ private Dictionary<UserId, bool> _saveDataBackupSettingDatabase;
public IOlscServiceForApplication(ServiceCtx context) { }
@@ -16,7 +18,9 @@ namespace Ryujinx.HLE.HOS.Services.Olsc
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.
+ // Since we will not support online savedata backup, it's fine to stub it for now.
+
+ _saveDataBackupSettingDatabase = new Dictionary<UserId, bool>();
_initialized = true;
@@ -25,12 +29,44 @@ namespace Ryujinx.HLE.HOS.Services.Olsc
return ResultCode.Success;
}
+ [CommandHipc(13)]
+ // GetSaveDataBackupSetting(nn::account::Uid) -> u8
+ public ResultCode GetSaveDataBackupSetting(ServiceCtx context)
+ {
+ UserId userId = context.RequestData.ReadStruct<UserId>();
+
+ if (!_initialized)
+ {
+ return ResultCode.NotInitialized;
+ }
+
+ if (userId.IsNull)
+ {
+ return ResultCode.NullArgument;
+ }
+
+ if (_saveDataBackupSettingDatabase[userId])
+ {
+ context.ResponseData.Write((byte)1); // TODO: Determine value.
+ }
+ else
+ {
+ context.ResponseData.Write((byte)2); // TODO: Determine value.
+ }
+
+ // NOTE: Since we will not support online savedata backup, it's fine to stub it for now.
+
+ Logger.Stub?.PrintStub(LogClass.ServiceOlsc, new { userId });
+
+ return ResultCode.Success;
+ }
+
[CommandHipc(14)]
// SetSaveDataBackupSettingEnabled(nn::account::Uid, bool)
public ResultCode SetSaveDataBackupSettingEnabled(ServiceCtx context)
{
+ bool saveDataBackupSettingEnabled = context.RequestData.ReadUInt64() != 0;
UserId userId = context.RequestData.ReadStruct<UserId>();
- ulong saveDataBackupSettingEnabled = context.RequestData.ReadUInt64();
if (!_initialized)
{
@@ -42,8 +78,9 @@ namespace Ryujinx.HLE.HOS.Services.Olsc
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.
+ _saveDataBackupSettingDatabase[userId] = saveDataBackupSettingEnabled;
+
+ // NOTE: Since we will not support online savedata backup, it's fine to stub it for now.
Logger.Stub?.PrintStub(LogClass.ServiceOlsc, new { userId, saveDataBackupSettingEnabled });