diff options
| -rw-r--r-- | src/core/hle/service/am/am.cpp | 22 |
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 | ||
| 29 | namespace Service::AM { | 33 | namespace Service::AM { |
| 30 | 34 | ||
| 35 | enum class AppletId : u32 { | ||
| 36 | SoftwareKeyboard = 0x11, | ||
| 37 | }; | ||
| 38 | |||
| 31 | constexpr u32 POP_LAUNCH_PARAMETER_MAGIC = 0xC79497CA; | 39 | constexpr u32 POP_LAUNCH_PARAMETER_MAGIC = 0xC79497CA; |
| 32 | 40 | ||
| 33 | struct LaunchParameters { | 41 | struct 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}; |