aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Horizon/Ptm/Ipc/MeasurementServer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Horizon/Ptm/Ipc/MeasurementServer.cs')
-rw-r--r--src/Ryujinx.Horizon/Ptm/Ipc/MeasurementServer.cs63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/Ryujinx.Horizon/Ptm/Ipc/MeasurementServer.cs b/src/Ryujinx.Horizon/Ptm/Ipc/MeasurementServer.cs
new file mode 100644
index 00000000..ce7c0474
--- /dev/null
+++ b/src/Ryujinx.Horizon/Ptm/Ipc/MeasurementServer.cs
@@ -0,0 +1,63 @@
+using Ryujinx.Common.Logging;
+using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Ts;
+using Ryujinx.Horizon.Ts.Ipc;
+
+namespace Ryujinx.Horizon.Ptm.Ipc
+{
+ partial class MeasurementServer : IMeasurementServer
+ {
+ // NOTE: Values are randomly choosen.
+ public const int DefaultTemperature = 42;
+ public const int MinimumTemperature = 0;
+ public const int MaximumTemperature = 100;
+
+ [CmifCommand(0)] // 1.0.0-16.1.0
+ public Result GetTemperatureRange(out int minimumTemperature, out int maximumTemperature, Location location)
+ {
+ Logger.Stub?.PrintStub(LogClass.ServicePtm, new { location });
+
+ minimumTemperature = MinimumTemperature;
+ maximumTemperature = MaximumTemperature;
+
+ return Result.Success;
+ }
+
+ [CmifCommand(1)] // 1.0.0-16.1.0
+ public Result GetTemperature(out int temperature, Location location)
+ {
+ Logger.Stub?.PrintStub(LogClass.ServicePtm, new { location });
+
+ temperature = DefaultTemperature;
+
+ return Result.Success;
+ }
+
+ [CmifCommand(2)] // 1.0.0-13.2.1
+ public Result SetMeasurementMode(Location location, byte measurementMode)
+ {
+ Logger.Stub?.PrintStub(LogClass.ServicePtm, new { location, measurementMode });
+
+ return Result.Success;
+ }
+
+ [CmifCommand(3)] // 1.0.0-13.2.1
+ public Result GetTemperatureMilliC(out int temperatureMilliC, Location location)
+ {
+ Logger.Stub?.PrintStub(LogClass.ServicePtm, new { location });
+
+ temperatureMilliC = DefaultTemperature * 1000;
+
+ return Result.Success;
+ }
+
+ [CmifCommand(4)] // 8.0.0+
+ public Result OpenSession(out ISession session, DeviceCode deviceCode)
+ {
+ session = new Session(deviceCode);
+
+ return Result.Success;
+ }
+ }
+}