mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2026-03-18 19:30:50 +00:00
Merge branch 'ring-fit' into 'master'
[HLE] Renamed INotificationServicesForSystem and implemented a few commands and stubs See merge request [ryubing/ryujinx!286](https://git.ryujinx.app/ryubing/ryujinx/-/merge_requests/286)
This commit is contained in:
commit
a09cfe4673
@ -51,6 +51,7 @@ namespace Ryujinx.Common.Logging
|
||||
ServiceNgct,
|
||||
ServiceNifm,
|
||||
ServiceNim,
|
||||
ServiceNotification,
|
||||
ServiceNs,
|
||||
ServiceNsd,
|
||||
ServiceNtc,
|
||||
|
||||
@ -0,0 +1,24 @@
|
||||
namespace Ryujinx.HLE.HOS.Services.Notification
|
||||
{
|
||||
[Service("notif:s")] // 9.0.0+
|
||||
class INotificationServices : IpcService
|
||||
{
|
||||
public INotificationServices(ServiceCtx context) { }
|
||||
|
||||
[CommandCmif(1000)] // 9.0.0+
|
||||
// GetNotificationCount() -> nn::notification::server::INotificationSystemEventAccessor
|
||||
public ResultCode GetNotificationCount(ServiceCtx context)
|
||||
{
|
||||
MakeObject(context, new INotificationSystemEventAccessor(context));
|
||||
return ResultCode.Success;
|
||||
}
|
||||
|
||||
[CommandCmif(1040)] // 9.0.0+
|
||||
// GetNotificationSendingNotifier() -> nn::notification::server::INotificationSystemEventAccessor
|
||||
public ResultCode GetNotificationSendingNotifier(ServiceCtx context)
|
||||
{
|
||||
MakeObject(context, new INotificationSystemEventAccessor(context));
|
||||
return ResultCode.Success;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,8 +1,33 @@
|
||||
using Ryujinx.Common.Logging;
|
||||
|
||||
namespace Ryujinx.HLE.HOS.Services.Notification
|
||||
{
|
||||
[Service("notif:a")] // 9.0.0+
|
||||
class INotificationServicesForApplication : IpcService
|
||||
{
|
||||
public INotificationServicesForApplication(ServiceCtx context) { }
|
||||
|
||||
// Leaving this here since I can never find it: https://switchbrew.org/wiki/Glue_services
|
||||
|
||||
[CommandCmif(520)] // 9.0.0+
|
||||
// ListAlarmSettings(nn::arp::ApplicationCertificate) -> s32 AlarmSettingsCount
|
||||
public ResultCode ListAlarmSettings(ServiceCtx context)
|
||||
{
|
||||
// TO-DO: Currently just returns 0. Should read in an ApplicationCertificate.
|
||||
int alarmSettingsCount = 0;
|
||||
context.ResponseData.Write(alarmSettingsCount);
|
||||
return ResultCode.Success;
|
||||
}
|
||||
|
||||
[CommandCmif(1000)] // 9.0.0+
|
||||
// Initialize(PID-descriptor, u64 pid_reserved)
|
||||
public ResultCode Intialize(ServiceCtx context)
|
||||
{
|
||||
ulong pid = context.Request.HandleDesc.PId;
|
||||
context.RequestData.ReadUInt64(); // pid placeholder, zero
|
||||
|
||||
Logger.Stub?.PrintStub(LogClass.ServiceNotification, new { pid });
|
||||
return ResultCode.Success;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,8 +0,0 @@
|
||||
namespace Ryujinx.HLE.HOS.Services.Notification
|
||||
{
|
||||
[Service("notif:s")] // 9.0.0+
|
||||
class INotificationServicesForSystem : IpcService
|
||||
{
|
||||
public INotificationServicesForSystem(ServiceCtx context) { }
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
using Ryujinx.Common.Logging;
|
||||
using Ryujinx.HLE.HOS.Ipc;
|
||||
using Ryujinx.HLE.HOS.Kernel.Threading;
|
||||
using Ryujinx.Horizon.Common;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.HLE.HOS.Services.Notification
|
||||
{
|
||||
class INotificationSystemEventAccessor : IpcService
|
||||
{
|
||||
|
||||
private readonly KEvent _getNotificationSendingNotifierEvent;
|
||||
private int _getNotificationSendingNotifierEventHandle;
|
||||
public INotificationSystemEventAccessor(ServiceCtx context) { }
|
||||
|
||||
[CommandCmif(0)] // 9.0.0+
|
||||
// GetNotificationSendingNotifier() -> nn::notification::server::INotificationSystemEventAccessor
|
||||
public ResultCode GetSystemEvent(ServiceCtx context)
|
||||
{
|
||||
if (_getNotificationSendingNotifierEventHandle == 0)
|
||||
{
|
||||
if (context.Process.HandleTable.GenerateHandle(_getNotificationSendingNotifierEvent.ReadableEvent, out _getNotificationSendingNotifierEventHandle) != Result.Success)
|
||||
{
|
||||
throw new InvalidOperationException("Out of handles!");
|
||||
}
|
||||
}
|
||||
|
||||
context.Response.HandleDesc = IpcHandleDesc.MakeCopy(_getNotificationSendingNotifierEventHandle);
|
||||
return ResultCode.Success;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user