aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy
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/ApplicationProxy
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/ApplicationProxy')
-rw-r--r--Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/IApplicationFunctions.cs117
1 files changed, 117 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