summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/hle/ipc_helpers.h19
-rw-r--r--src/core/hle/service/apm/interface.cpp17
2 files changed, 35 insertions, 1 deletions
diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h
index 24605a273..8b5b06f31 100644
--- a/src/core/hle/ipc_helpers.h
+++ b/src/core/hle/ipc_helpers.h
@@ -175,6 +175,25 @@ public:
175 void Push(const First& first_value, const Other&... other_values); 175 void Push(const First& first_value, const Other&... other_values);
176 176
177 /** 177 /**
178 * Helper function for pushing strongly-typed enumeration values.
179 *
180 * @tparam Enum The enumeration type to be pushed
181 *
182 * @param value The value to push.
183 *
184 * @note The underlying size of the enumeration type is the size of the
185 * data that gets pushed. e.g. "enum class SomeEnum : u16" will
186 * push a u16-sized amount of data.
187 */
188 template <typename Enum>
189 void PushEnum(Enum value) {
190 static_assert(std::is_enum_v<Enum>, "T must be an enum type within a PushEnum call.");
191 static_assert(!std::is_convertible_v<Enum, int>,
192 "enum type in PushEnum must be a strongly typed enum.");
193 Push(static_cast<std::underlying_type_t<Enum>>(value));
194 }
195
196 /**
178 * @brief Copies the content of the given trivially copyable class to the buffer as a normal 197 * @brief Copies the content of the given trivially copyable class to the buffer as a normal
179 * param 198 * param
180 * @note: The input class must be correctly packed/padded to fit hardware layout. 199 * @note: The input class must be correctly packed/padded to fit hardware layout.
diff --git a/src/core/hle/service/apm/interface.cpp b/src/core/hle/service/apm/interface.cpp
index 751d73f8d..ce943d829 100644
--- a/src/core/hle/service/apm/interface.cpp
+++ b/src/core/hle/service/apm/interface.cpp
@@ -20,6 +20,21 @@ public:
20 } 20 }
21 21
22private: 22private:
23 enum class PerformanceConfiguration : u32 {
24 Config1 = 0x00010000,
25 Config2 = 0x00010001,
26 Config3 = 0x00010002,
27 Config4 = 0x00020000,
28 Config5 = 0x00020001,
29 Config6 = 0x00020002,
30 Config7 = 0x00020003,
31 Config8 = 0x00020004,
32 Config9 = 0x00020005,
33 Config10 = 0x00020006,
34 Config11 = 0x92220007,
35 Config12 = 0x92220008,
36 };
37
23 void SetPerformanceConfiguration(Kernel::HLERequestContext& ctx) { 38 void SetPerformanceConfiguration(Kernel::HLERequestContext& ctx) {
24 IPC::RequestParser rp{ctx}; 39 IPC::RequestParser rp{ctx};
25 40
@@ -40,7 +55,7 @@ private:
40 55
41 IPC::ResponseBuilder rb{ctx, 3}; 56 IPC::ResponseBuilder rb{ctx, 3};
42 rb.Push(RESULT_SUCCESS); 57 rb.Push(RESULT_SUCCESS);
43 rb.Push<u32>(0); // Performance configuration 58 rb.Push<u32>(static_cast<u32>(PerformanceConfiguration::Config1));
44 59
45 LOG_WARNING(Service_APM, "(STUBBED) called mode={}", static_cast<u32>(mode)); 60 LOG_WARNING(Service_APM, "(STUBBED) called mode={}", static_cast<u32>(mode));
46 } 61 }