diff options
| author | Ac_K <Acoustik666@gmail.com> | 2019-07-12 03:13:43 +0200 |
|---|---|---|
| committer | gdkchan <gab.dark.100@gmail.com> | 2019-07-11 22:13:43 -0300 |
| commit | 560ccbeb2d55a4426ad2827bf7534d4a695431c2 (patch) | |
| tree | 7e224acbd6c023ea56ff80c6207aa0966aa06ee5 /Ryujinx.HLE/HOS/Services/Nifm | |
| parent | f723f6f39aaf7b1cebc0224a055058d62e3b689c (diff) | |
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
Diffstat (limited to 'Ryujinx.HLE/HOS/Services/Nifm')
| -rw-r--r-- | Ryujinx.HLE/HOS/Services/Nifm/IGeneralService.cs | 21 | ||||
| -rw-r--r-- | Ryujinx.HLE/HOS/Services/Nifm/IRequest.cs | 27 | ||||
| -rw-r--r-- | Ryujinx.HLE/HOS/Services/Nifm/IStaticService.cs | 20 |
3 files changed, 23 insertions, 45 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Nifm/IGeneralService.cs b/Ryujinx.HLE/HOS/Services/Nifm/IGeneralService.cs index 636e9384..71dfe1d1 100644 --- a/Ryujinx.HLE/HOS/Services/Nifm/IGeneralService.cs +++ b/Ryujinx.HLE/HOS/Services/Nifm/IGeneralService.cs @@ -1,7 +1,5 @@ using Ryujinx.Common.Logging; -using Ryujinx.HLE.HOS.Ipc; using System; -using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.NetworkInformation; @@ -13,19 +11,10 @@ namespace Ryujinx.HLE.HOS.Services.Nifm { class IGeneralService : IpcService { - private Dictionary<int, ServiceProcessRequest> _commands; - - public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands; - - public IGeneralService() - { - _commands = new Dictionary<int, ServiceProcessRequest> - { - { 4, CreateRequest }, - { 12, GetCurrentIpAddress } - }; - } + public IGeneralService() { } + [Command(4)] + // CreateRequest(u32) -> object<nn::nifm::detail::IRequest> public long CreateRequest(ServiceCtx context) { int unknown = context.RequestData.ReadInt32(); @@ -37,6 +26,8 @@ namespace Ryujinx.HLE.HOS.Services.Nifm return 0; } + [Command(12)] + // GetCurrentIpAddress() -> nn::nifm::IpV4Address public long GetCurrentIpAddress(ServiceCtx context) { if (!NetworkInterface.GetIsNetworkAvailable()) @@ -55,4 +46,4 @@ namespace Ryujinx.HLE.HOS.Services.Nifm return 0; } } -} +}
\ No newline at end of file diff --git a/Ryujinx.HLE/HOS/Services/Nifm/IRequest.cs b/Ryujinx.HLE/HOS/Services/Nifm/IRequest.cs index b5691a43..ac3170a4 100644 --- a/Ryujinx.HLE/HOS/Services/Nifm/IRequest.cs +++ b/Ryujinx.HLE/HOS/Services/Nifm/IRequest.cs @@ -3,35 +3,22 @@ using Ryujinx.HLE.HOS.Ipc; using Ryujinx.HLE.HOS.Kernel.Common; using Ryujinx.HLE.HOS.Kernel.Threading; using System; -using System.Collections.Generic; namespace Ryujinx.HLE.HOS.Services.Nifm { class IRequest : IpcService { - private Dictionary<int, ServiceProcessRequest> _commands; - - public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands; - private KEvent _event0; private KEvent _event1; public IRequest(Horizon system) { - _commands = new Dictionary<int, ServiceProcessRequest> - { - { 0, GetRequestState }, - { 1, GetResult }, - { 2, GetSystemEventReadableHandles }, - { 3, Cancel }, - { 4, Submit }, - { 11, SetConnectionConfirmationOption } - }; - _event0 = new KEvent(system); _event1 = new KEvent(system); } + [Command(0)] + // GetRequestState() -> u32 public long GetRequestState(ServiceCtx context) { context.ResponseData.Write(1); @@ -41,6 +28,8 @@ namespace Ryujinx.HLE.HOS.Services.Nifm return 0; } + [Command(1)] + // GetResult() public long GetResult(ServiceCtx context) { Logger.PrintStub(LogClass.ServiceNifm); @@ -48,6 +37,8 @@ namespace Ryujinx.HLE.HOS.Services.Nifm return 0; } + [Command(2)] + // GetSystemEventReadableHandles() -> (handle<copy>, handle<copy>) public long GetSystemEventReadableHandles(ServiceCtx context) { if (context.Process.HandleTable.GenerateHandle(_event0.ReadableEvent, out int handle0) != KernelResult.Success) @@ -65,6 +56,8 @@ namespace Ryujinx.HLE.HOS.Services.Nifm return 0; } + [Command(3)] + // Cancel() public long Cancel(ServiceCtx context) { Logger.PrintStub(LogClass.ServiceNifm); @@ -72,6 +65,8 @@ namespace Ryujinx.HLE.HOS.Services.Nifm return 0; } + [Command(4)] + // Submit() public long Submit(ServiceCtx context) { Logger.PrintStub(LogClass.ServiceNifm); @@ -79,6 +74,8 @@ namespace Ryujinx.HLE.HOS.Services.Nifm return 0; } + [Command(11)] + // SetConnectionConfirmationOption(i8) public long SetConnectionConfirmationOption(ServiceCtx context) { Logger.PrintStub(LogClass.ServiceNifm); diff --git a/Ryujinx.HLE/HOS/Services/Nifm/IStaticService.cs b/Ryujinx.HLE/HOS/Services/Nifm/IStaticService.cs index 91b4d129..72ba2b7e 100644 --- a/Ryujinx.HLE/HOS/Services/Nifm/IStaticService.cs +++ b/Ryujinx.HLE/HOS/Services/Nifm/IStaticService.cs @@ -1,24 +1,12 @@ -using Ryujinx.HLE.HOS.Ipc; -using System.Collections.Generic; - namespace Ryujinx.HLE.HOS.Services.Nifm { [Service("nifm:u")] class IStaticService : IpcService { - private Dictionary<int, ServiceProcessRequest> _commands; - - public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands; - - public IStaticService(ServiceCtx context) - { - _commands = new Dictionary<int, ServiceProcessRequest> - { - { 4, CreateGeneralServiceOld }, - { 5, CreateGeneralService } - }; - } + public IStaticService(ServiceCtx context) { } + [Command(4)] + // CreateGeneralServiceOld() -> object<nn::nifm::detail::IGeneralService> public long CreateGeneralServiceOld(ServiceCtx context) { MakeObject(context, new IGeneralService()); @@ -26,6 +14,8 @@ namespace Ryujinx.HLE.HOS.Services.Nifm return 0; } + [Command(5)] // 3.0.0+ + // CreateGeneralService(u64, pid) -> object<nn::nifm::detail::IGeneralService> public long CreateGeneralService(ServiceCtx context) { MakeObject(context, new IGeneralService()); |
