From 1a8f5bfb8e5caf5db56be40c25b33e5781e6f1cd Mon Sep 17 00:00:00 2001 From: mailwl Date: Sat, 3 Feb 2018 00:03:40 +0300 Subject: Service/am: Add AppletAE service (#153) * Add AppletAE, step 1: move common interfaces to am.h * Add AppletAE, step 2 --- src/core/hle/service/am/am.h | 93 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) (limited to 'src/core/hle/service/am/am.h') diff --git a/src/core/hle/service/am/am.h b/src/core/hle/service/am/am.h index 3b8a06c1d..b603c17dd 100644 --- a/src/core/hle/service/am/am.h +++ b/src/core/hle/service/am/am.h @@ -7,6 +7,10 @@ #include #include "core/hle/service/service.h" +namespace Kernel { +class Event; +} + namespace Service { namespace NVFlinger { class NVFlinger; @@ -14,6 +18,95 @@ class NVFlinger; namespace AM { +// TODO: Add more languages +enum SystemLanguage { + Japanese = 0, + English = 1, +}; + +class IWindowController final : public ServiceFramework { +public: + IWindowController(); + +private: + void GetAppletResourceUserId(Kernel::HLERequestContext& ctx); + void AcquireForegroundRights(Kernel::HLERequestContext& ctx); +}; + +class IAudioController final : public ServiceFramework { +public: + IAudioController(); +}; + +class IDisplayController final : public ServiceFramework { +public: + IDisplayController(); +}; + +class IDebugFunctions final : public ServiceFramework { +public: + IDebugFunctions(); +}; + +class ISelfController final : public ServiceFramework { +public: + ISelfController(std::shared_ptr nvflinger); + +private: + void SetFocusHandlingMode(Kernel::HLERequestContext& ctx); + void SetRestartMessageEnabled(Kernel::HLERequestContext& ctx); + void SetPerformanceModeChangedNotification(Kernel::HLERequestContext& ctx); + void SetOperationModeChangedNotification(Kernel::HLERequestContext& ctx); + void SetOutOfFocusSuspendingEnabled(Kernel::HLERequestContext& ctx); + void LockExit(Kernel::HLERequestContext& ctx); + void UnlockExit(Kernel::HLERequestContext& ctx); + void CreateManagedDisplayLayer(Kernel::HLERequestContext& ctx); + + std::shared_ptr nvflinger; +}; + +class ICommonStateGetter final : public ServiceFramework { +public: + ICommonStateGetter(); + +private: + enum class FocusState : u8 { + InFocus = 1, + NotInFocus = 2, + }; + + enum class OperationMode : u8 { + Handheld = 0, + Docked = 1, + }; + + void GetEventHandle(Kernel::HLERequestContext& ctx); + void ReceiveMessage(Kernel::HLERequestContext& ctx); + void GetCurrentFocusState(Kernel::HLERequestContext& ctx); + void GetOperationMode(Kernel::HLERequestContext& ctx); + void GetPerformanceMode(Kernel::HLERequestContext& ctx); + + Kernel::SharedPtr event; +}; + +class ILibraryAppletCreator final : public ServiceFramework { +public: + ILibraryAppletCreator(); +}; + +class IApplicationFunctions final : public ServiceFramework { +public: + IApplicationFunctions(); + +private: + void PopLaunchParameter(Kernel::HLERequestContext& ctx); + void SetTerminateResult(Kernel::HLERequestContext& ctx); + void GetDesiredLanguage(Kernel::HLERequestContext& ctx); + void InitializeGamePlayRecording(Kernel::HLERequestContext& ctx); + void SetGamePlayRecordingState(Kernel::HLERequestContext& ctx); + void NotifyRunning(Kernel::HLERequestContext& ctx); +}; + /// Registers all AM services with the specified service manager. void InstallInterfaces(SM::ServiceManager& service_manager, std::shared_ptr nvflinger); -- cgit v1.2.3