From 0746b83edf49d1fd668dd337264e942f361b675c Mon Sep 17 00:00:00 2001 From: Mary Date: Wed, 14 Apr 2021 00:01:24 +0200 Subject: Initial support for the new 12.x IPC system (#2182) * Rename CommandAttribute as CommandHIpcAttribute to prepare for 12.x changes * Implement inital support for TIPC and adds SM command ids * *Ipc to *ipc * Missed a ref in last commit... * CommandAttributeTIpc to CommandAttributeTipc * Addresses comment and fixes some bugs around TIPC doesn't have any padding requirements as buffer C isn't a thing Fix for RegisterService inverting two argument only on TIPC --- .../Services/Time/StaticService/ISteadyClock.cs | 16 ++++++------- .../Services/Time/StaticService/ISystemClock.cs | 10 ++++---- .../Time/StaticService/ITimeZoneServiceForGlue.cs | 18 +++++++------- .../Time/StaticService/ITimeZoneServiceForPsc.cs | 28 +++++++++++----------- 4 files changed, 36 insertions(+), 36 deletions(-) (limited to 'Ryujinx.HLE/HOS/Services/Time/StaticService') diff --git a/Ryujinx.HLE/HOS/Services/Time/StaticService/ISteadyClock.cs b/Ryujinx.HLE/HOS/Services/Time/StaticService/ISteadyClock.cs index bf6a4fd1..a5ce8d6a 100644 --- a/Ryujinx.HLE/HOS/Services/Time/StaticService/ISteadyClock.cs +++ b/Ryujinx.HLE/HOS/Services/Time/StaticService/ISteadyClock.cs @@ -16,7 +16,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService _bypassUninitializedClock = bypassUninitializedClock; } - [Command(0)] + [CommandHipc(0)] // GetCurrentTimePoint() -> nn::time::SteadyClockTimePoint public ResultCode GetCurrentTimePoint(ServiceCtx context) { @@ -32,7 +32,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return ResultCode.Success; } - [Command(2)] + [CommandHipc(2)] // GetTestOffset() -> nn::TimeSpanType public ResultCode GetTestOffset(ServiceCtx context) { @@ -46,7 +46,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return ResultCode.Success; } - [Command(3)] + [CommandHipc(3)] // SetTestOffset(nn::TimeSpanType) public ResultCode SetTestOffset(ServiceCtx context) { @@ -67,7 +67,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return ResultCode.Success; } - [Command(100)] // 2.0.0+ + [CommandHipc(100)] // 2.0.0+ // GetRtcValue() -> u64 public ResultCode GetRtcValue(ServiceCtx context) { @@ -86,7 +86,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return result; } - [Command(101)] // 2.0.0+ + [CommandHipc(101)] // 2.0.0+ // IsRtcResetDetected() -> bool public ResultCode IsRtcResetDetected(ServiceCtx context) { @@ -100,7 +100,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return ResultCode.Success; } - [Command(102)] // 2.0.0+ + [CommandHipc(102)] // 2.0.0+ // GetSetupResultValue() -> u32 public ResultCode GetSetupResultValue(ServiceCtx context) { @@ -114,7 +114,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return ResultCode.Success; } - [Command(200)] // 3.0.0+ + [CommandHipc(200)] // 3.0.0+ // GetInternalOffset() -> nn::TimeSpanType public ResultCode GetInternalOffset(ServiceCtx context) { @@ -128,7 +128,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return ResultCode.Success; } - [Command(201)] // 3.0.0-3.0.2 + [CommandHipc(201)] // 3.0.0-3.0.2 // SetInternalOffset(nn::TimeSpanType) public ResultCode SetInternalOffset(ServiceCtx context) { diff --git a/Ryujinx.HLE/HOS/Services/Time/StaticService/ISystemClock.cs b/Ryujinx.HLE/HOS/Services/Time/StaticService/ISystemClock.cs index 2e0d0212..1d9f7873 100644 --- a/Ryujinx.HLE/HOS/Services/Time/StaticService/ISystemClock.cs +++ b/Ryujinx.HLE/HOS/Services/Time/StaticService/ISystemClock.cs @@ -22,7 +22,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService _operationEventReadableHandle = 0; } - [Command(0)] + [CommandHipc(0)] // GetCurrentTime() -> nn::time::PosixTime public ResultCode GetCurrentTime(ServiceCtx context) { @@ -41,7 +41,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return result; } - [Command(1)] + [CommandHipc(1)] // SetCurrentTime(nn::time::PosixTime) public ResultCode SetCurrentTime(ServiceCtx context) { @@ -60,7 +60,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return _clockCore.SetCurrentTime(context.Thread, posixTime); } - [Command(2)] + [CommandHipc(2)] // GetClockContext() -> nn::time::SystemClockContext public ResultCode GetSystemClockContext(ServiceCtx context) { @@ -79,7 +79,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return result; } - [Command(3)] + [CommandHipc(3)] // SetClockContext(nn::time::SystemClockContext) public ResultCode SetSystemClockContext(ServiceCtx context) { @@ -100,7 +100,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return result; } - [Command(4)] // 9.0.0+ + [CommandHipc(4)] // 9.0.0+ // GetOperationEventReadableHandle() -> handle public ResultCode GetOperationEventReadableHandle(ServiceCtx context) { diff --git a/Ryujinx.HLE/HOS/Services/Time/StaticService/ITimeZoneServiceForGlue.cs b/Ryujinx.HLE/HOS/Services/Time/StaticService/ITimeZoneServiceForGlue.cs index d3b2695b..5f35412d 100644 --- a/Ryujinx.HLE/HOS/Services/Time/StaticService/ITimeZoneServiceForGlue.cs +++ b/Ryujinx.HLE/HOS/Services/Time/StaticService/ITimeZoneServiceForGlue.cs @@ -19,14 +19,14 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService _inner = new ITimeZoneServiceForPsc(timeZoneContentManager.Manager, writePermission); } - [Command(0)] + [CommandHipc(0)] // GetDeviceLocationName() -> nn::time::LocationName public ResultCode GetDeviceLocationName(ServiceCtx context) { return _inner.GetDeviceLocationName(context); } - [Command(1)] + [CommandHipc(1)] // SetDeviceLocationName(nn::time::LocationName) public ResultCode SetDeviceLocationName(ServiceCtx context) { @@ -40,14 +40,14 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return _timeZoneContentManager.SetDeviceLocationName(locationName); } - [Command(2)] + [CommandHipc(2)] // GetTotalLocationNameCount() -> u32 public ResultCode GetTotalLocationNameCount(ServiceCtx context) { return _inner.GetTotalLocationNameCount(context); } - [Command(3)] + [CommandHipc(3)] // LoadLocationNameList(u32 index) -> (u32 outCount, buffer) public ResultCode LoadLocationNameList(ServiceCtx context) { @@ -82,7 +82,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return errorCode; } - [Command(4)] + [CommandHipc(4)] // LoadTimeZoneRule(nn::time::LocationName locationName) -> buffer public ResultCode LoadTimeZoneRule(ServiceCtx context) { @@ -110,28 +110,28 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return resultCode; } - [Command(100)] + [CommandHipc(100)] // ToCalendarTime(nn::time::PosixTime time, buffer rules) -> (nn::time::CalendarTime, nn::time::sf::CalendarAdditionalInfo) public ResultCode ToCalendarTime(ServiceCtx context) { return _inner.ToCalendarTime(context); } - [Command(101)] + [CommandHipc(101)] // ToCalendarTimeWithMyRule(nn::time::PosixTime) -> (nn::time::CalendarTime, nn::time::sf::CalendarAdditionalInfo) public ResultCode ToCalendarTimeWithMyRule(ServiceCtx context) { return _inner.ToCalendarTimeWithMyRule(context); } - [Command(201)] + [CommandHipc(201)] // ToPosixTime(nn::time::CalendarTime calendarTime, buffer rules) -> (u32 outCount, buffer) public ResultCode ToPosixTime(ServiceCtx context) { return _inner.ToPosixTime(context); } - [Command(202)] + [CommandHipc(202)] // ToPosixTimeWithMyRule(nn::time::CalendarTime calendarTime) -> (u32 outCount, buffer) public ResultCode ToPosixTimeWithMyRule(ServiceCtx context) { diff --git a/Ryujinx.HLE/HOS/Services/Time/StaticService/ITimeZoneServiceForPsc.cs b/Ryujinx.HLE/HOS/Services/Time/StaticService/ITimeZoneServiceForPsc.cs index c756dfd1..659e1331 100644 --- a/Ryujinx.HLE/HOS/Services/Time/StaticService/ITimeZoneServiceForPsc.cs +++ b/Ryujinx.HLE/HOS/Services/Time/StaticService/ITimeZoneServiceForPsc.cs @@ -22,7 +22,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService _writePermission = writePermission; } - [Command(0)] + [CommandHipc(0)] // GetDeviceLocationName() -> nn::time::LocationName public ResultCode GetDeviceLocationName(ServiceCtx context) { @@ -36,7 +36,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return result; } - [Command(1)] + [CommandHipc(1)] // SetDeviceLocationName(nn::time::LocationName) public ResultCode SetDeviceLocationName(ServiceCtx context) { @@ -48,7 +48,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return ResultCode.NotImplemented; } - [Command(2)] + [CommandHipc(2)] // GetTotalLocationNameCount() -> u32 public ResultCode GetTotalLocationNameCount(ServiceCtx context) { @@ -62,21 +62,21 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return ResultCode.Success; } - [Command(3)] + [CommandHipc(3)] // LoadLocationNameList(u32 index) -> (u32 outCount, buffer) public ResultCode LoadLocationNameList(ServiceCtx context) { return ResultCode.NotImplemented; } - [Command(4)] + [CommandHipc(4)] // LoadTimeZoneRule(nn::time::LocationName locationName) -> buffer public ResultCode LoadTimeZoneRule(ServiceCtx context) { return ResultCode.NotImplemented; } - [Command(5)] // 2.0.0+ + [CommandHipc(5)] // 2.0.0+ // GetTimeZoneRuleVersion() -> nn::time::TimeZoneRuleVersion public ResultCode GetTimeZoneRuleVersion(ServiceCtx context) { @@ -90,7 +90,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return result; } - [Command(6)] // 5.0.0+ + [CommandHipc(6)] // 5.0.0+ // GetDeviceLocationNameAndUpdatedTime() -> (nn::time::LocationName, nn::time::SteadyClockTimePoint) public ResultCode GetDeviceLocationNameAndUpdatedTime(ServiceCtx context) { @@ -114,7 +114,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return result; } - [Command(7)] // 9.0.0+ + [CommandHipc(7)] // 9.0.0+ // SetDeviceLocationNameWithTimeZoneRule(nn::time::LocationName locationName, buffer timeZoneBinary) public ResultCode SetDeviceLocationNameWithTimeZoneRule(ServiceCtx context) { @@ -141,7 +141,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return result; } - [Command(8)] // 9.0.0+ + [CommandHipc(8)] // 9.0.0+ // ParseTimeZoneBinary(buffer timeZoneBinary) -> buffer public ResultCode ParseTimeZoneBinary(ServiceCtx context) { @@ -177,14 +177,14 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return result; } - [Command(20)] // 9.0.0+ + [CommandHipc(20)] // 9.0.0+ // GetDeviceLocationNameOperationEventReadableHandle() -> handle public ResultCode GetDeviceLocationNameOperationEventReadableHandle(ServiceCtx context) { return ResultCode.NotImplemented; } - [Command(100)] + [CommandHipc(100)] // ToCalendarTime(nn::time::PosixTime time, buffer rules) -> (nn::time::CalendarTime, nn::time::sf::CalendarAdditionalInfo) public ResultCode ToCalendarTime(ServiceCtx context) { @@ -212,7 +212,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return resultCode; } - [Command(101)] + [CommandHipc(101)] // ToCalendarTimeWithMyRule(nn::time::PosixTime) -> (nn::time::CalendarTime, nn::time::sf::CalendarAdditionalInfo) public ResultCode ToCalendarTimeWithMyRule(ServiceCtx context) { @@ -228,7 +228,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return resultCode; } - [Command(201)] + [CommandHipc(201)] // ToPosixTime(nn::time::CalendarTime calendarTime, buffer rules) -> (u32 outCount, buffer) public ResultCode ToPosixTime(ServiceCtx context) { @@ -261,7 +261,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService return resultCode; } - [Command(202)] + [CommandHipc(202)] // ToPosixTimeWithMyRule(nn::time::CalendarTime calendarTime) -> (u32 outCount, buffer) public ResultCode ToPosixTimeWithMyRule(ServiceCtx context) { -- cgit v1.2.3