settings: Implement GetDeviceNickName and SetDeviceNickName (#2383)
* settings: Implement GetDeviceNickName and SetDeviceNickName This PR implement `set` and `sys:set` calls : `GetDeviceNickName` and `SetDeviceNickName` accordingly to RE. I've cleaned up both services a bit and `SystemStateMgr` class too. Closes #2110 * Addresses gdkchan_s feedback
This commit is contained in:
parent
55e0c71489
commit
e053663f27
3 changed files with 77 additions and 23 deletions
|
@ -228,7 +228,45 @@ namespace Ryujinx.HLE.HOS.Services.Settings
|
|||
// NOTE: When set to true, is automatically synced with the internet.
|
||||
context.ResponseData.Write(true);
|
||||
|
||||
Logger.Stub?.PrintStub(LogClass.ServiceSet, "Stubbed");
|
||||
Logger.Stub?.PrintStub(LogClass.ServiceSet);
|
||||
|
||||
return ResultCode.Success;
|
||||
}
|
||||
|
||||
[CommandHipc(77)]
|
||||
// GetDeviceNickName() -> buffer<nn::settings::system::DeviceNickName, 0x16>
|
||||
public ResultCode GetDeviceNickName(ServiceCtx context)
|
||||
{
|
||||
ulong deviceNickNameBufferPosition = context.Request.ReceiveBuff[0].Position;
|
||||
ulong deviceNickNameBufferSize = context.Request.ReceiveBuff[0].Size;
|
||||
|
||||
if (deviceNickNameBufferPosition == 0)
|
||||
{
|
||||
return ResultCode.NullDeviceNicknameBuffer;
|
||||
}
|
||||
|
||||
if (deviceNickNameBufferSize != 0x80)
|
||||
{
|
||||
Logger.Warning?.Print(LogClass.ServiceSet, "Wrong buffer size");
|
||||
}
|
||||
|
||||
context.Memory.Write(deviceNickNameBufferPosition, Encoding.ASCII.GetBytes(context.Device.System.State.DeviceNickName + '\0'));
|
||||
|
||||
return ResultCode.Success;
|
||||
}
|
||||
|
||||
[CommandHipc(78)]
|
||||
// SetDeviceNickName(buffer<nn::settings::system::DeviceNickName, 0x15>)
|
||||
public ResultCode SetDeviceNickName(ServiceCtx context)
|
||||
{
|
||||
ulong deviceNickNameBufferPosition = context.Request.SendBuff[0].Position;
|
||||
ulong deviceNickNameBufferSize = context.Request.SendBuff[0].Size;
|
||||
|
||||
byte[] deviceNickNameBuffer = new byte[deviceNickNameBufferSize];
|
||||
|
||||
context.Memory.Read(deviceNickNameBufferPosition, deviceNickNameBuffer);
|
||||
|
||||
context.Device.System.State.DeviceNickName = Encoding.ASCII.GetString(deviceNickNameBuffer);
|
||||
|
||||
return ResultCode.Success;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue