aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Ryujinx.Common/Logging/LogClass.cs1
-rw-r--r--Ryujinx.HLE/HOS/Services/Ns/IApplicationManagerInterface.cs2
-rw-r--r--Ryujinx.HLE/HOS/Services/Ns/IReadOnlyApplicationControlDataInterface.cs23
-rw-r--r--Ryujinx.HLE/HOS/Services/Ns/IServiceGetterInterface.cs9
-rw-r--r--Ryujinx.HLE/HOS/Services/Ptm/Ts/IMeasurementServer.cs20
-rw-r--r--Ryujinx.HLE/HOS/Services/Ptm/Ts/Types/Location.cs8
6 files changed, 61 insertions, 2 deletions
diff --git a/Ryujinx.Common/Logging/LogClass.cs b/Ryujinx.Common/Logging/LogClass.cs
index ab83bdc2..dcf380a1 100644
--- a/Ryujinx.Common/Logging/LogClass.cs
+++ b/Ryujinx.Common/Logging/LogClass.cs
@@ -40,6 +40,7 @@ namespace Ryujinx.Common.Logging
ServicePl,
ServicePrepo,
ServicePsm,
+ ServicePtm,
ServiceSet,
ServiceSfdnsres,
ServiceSm,
diff --git a/Ryujinx.HLE/HOS/Services/Ns/IApplicationManagerInterface.cs b/Ryujinx.HLE/HOS/Services/Ns/IApplicationManagerInterface.cs
index e185233b..3920030e 100644
--- a/Ryujinx.HLE/HOS/Services/Ns/IApplicationManagerInterface.cs
+++ b/Ryujinx.HLE/HOS/Services/Ns/IApplicationManagerInterface.cs
@@ -10,7 +10,7 @@
public ResultCode GetApplicationControlData(ServiceCtx context)
{
byte source = (byte)context.RequestData.ReadInt64();
- ulong titleId = (byte)context.RequestData.ReadUInt64();
+ ulong titleId = context.RequestData.ReadUInt64();
long position = context.Request.ReceiveBuff[0].Position;
diff --git a/Ryujinx.HLE/HOS/Services/Ns/IReadOnlyApplicationControlDataInterface.cs b/Ryujinx.HLE/HOS/Services/Ns/IReadOnlyApplicationControlDataInterface.cs
new file mode 100644
index 00000000..a7f20bc7
--- /dev/null
+++ b/Ryujinx.HLE/HOS/Services/Ns/IReadOnlyApplicationControlDataInterface.cs
@@ -0,0 +1,23 @@
+namespace Ryujinx.HLE.HOS.Services.Ns
+{
+ class IReadOnlyApplicationControlDataInterface : IpcService
+ {
+ public IReadOnlyApplicationControlDataInterface(ServiceCtx context) { }
+
+ [Command(0)]
+ // GetApplicationControlData(u8, u64) -> (unknown<4>, buffer<unknown, 6>)
+ public ResultCode GetApplicationControlData(ServiceCtx context)
+ {
+ byte source = (byte)context.RequestData.ReadInt64();
+ ulong titleId = context.RequestData.ReadUInt64();
+
+ long position = context.Request.ReceiveBuff[0].Position;
+
+ byte[] nacpData = context.Device.System.ControlData.ByteSpan.ToArray();
+
+ context.Memory.WriteBytes(position, nacpData);
+
+ return ResultCode.Success;
+ }
+ }
+}
diff --git a/Ryujinx.HLE/HOS/Services/Ns/IServiceGetterInterface.cs b/Ryujinx.HLE/HOS/Services/Ns/IServiceGetterInterface.cs
index 71331667..a16f76f4 100644
--- a/Ryujinx.HLE/HOS/Services/Ns/IServiceGetterInterface.cs
+++ b/Ryujinx.HLE/HOS/Services/Ns/IServiceGetterInterface.cs
@@ -17,5 +17,14 @@ namespace Ryujinx.HLE.HOS.Services.Ns
return ResultCode.Success;
}
+
+ [Command(7989)]
+ // GetReadOnlyApplicationControlDataInterface() -> object<nn::ns::detail::IReadOnlyApplicationControlDataInterface>
+ public ResultCode GetReadOnlyApplicationControlDataInterface(ServiceCtx context)
+ {
+ MakeObject(context, new IReadOnlyApplicationControlDataInterface(context));
+
+ return ResultCode.Success;
+ }
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Services/Ptm/Ts/IMeasurementServer.cs b/Ryujinx.HLE/HOS/Services/Ptm/Ts/IMeasurementServer.cs
index f3b37d67..942fab87 100644
--- a/Ryujinx.HLE/HOS/Services/Ptm/Ts/IMeasurementServer.cs
+++ b/Ryujinx.HLE/HOS/Services/Ptm/Ts/IMeasurementServer.cs
@@ -1,8 +1,26 @@
-namespace Ryujinx.HLE.HOS.Services.Ptm.Ts
+using Ryujinx.Common.Logging;
+using Ryujinx.HLE.HOS.Services.Ptm.Ts.Types;
+
+namespace Ryujinx.HLE.HOS.Services.Ptm.Ts
{
[Service("ts")]
class IMeasurementServer : IpcService
{
+ private const uint DefaultTemperature = 42000u;
+
public IMeasurementServer(ServiceCtx context) { }
+
+ [Command(3)]
+ // GetTemperatureMilliC(Location location) -> u32
+ public ResultCode GetTemperatureMilliC(ServiceCtx context)
+ {
+ Location location = (Location)context.RequestData.ReadByte();
+
+ Logger.PrintStub(LogClass.ServicePtm, new { location });
+
+ context.ResponseData.Write(DefaultTemperature);
+
+ return ResultCode.Success;
+ }
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Services/Ptm/Ts/Types/Location.cs b/Ryujinx.HLE/HOS/Services/Ptm/Ts/Types/Location.cs
new file mode 100644
index 00000000..e72491d5
--- /dev/null
+++ b/Ryujinx.HLE/HOS/Services/Ptm/Ts/Types/Location.cs
@@ -0,0 +1,8 @@
+namespace Ryujinx.HLE.HOS.Services.Ptm.Ts.Types
+{
+ enum Location : byte
+ {
+ Internal,
+ External
+ }
+}