summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZach Hilman <zachhilman@gmail.com>2018-11-10 02:08:25 +0100
committerZach Hilman <zachhilman@gmail.com>2018-11-18 16:53:47 +0100
commit731b4bd69185e741282415b66cc39fd482c039b9 (patch)
tree31bdb4c25b72310a26f8380daae7d0a754659af3
parentam: Implement PopInteractiveOutData and PushInteractiveInData (diff)
downloadyuzu-731b4bd69185e741282415b66cc39fd482c039b9.tar
yuzu-731b4bd69185e741282415b66cc39fd482c039b9.tar.gz
yuzu-731b4bd69185e741282415b66cc39fd482c039b9.tar.bz2
yuzu-731b4bd69185e741282415b66cc39fd482c039b9.tar.lz
yuzu-731b4bd69185e741282415b66cc39fd482c039b9.tar.xz
yuzu-731b4bd69185e741282415b66cc39fd482c039b9.tar.zst
yuzu-731b4bd69185e741282415b66cc39fd482c039b9.zip
-rw-r--r--src/core/hle/service/am/am.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index b78489df7..4b7aacbac 100644
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -6,10 +6,14 @@
#include <cinttypes>
#include <cstring>
#include <stack>
+#include "applets/applets.h"
+#include "applets/software_keyboard.h"
+#include "audio_core/audio_renderer.h"
#include "core/core.h"
#include "core/hle/ipc_helpers.h"
#include "core/hle/kernel/event.h"
#include "core/hle/kernel/process.h"
+#include "core/hle/kernel/shared_memory.h"
#include "core/hle/service/acc/profile_manager.h"
#include "core/hle/service/am/am.h"
#include "core/hle/service/am/applet_ae.h"
@@ -28,6 +32,10 @@
namespace Service::AM {
+enum class AppletId : u32 {
+ SoftwareKeyboard = 0x11,
+};
+
constexpr u32 POP_LAUNCH_PARAMETER_MAGIC = 0xC79497CA;
struct LaunchParameters {
@@ -571,13 +579,17 @@ private:
LOG_WARNING(Service_AM, "(STUBBED) called");
}
- void Write(Kernel::HLERequestContext& ctx) {
- IPC::RequestParser rp{ctx};
+ void Start(Kernel::HLERequestContext& ctx) {
+ ASSERT(applet != nullptr);
- const u64 offset{rp.Pop<u64>()};
- const std::vector<u8> data{ctx.ReadBuffer()};
+ applet->Initialize(storage_stack);
+ interactive_storage_stack.push_back(std::make_shared<IStorage>(applet->Execute()));
+ state_changed_event->Signal();
+ pop_interactive_out_data_event->Signal();
- ASSERT(offset + data.size() <= buffer.size());
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(RESULT_SUCCESS);
+ }
void PushInData(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};