aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/service/apm/apm.cpp
diff options
context:
space:
mode:
authorSubv <subv2112@gmail.com>2018-01-15 17:19:32 -0500
committerbunnei <bunneidev@gmail.com>2018-01-16 19:00:32 -0500
commitc5a0408ccca4af6dc27e627a077d5480a3784e84 (patch)
tree2fc577a9889dcf605e21ef66768bd177fe1a5674 /src/core/hle/service/apm/apm.cpp
parentf7dc637a616fd202f213a1a8eac4888167462825 (diff)
Services: Stubbed APM::OpenSession and the ISession interface.
# Conflicts: # src/core/hle/service/am/applet_oe.cpp # src/core/hle/service/apm/apm.cpp
Diffstat (limited to 'src/core/hle/service/apm/apm.cpp')
-rw-r--r--src/core/hle/service/apm/apm.cpp44
1 files changed, 43 insertions, 1 deletions
diff --git a/src/core/hle/service/apm/apm.cpp b/src/core/hle/service/apm/apm.cpp
index 957abdd66..66d94ff52 100644
--- a/src/core/hle/service/apm/apm.cpp
+++ b/src/core/hle/service/apm/apm.cpp
@@ -13,12 +13,54 @@ void InstallInterfaces(SM::ServiceManager& service_manager) {
std::make_shared<APM>()->InstallAsService(service_manager);
}
+class ISession final : public ServiceFramework<ISession> {
+public:
+ ISession() : ServiceFramework("ISession") {
+ static const FunctionInfo functions[] = {
+ {0, &ISession::SetPerformanceConfiguration, "SetPerformanceConfiguration"},
+ {1, &ISession::GetPerformanceConfiguration, "GetPerformanceConfiguration"},
+ };
+ RegisterHandlers(functions);
+ }
+
+private:
+ void SetPerformanceConfiguration(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+
+ auto mode = static_cast<PerformanceMode>(rp.Pop<u32>());
+ u32 config = rp.Pop<u32>();
+
+ IPC::RequestBuilder rb{ctx, 2};
+ rb.Push(RESULT_SUCCESS);
+
+ LOG_WARNING(Service, "(STUBBED) called mode=%u config=%u", static_cast<u32>(mode), config);
+ }
+
+ void GetPerformanceConfiguration(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+
+ auto mode = static_cast<PerformanceMode>(rp.Pop<u32>());
+
+ IPC::RequestBuilder rb{ctx, 3};
+ rb.Push(RESULT_SUCCESS);
+ rb.Push<u32>(0); // Performance configuration
+
+ LOG_WARNING(Service, "(STUBBED) called mode=%u", static_cast<u32>(mode));
+ }
+};
+
APM::APM() : ServiceFramework("apm") {
static const FunctionInfo functions[] = {
- {0x00000000, nullptr, "OpenSession"}, {0x00000001, nullptr, "GetPerformanceMode"},
+ {0x00000000, &APM::OpenSession, "OpenSession"}, {0x00000001, nullptr, "GetPerformanceMode"},
};
RegisterHandlers(functions);
}
+void APM::OpenSession(Kernel::HLERequestContext& ctx) {
+ IPC::RequestBuilder rb{ctx, 2, 0, 0, 1};
+ rb.Push(RESULT_SUCCESS);
+ rb.PushIpcInterface<ISession>();
+}
+
} // namespace APM
} // namespace Service