aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService
diff options
context:
space:
mode:
authorAc_K <Acoustik666@gmail.com>2019-09-19 02:45:11 +0200
committerjduncanator <1518948+jduncanator@users.noreply.github.com>2019-09-19 10:45:11 +1000
commita0720b5681852f3d786d77bd3793b0359dea321c (patch)
tree9d8f61e540d1d1d827999902dad95e5c0c1e076e /Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService
parent4af3101b22e6957d6aa48a2768566d658699f4ed (diff)
Refactoring HOS folder structure (#771)
* Refactoring HOS folder structure Refactoring HOS folder structure: - Added some subfolders when needed (Following structure decided in private). - Added some `Types` folders when needed. - Little cleanup here and there. - Add services placeholders for every HOS services (close #766 and #753). * Remove Types namespaces
Diffstat (limited to 'Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService')
-rw-r--r--Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/IApplicationFunctions.cs117
-rw-r--r--Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/IApplicationProxy.cs82
2 files changed, 199 insertions, 0 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/IApplicationFunctions.cs b/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/IApplicationFunctions.cs
new file mode 100644
index 00000000..798316be
--- /dev/null
+++ b/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/IApplicationFunctions.cs
@@ -0,0 +1,117 @@
+using Ryujinx.Common.Logging;
+using Ryujinx.HLE.HOS.Services.Am.AppletAE;
+using Ryujinx.HLE.HOS.Services.Am.AppletAE.Storage;
+
+namespace Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.ApplicationProxy
+{
+ class IApplicationFunctions : IpcService
+ {
+ public IApplicationFunctions() { }
+
+ [Command(1)]
+ // PopLaunchParameter(u32) -> object<nn::am::service::IStorage>
+ public ResultCode PopLaunchParameter(ServiceCtx context)
+ {
+ // Only the first 0x18 bytes of the Data seems to be actually used.
+ MakeObject(context, new IStorage(StorageHelper.MakeLaunchParams()));
+
+ return ResultCode.Success;
+ }
+
+ [Command(20)]
+ // EnsureSaveData(nn::account::Uid) -> u64
+ public ResultCode EnsureSaveData(ServiceCtx context)
+ {
+ long uIdLow = context.RequestData.ReadInt64();
+ long uIdHigh = context.RequestData.ReadInt64();
+
+ Logger.PrintStub(LogClass.ServiceAm);
+
+ context.ResponseData.Write(0L);
+
+ return ResultCode.Success;
+ }
+
+ [Command(21)]
+ // GetDesiredLanguage() -> nn::settings::LanguageCode
+ public ResultCode GetDesiredLanguage(ServiceCtx context)
+ {
+ context.ResponseData.Write(context.Device.System.State.DesiredLanguageCode);
+
+ return ResultCode.Success;
+ }
+
+ [Command(22)]
+ // SetTerminateResult(u32)
+ public ResultCode SetTerminateResult(ServiceCtx context)
+ {
+ int errorCode = context.RequestData.ReadInt32();
+
+ string result = GetFormattedErrorCode(errorCode);
+
+ Logger.PrintInfo(LogClass.ServiceAm, $"Result = 0x{errorCode:x8} ({result}).");
+
+ return ResultCode.Success;
+ }
+
+ private string GetFormattedErrorCode(int errorCode)
+ {
+ int module = (errorCode >> 0) & 0x1ff;
+ int description = (errorCode >> 9) & 0x1fff;
+
+ return $"{(2000 + module):d4}-{description:d4}";
+ }
+
+ [Command(23)]
+ // GetDisplayVersion() -> nn::oe::DisplayVersion
+ public ResultCode GetDisplayVersion(ServiceCtx context)
+ {
+ // FIXME: Need to check correct version on a switch.
+ context.ResponseData.Write(1L);
+ context.ResponseData.Write(0L);
+
+ return ResultCode.Success;
+ }
+
+ [Command(40)]
+ // NotifyRunning() -> b8
+ public ResultCode NotifyRunning(ServiceCtx context)
+ {
+ context.ResponseData.Write(1);
+
+ return ResultCode.Success;
+ }
+
+ [Command(50)] // 2.0.0+
+ // GetPseudoDeviceId() -> nn::util::Uuid
+ public ResultCode GetPseudoDeviceId(ServiceCtx context)
+ {
+ Logger.PrintStub(LogClass.ServiceAm);
+
+ context.ResponseData.Write(0L);
+ context.ResponseData.Write(0L);
+
+ return ResultCode.Success;
+ }
+
+ [Command(66)] // 3.0.0+
+ // InitializeGamePlayRecording(u64, handle<copy>)
+ public ResultCode InitializeGamePlayRecording(ServiceCtx context)
+ {
+ Logger.PrintStub(LogClass.ServiceAm);
+
+ return ResultCode.Success;
+ }
+
+ [Command(67)] // 3.0.0+
+ // SetGamePlayRecordingState(u32)
+ public ResultCode SetGamePlayRecordingState(ServiceCtx context)
+ {
+ int state = context.RequestData.ReadInt32();
+
+ Logger.PrintStub(LogClass.ServiceAm);
+
+ return ResultCode.Success;
+ }
+ }
+} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/IApplicationProxy.cs b/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/IApplicationProxy.cs
new file mode 100644
index 00000000..29ee2141
--- /dev/null
+++ b/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/IApplicationProxy.cs
@@ -0,0 +1,82 @@
+using Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.SystemAppletProxy;
+using Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.ApplicationProxy;
+
+namespace Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService
+{
+ class IApplicationProxy : IpcService
+ {
+ public IApplicationProxy() { }
+
+ [Command(0)]
+ // GetCommonStateGetter() -> object<nn::am::service::ICommonStateGetter>
+ public ResultCode GetCommonStateGetter(ServiceCtx context)
+ {
+ MakeObject(context, new ICommonStateGetter(context.Device.System));
+
+ return ResultCode.Success;
+ }
+
+ [Command(1)]
+ // GetSelfController() -> object<nn::am::service::ISelfController>
+ public ResultCode GetSelfController(ServiceCtx context)
+ {
+ MakeObject(context, new ISelfController(context.Device.System));
+
+ return ResultCode.Success;
+ }
+
+ [Command(2)]
+ // GetWindowController() -> object<nn::am::service::IWindowController>
+ public ResultCode GetWindowController(ServiceCtx context)
+ {
+ MakeObject(context, new IWindowController());
+
+ return ResultCode.Success;
+ }
+
+ [Command(3)]
+ // GetAudioController() -> object<nn::am::service::IAudioController>
+ public ResultCode GetAudioController(ServiceCtx context)
+ {
+ MakeObject(context, new IAudioController());
+
+ return ResultCode.Success;
+ }
+
+ [Command(4)]
+ // GetDisplayController() -> object<nn::am::service::IDisplayController>
+ public ResultCode GetDisplayController(ServiceCtx context)
+ {
+ MakeObject(context, new IDisplayController());
+
+ return ResultCode.Success;
+ }
+
+ [Command(11)]
+ // GetLibraryAppletCreator() -> object<nn::am::service::ILibraryAppletCreator>
+ public ResultCode GetLibraryAppletCreator(ServiceCtx context)
+ {
+ MakeObject(context, new ILibraryAppletCreator());
+
+ return ResultCode.Success;
+ }
+
+ [Command(20)]
+ // GetApplicationFunctions() -> object<nn::am::service::IApplicationFunctions>
+ public ResultCode GetApplicationFunctions(ServiceCtx context)
+ {
+ MakeObject(context, new IApplicationFunctions());
+
+ return ResultCode.Success;
+ }
+
+ [Command(1000)]
+ // GetDebugFunctions() -> object<nn::am::service::IDebugFunctions>
+ public ResultCode GetDebugFunctions(ServiceCtx context)
+ {
+ MakeObject(context, new IDebugFunctions());
+
+ return ResultCode.Success;
+ }
+ }
+} \ No newline at end of file