diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/IUserLocalCommunicationService.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/IUserLocalCommunicationService.cs index 62a86ad91..c36fda775 100644 --- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/IUserLocalCommunicationService.cs +++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/IUserLocalCommunicationService.cs @@ -5,6 +5,7 @@ using Ryujinx.Common.Logging; using Ryujinx.Common.Memory; using Ryujinx.Common.Utilities; using Ryujinx.Cpu; +using Ryujinx.HLE.Exceptions; using Ryujinx.HLE.HOS.Ipc; using Ryujinx.HLE.HOS.Kernel.Threading; using Ryujinx.HLE.HOS.Services.Ldn.Types; @@ -14,6 +15,7 @@ using Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.Types; using Ryujinx.Horizon.Common; using Ryujinx.Memory; using System; +using System.ComponentModel; using System.IO; using System.Net; using System.Net.NetworkInformation; @@ -487,6 +489,22 @@ namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator return ResultCode.Success; } + [CommandCmif(106)] // 20.0.0+ + // SetProtocol + public ResultCode SetProtocol(ServiceCtx context) + { + uint protocolValue = context.RequestData.ReadUInt32(); + + // On NX only input value 1 or 3 is allowed, with an error being thrown otherwise. + if (!(protocolValue == 1 || protocolValue == 3)) + { + throw new ArgumentException($"{GetType().FullName}: Protocol value is not 1 or 3!! Protocol value: {protocolValue}"); + } + + Logger.Stub?.PrintStub(LogClass.ServiceLdn, $"Protocol value: {protocolValue}"); + return ResultCode.Success; + } + [CommandCmif(200)] // OpenAccessPoint() public ResultCode OpenAccessPoint(ServiceCtx context)