summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/am/applet_ae.cpp
diff options
context:
space:
mode:
authormailwl <mailwl@gmail.com>2018-02-02 22:03:40 +0100
committerbunnei <bunneidev@gmail.com>2018-02-02 22:03:40 +0100
commit1a8f5bfb8e5caf5db56be40c25b33e5781e6f1cd (patch)
treee6d412d9d701125c4c76ab7f8e7d23b44ccf98b8 /src/core/hle/service/am/applet_ae.cpp
parentMerge pull request #154 from mailwl/vi_create_stray_array (diff)
downloadyuzu-1a8f5bfb8e5caf5db56be40c25b33e5781e6f1cd.tar
yuzu-1a8f5bfb8e5caf5db56be40c25b33e5781e6f1cd.tar.gz
yuzu-1a8f5bfb8e5caf5db56be40c25b33e5781e6f1cd.tar.bz2
yuzu-1a8f5bfb8e5caf5db56be40c25b33e5781e6f1cd.tar.lz
yuzu-1a8f5bfb8e5caf5db56be40c25b33e5781e6f1cd.tar.xz
yuzu-1a8f5bfb8e5caf5db56be40c25b33e5781e6f1cd.tar.zst
yuzu-1a8f5bfb8e5caf5db56be40c25b33e5781e6f1cd.zip
Diffstat (limited to '')
-rw-r--r--src/core/hle/service/am/applet_ae.cpp112
1 files changed, 112 insertions, 0 deletions
diff --git a/src/core/hle/service/am/applet_ae.cpp b/src/core/hle/service/am/applet_ae.cpp
new file mode 100644
index 000000000..a63fb6210
--- /dev/null
+++ b/src/core/hle/service/am/applet_ae.cpp
@@ -0,0 +1,112 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "common/logging/log.h"
+#include "core/hle/ipc_helpers.h"
+#include "core/hle/service/am/am.h"
+#include "core/hle/service/am/applet_ae.h"
+#include "core/hle/service/nvflinger/nvflinger.h"
+
+namespace Service {
+namespace AM {
+
+class ILibraryAppletProxy final : public ServiceFramework<ILibraryAppletProxy> {
+public:
+ ILibraryAppletProxy(std::shared_ptr<NVFlinger::NVFlinger> nvflinger)
+ : ServiceFramework("ILibraryAppletProxy"), nvflinger(std::move(nvflinger)) {
+ static const FunctionInfo functions[] = {
+ {0, &ILibraryAppletProxy::GetCommonStateGetter, "GetCommonStateGetter"},
+ {1, &ILibraryAppletProxy::GetSelfController, "GetSelfController"},
+ {2, &ILibraryAppletProxy::GetWindowController, "GetWindowController"},
+ {3, &ILibraryAppletProxy::GetAudioController, "GetAudioController"},
+ {4, &ILibraryAppletProxy::GetDisplayController, "GetDisplayController"},
+ {11, &ILibraryAppletProxy::GetLibraryAppletCreator, "GetLibraryAppletCreator"},
+ {20, &ILibraryAppletProxy::GetApplicationFunctions, "GetApplicationFunctions"},
+ {1000, &ILibraryAppletProxy::GetDebugFunctions, "GetDebugFunctions"},
+ };
+ RegisterHandlers(functions);
+ }
+
+private:
+ void GetCommonStateGetter(Kernel::HLERequestContext& ctx) {
+ IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+ rb.Push(RESULT_SUCCESS);
+ rb.PushIpcInterface<ICommonStateGetter>();
+ LOG_DEBUG(Service, "called");
+ }
+
+ void GetSelfController(Kernel::HLERequestContext& ctx) {
+ IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+ rb.Push(RESULT_SUCCESS);
+ rb.PushIpcInterface<ISelfController>(nvflinger);
+ LOG_DEBUG(Service, "called");
+ }
+
+ void GetWindowController(Kernel::HLERequestContext& ctx) {
+ IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+ rb.Push(RESULT_SUCCESS);
+ rb.PushIpcInterface<IWindowController>();
+ LOG_DEBUG(Service, "called");
+ }
+
+ void GetAudioController(Kernel::HLERequestContext& ctx) {
+ IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+ rb.Push(RESULT_SUCCESS);
+ rb.PushIpcInterface<IAudioController>();
+ LOG_DEBUG(Service, "called");
+ }
+
+ void GetDisplayController(Kernel::HLERequestContext& ctx) {
+ IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+ rb.Push(RESULT_SUCCESS);
+ rb.PushIpcInterface<IDisplayController>();
+ LOG_DEBUG(Service, "called");
+ }
+
+ void GetDebugFunctions(Kernel::HLERequestContext& ctx) {
+ IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+ rb.Push(RESULT_SUCCESS);
+ rb.PushIpcInterface<IDebugFunctions>();
+ LOG_DEBUG(Service, "called");
+ }
+
+ void GetLibraryAppletCreator(Kernel::HLERequestContext& ctx) {
+ IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+ rb.Push(RESULT_SUCCESS);
+ rb.PushIpcInterface<ILibraryAppletCreator>();
+ LOG_DEBUG(Service, "called");
+ }
+
+ void GetApplicationFunctions(Kernel::HLERequestContext& ctx) {
+ IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+ rb.Push(RESULT_SUCCESS);
+ rb.PushIpcInterface<IApplicationFunctions>();
+ LOG_DEBUG(Service, "called");
+ }
+
+ std::shared_ptr<NVFlinger::NVFlinger> nvflinger;
+};
+
+void AppletAE::OpenLibraryAppletProxyOld(Kernel::HLERequestContext& ctx) {
+ IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+ rb.Push(RESULT_SUCCESS);
+ rb.PushIpcInterface<ILibraryAppletProxy>(nvflinger);
+ LOG_DEBUG(Service, "called");
+}
+
+AppletAE::AppletAE(std::shared_ptr<NVFlinger::NVFlinger> nvflinger)
+ : ServiceFramework("appletAE"), nvflinger(std::move(nvflinger)) {
+ static const FunctionInfo functions[] = {
+ {100, nullptr, "OpenSystemAppletProxy"},
+ {200, &AppletAE::OpenLibraryAppletProxyOld, "OpenLibraryAppletProxyOld"},
+ {201, nullptr, "OpenLibraryAppletProxy"},
+ {300, nullptr, "OpenOverlayAppletProxy"},
+ {350, nullptr, "OpenSystemApplicationProxy"},
+ {400, nullptr, "CreateSelfLibraryAppletCreatorForDevelop"},
+ };
+ RegisterHandlers(functions);
+}
+
+} // namespace AM
+} // namespace Service