Implement IApplicationCreator & IApplicationAccessor & IAppletAccessor

This commit is contained in:
greggameplayer 2018-06-10 03:24:01 +02:00
parent 39ebb83453
commit df5284ceb6
4 changed files with 140 additions and 2 deletions

View file

@ -0,0 +1,68 @@
using Ryujinx.Core.Logging;
using Ryujinx.Core.OsHle.Ipc;
using System.Collections.Generic;
namespace Ryujinx.Core.OsHle.Services.Am
{
class IAppletAccessor : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public IAppletAccessor()
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
{
{ 0, GetAppletStateChangedEvent },
{ 1, IsCompleted },
{ 10, Start },
{ 20, RequestExit },
{ 25, Terminate },
{ 30, GetResult }
};
}
public long GetAppletStateChangedEvent(ServiceCtx Context)
{
Context.Ns.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long IsCompleted(ServiceCtx Context)
{
Context.Ns.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long Start(ServiceCtx Context)
{
Context.Ns.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long RequestExit(ServiceCtx Context)
{
Context.Ns.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long Terminate(ServiceCtx Context)
{
Context.Ns.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long GetResult(ServiceCtx Context)
{
Context.Ns.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
}
}

View file

@ -0,0 +1,36 @@
using Ryujinx.Core.Logging;
using Ryujinx.Core.OsHle.Ipc;
using System.Collections.Generic;
namespace Ryujinx.Core.OsHle.Services.Am
{
class IApplicationAccessor : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public IApplicationAccessor()
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
{
{ 112, GetCurrentLibraryApplet },
{ 121, PushLaunchParameter }
};
}
public long GetCurrentLibraryApplet(ServiceCtx Context)
{
MakeObject(Context, new IAppletAccessor());
return 0;
}
public long PushLaunchParameter(ServiceCtx Context)
{
Context.Ns.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
}
}

View file

@ -13,8 +13,39 @@ namespace Ryujinx.Core.OsHle.Services.Am
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
{
//...
{ 0, CreateApplication },
{ 1, PopLaunchRequestedApplication },
{ 10, CreateSystemApplication },
{ 100, PopFloatingApplicationForDevelopment }
};
}
public long CreateApplication(ServiceCtx Context)
{
MakeObject(Context, new IApplicationAccessor());
return 0;
}
public long PopLaunchRequestedApplication(ServiceCtx Context)
{
MakeObject(Context, new IApplicationAccessor());
return 0;
}
public long CreateSystemApplication(ServiceCtx Context)
{
MakeObject(Context, new IApplicationAccessor());
return 0;
}
public long PopFloatingApplicationForDevelopment(ServiceCtx Context)
{
MakeObject(Context, new IApplicationAccessor());
return 0;
}
}
}

View file

@ -100,6 +100,9 @@ namespace Ryujinx.Core.OsHle.Services.Am
public long InitializeGamePlayRecording(ServiceCtx Context)
{
//TODO: add a TransferMemory Handle
long Size = Context.RequestData.ReadInt64();
Context.Ns.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;