From 560ccbeb2d55a4426ad2827bf7534d4a695431c2 Mon Sep 17 00:00:00 2001 From: Ac_K Date: Fri, 12 Jul 2019 03:13:43 +0200 Subject: Refactoring commands handling (#728) * Refactoring commands handling - Use Reflection to handle commands ID. - Add all symbols (from SwIPC so not all time accurate). - Re-sort some services commands methods. - Some cleanup. - Keep some empty constructor for consistency. * Fix order in IProfile --- .../HOS/Services/Pctl/IParentalControlService.cs | 16 ++++------------ .../Services/Pctl/IParentalControlServiceFactory.cs | 20 +++++--------------- 2 files changed, 9 insertions(+), 27 deletions(-) (limited to 'Ryujinx.HLE/HOS/Services/Pctl') diff --git a/Ryujinx.HLE/HOS/Services/Pctl/IParentalControlService.cs b/Ryujinx.HLE/HOS/Services/Pctl/IParentalControlService.cs index 2a4a3bdd..27401fe5 100644 --- a/Ryujinx.HLE/HOS/Services/Pctl/IParentalControlService.cs +++ b/Ryujinx.HLE/HOS/Services/Pctl/IParentalControlService.cs @@ -1,30 +1,20 @@ using Ryujinx.Common.Logging; -using Ryujinx.HLE.HOS.Ipc; -using System.Collections.Generic; namespace Ryujinx.HLE.HOS.Services.Pctl { class IParentalControlService : IpcService { - private Dictionary _commands; - - public override IReadOnlyDictionary Commands => _commands; - private bool _initialized = false; private bool _needInitialize; public IParentalControlService(bool needInitialize = true) { - _commands = new Dictionary - { - { 1, Initialize }, - { 1001, CheckFreeCommunicationPermission } - }; - _needInitialize = needInitialize; } + [Command(1)] // 4.0.0+ + // Initialize() public long Initialize(ServiceCtx context) { if (_needInitialize && !_initialized) @@ -39,6 +29,8 @@ namespace Ryujinx.HLE.HOS.Services.Pctl return 0; } + [Command(1001)] + // CheckFreeCommunicationPermission() public long CheckFreeCommunicationPermission(ServiceCtx context) { Logger.PrintStub(LogClass.ServicePctl); diff --git a/Ryujinx.HLE/HOS/Services/Pctl/IParentalControlServiceFactory.cs b/Ryujinx.HLE/HOS/Services/Pctl/IParentalControlServiceFactory.cs index 372560e6..742a95e0 100644 --- a/Ryujinx.HLE/HOS/Services/Pctl/IParentalControlServiceFactory.cs +++ b/Ryujinx.HLE/HOS/Services/Pctl/IParentalControlServiceFactory.cs @@ -1,6 +1,3 @@ -using Ryujinx.HLE.HOS.Ipc; -using System.Collections.Generic; - namespace Ryujinx.HLE.HOS.Services.Pctl { [Service("pctl")] @@ -9,19 +6,10 @@ namespace Ryujinx.HLE.HOS.Services.Pctl [Service("pctl:s")] class IParentalControlServiceFactory : IpcService { - private Dictionary _commands; - - public override IReadOnlyDictionary Commands => _commands; - - public IParentalControlServiceFactory(ServiceCtx context) - { - _commands = new Dictionary - { - { 0, CreateService }, - { 1, CreateServiceWithoutInitialize } - }; - } + public IParentalControlServiceFactory(ServiceCtx context) { } + [Command(0)] + // CreateService(u64, pid) -> object public long CreateService(ServiceCtx context) { MakeObject(context, new IParentalControlService()); @@ -29,6 +17,8 @@ namespace Ryujinx.HLE.HOS.Services.Pctl return 0; } + [Command(1)] // 4.0.0+ + // CreateServiceWithoutInitialize(u64, pid) -> object public long CreateServiceWithoutInitialize(ServiceCtx context) { MakeObject(context, new IParentalControlService(false)); -- cgit v1.2.3