summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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 @@
6#include <cinttypes> 6#include <cinttypes>
7#include <cstring> 7#include <cstring>
8#include <stack> 8#include <stack>
9#include "applets/applets.h"
10#include "applets/software_keyboard.h"
11#include "audio_core/audio_renderer.h"
9#include "core/core.h" 12#include "core/core.h"
10#include "core/hle/ipc_helpers.h" 13#include "core/hle/ipc_helpers.h"
11#include "core/hle/kernel/event.h" 14#include "core/hle/kernel/event.h"
12#include "core/hle/kernel/process.h" 15#include "core/hle/kernel/process.h"
16#include "core/hle/kernel/shared_memory.h"
13#include "core/hle/service/acc/profile_manager.h" 17#include "core/hle/service/acc/profile_manager.h"
14#include "core/hle/service/am/am.h" 18#include "core/hle/service/am/am.h"
15#include "core/hle/service/am/applet_ae.h" 19#include "core/hle/service/am/applet_ae.h"
@@ -28,6 +32,10 @@
28 32
29namespace Service::AM { 33namespace Service::AM {
30 34
35enum class AppletId : u32 {
36 SoftwareKeyboard = 0x11,
37};
38
31constexpr u32 POP_LAUNCH_PARAMETER_MAGIC = 0xC79497CA; 39constexpr u32 POP_LAUNCH_PARAMETER_MAGIC = 0xC79497CA;
32 40
33struct LaunchParameters { 41struct LaunchParameters {
@@ -571,13 +579,17 @@ private:
571 LOG_WARNING(Service_AM, "(STUBBED) called"); 579 LOG_WARNING(Service_AM, "(STUBBED) called");
572 } 580 }
573 581
574 void Write(Kernel::HLERequestContext& ctx) { 582 void Start(Kernel::HLERequestContext& ctx) {
575 IPC::RequestParser rp{ctx}; 583 ASSERT(applet != nullptr);
576 584
577 const u64 offset{rp.Pop<u64>()}; 585 applet->Initialize(storage_stack);
578 const std::vector<u8> data{ctx.ReadBuffer()}; 586 interactive_storage_stack.push_back(std::make_shared<IStorage>(applet->Execute()));
587 state_changed_event->Signal();
588 pop_interactive_out_data_event->Signal();
579 589
580 ASSERT(offset + data.size() <= buffer.size()); 590 IPC::ResponseBuilder rb{ctx, 2};
591 rb.Push(RESULT_SUCCESS);
592 }
581 593
582 void PushInData(Kernel::HLERequestContext& ctx) { 594 void PushInData(Kernel::HLERequestContext& ctx) {
583 IPC::RequestParser rp{ctx}; 595 IPC::RequestParser rp{ctx};