Преглед изворни кода

Implement ISslContext (#440)

This PR implement an empty `ISslContext` and update `CreateContext` and `SetInterfaceVersion` inside `ISslService`
Ac_K пре 7 година
родитељ
комит
5b8ccb717f

+ 20 - 0
Ryujinx.HLE/HOS/Services/Ssl/ISslContext.cs

@@ -0,0 +1,20 @@
+using Ryujinx.HLE.HOS.Ipc;
+using System.Collections.Generic;
+
+namespace Ryujinx.HLE.HOS.Services.Ssl
+{
+    class ISslContext : IpcService
+    {
+        private Dictionary<int, ServiceProcessRequest> m_Commands;
+
+        public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
+
+        public ISslContext()
+        {
+            m_Commands = new Dictionary<int, ServiceProcessRequest>()
+            {
+                //...
+            };
+        }
+    }
+}

+ 16 - 1
Ryujinx.HLE/HOS/Services/Ssl/ISslService.cs

@@ -14,15 +14,30 @@ namespace Ryujinx.HLE.HOS.Services.Ssl
         {
             m_Commands = new Dictionary<int, ServiceProcessRequest>()
             {
+                { 0, CreateContext       },
                 { 5, SetInterfaceVersion }
             };
         }
 
+        // CreateContext(nn::ssl::sf::SslVersion, u64, pid) -> object<nn::ssl::sf::ISslContext>
+        public long CreateContext(ServiceCtx Context)
+        {
+            int  SslVersion = Context.RequestData.ReadInt32();
+            long Unknown    = Context.RequestData.ReadInt64();
+
+            Context.Device.Log.PrintStub(LogClass.ServiceSsl, $"Stubbed. SslVersion: {SslVersion} - Unknown: {Unknown}");
+
+            MakeObject(Context, new ISslContext());
+
+            return 0;
+        }
+
+        // SetInterfaceVersion(u32)
         public long SetInterfaceVersion(ServiceCtx Context)
         {
             int Version = Context.RequestData.ReadInt32();
 
-            Context.Device.Log.PrintStub(LogClass.ServiceSsl, "Stubbed.");
+            Context.Device.Log.PrintStub(LogClass.ServiceSsl, $"Stubbed. Version: {Version}");
 
             return 0;
         }