diff --git a/Ryujinx.Common/Logging/LogClass.cs b/Ryujinx.Common/Logging/LogClass.cs index 8739fbc677..d74dfe1e7e 100644 --- a/Ryujinx.Common/Logging/LogClass.cs +++ b/Ryujinx.Common/Logging/LogClass.cs @@ -15,6 +15,7 @@ namespace Ryujinx.Common.Logging Service, ServiceAcc, ServiceAm, + ServiceAoc, ServiceApm, ServiceAudio, ServiceBsd, diff --git a/Ryujinx.HLE/HOS/Services/Aoc/IAddOnContentManager.cs b/Ryujinx.HLE/HOS/Services/Aoc/IAddOnContentManager.cs new file mode 100644 index 0000000000..5d57bad5d6 --- /dev/null +++ b/Ryujinx.HLE/HOS/Services/Aoc/IAddOnContentManager.cs @@ -0,0 +1,64 @@ +using Ryujinx.Common.Logging; +using Ryujinx.HLE.HOS.Ipc; +using Ryujinx.HLE.HOS.Kernel; +using System; +using System.Collections.Generic; + +namespace Ryujinx.HLE.HOS.Services.Aoc +{ + class IAddOnContentManager : IpcService + { + private KEvent AddOnContentListChangedEvent; + + private Dictionary m_Commands; + + public override IReadOnlyDictionary Commands => m_Commands; + + public IAddOnContentManager(Horizon System) + { + m_Commands = new Dictionary() + { + { 2, CountAddOnContent }, + { 3, ListAddOnContent }, + { 8, GetAddOnContentListChangedEvent } + }; + + AddOnContentListChangedEvent = new KEvent(System); + } + + // CountAddOnContent(u64, pid) -> i32 + public static long CountAddOnContent(ServiceCtx Context) + { + Context.ResponseData.Write(0); + + Logger.PrintStub(LogClass.ServiceAoc, "Stubbed."); + + return 0; + } + + // ListAddOnContent(i32, i32, u64, pid) -> (i32, array) + public static long ListAddOnContent(ServiceCtx Context) + { + Logger.PrintStub(LogClass.ServiceAoc, "Stubbed."); + + //TODO: This is supposed to write a u32 array aswell. + //It's unknown what it contains. + Context.ResponseData.Write(0); + + return 0; + } + + // GetAddOnContentListChangedEvent() + public long GetAddOnContentListChangedEvent(ServiceCtx Context) + { + if (Context.Process.HandleTable.GenerateHandle(AddOnContentListChangedEvent, out int Handle) != KernelResult.Success) + { + throw new InvalidOperationException("Out of handles!"); + } + + Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle); + + return 0; + } + } +} \ No newline at end of file diff --git a/Ryujinx.HLE/HOS/Services/Ns/IAddOnContentManager.cs b/Ryujinx.HLE/HOS/Services/Ns/IAddOnContentManager.cs deleted file mode 100644 index 82fce6b983..0000000000 --- a/Ryujinx.HLE/HOS/Services/Ns/IAddOnContentManager.cs +++ /dev/null @@ -1,42 +0,0 @@ -using Ryujinx.Common.Logging; -using Ryujinx.HLE.HOS.Ipc; -using System.Collections.Generic; - -namespace Ryujinx.HLE.HOS.Services.Ns -{ - class IAddOnContentManager : IpcService - { - private Dictionary m_Commands; - - public override IReadOnlyDictionary Commands => m_Commands; - - public IAddOnContentManager() - { - m_Commands = new Dictionary() - { - { 2, CountAddOnContent }, - { 3, ListAddOnContent } - }; - } - - public static long CountAddOnContent(ServiceCtx Context) - { - Context.ResponseData.Write(0); - - Logger.PrintStub(LogClass.ServiceNs, "Stubbed."); - - return 0; - } - - public static long ListAddOnContent(ServiceCtx Context) - { - Logger.PrintStub(LogClass.ServiceNs, "Stubbed."); - - //TODO: This is supposed to write a u32 array aswell. - //It's unknown what it contains. - Context.ResponseData.Write(0); - - return 0; - } - } -} \ No newline at end of file diff --git a/Ryujinx.HLE/HOS/Services/ServiceFactory.cs b/Ryujinx.HLE/HOS/Services/ServiceFactory.cs index 5908e81082..c7cae39d75 100644 --- a/Ryujinx.HLE/HOS/Services/ServiceFactory.cs +++ b/Ryujinx.HLE/HOS/Services/ServiceFactory.cs @@ -1,5 +1,6 @@ using Ryujinx.HLE.HOS.Services.Acc; using Ryujinx.HLE.HOS.Services.Am; +using Ryujinx.HLE.HOS.Services.Aoc; using Ryujinx.HLE.HOS.Services.Apm; using Ryujinx.HLE.HOS.Services.Aud; using Ryujinx.HLE.HOS.Services.Bsd; @@ -40,7 +41,7 @@ namespace Ryujinx.HLE.HOS.Services return new IAccountService(); case "aoc:u": - return new IAddOnContentManager(); + return new IAddOnContentManager(System); case "apm": return new IManager();