diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/core/hle/service/aoc/aoc_u.cpp | 79 | ||||
-rw-r--r-- | src/core/hle/service/aoc/purchase_event_manager.cpp | 79 | ||||
-rw-r--r-- | src/core/hle/service/aoc/purchase_event_manager.h | 28 |
4 files changed, 110 insertions, 78 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index fa5c4de37..d923a9a55 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -483,6 +483,8 @@ add_library(core STATIC hle/service/am/service/window_controller.h hle/service/aoc/aoc_u.cpp hle/service/aoc/aoc_u.h + hle/service/aoc/purchase_event_manager.cpp + hle/service/aoc/purchase_event_manager.h hle/service/apm/apm.cpp hle/service/apm/apm.h hle/service/apm/apm_controller.cpp diff --git a/src/core/hle/service/aoc/aoc_u.cpp b/src/core/hle/service/aoc/aoc_u.cpp index 486719cc0..31c7385ee 100644 --- a/src/core/hle/service/aoc/aoc_u.cpp +++ b/src/core/hle/service/aoc/aoc_u.cpp @@ -16,14 +16,13 @@ #include "core/file_sys/registered_cache.h" #include "core/hle/kernel/k_event.h" #include "core/hle/service/aoc/aoc_u.h" +#include "core/hle/service/aoc/purchase_event_manager.h" #include "core/hle/service/ipc_helpers.h" #include "core/hle/service/server_manager.h" #include "core/loader/loader.h" namespace Service::AOC { -constexpr Result ResultNoPurchasedProductInfoAvailable{ErrorModule::NIMShop, 400}; - static bool CheckAOCTitleIDMatchesBase(u64 title_id, u64 base) { return FileSys::GetBaseTitleID(title_id) == base; } @@ -46,82 +45,6 @@ static std::vector<u64> AccumulateAOCTitleIDs(Core::System& system) { return add_on_content; } -class IPurchaseEventManager final : public ServiceFramework<IPurchaseEventManager> { -public: - explicit IPurchaseEventManager(Core::System& system_) - : ServiceFramework{system_, "IPurchaseEventManager"}, service_context{ - system, "IPurchaseEventManager"} { - // clang-format off - static const FunctionInfo functions[] = { - {0, &IPurchaseEventManager::SetDefaultDeliveryTarget, "SetDefaultDeliveryTarget"}, - {1, &IPurchaseEventManager::SetDeliveryTarget, "SetDeliveryTarget"}, - {2, &IPurchaseEventManager::GetPurchasedEventReadableHandle, "GetPurchasedEventReadableHandle"}, - {3, &IPurchaseEventManager::PopPurchasedProductInfo, "PopPurchasedProductInfo"}, - {4, &IPurchaseEventManager::PopPurchasedProductInfoWithUid, "PopPurchasedProductInfoWithUid"}, - }; - // clang-format on - - RegisterHandlers(functions); - - purchased_event = service_context.CreateEvent("IPurchaseEventManager:PurchasedEvent"); - } - - ~IPurchaseEventManager() override { - service_context.CloseEvent(purchased_event); - } - -private: - void SetDefaultDeliveryTarget(HLERequestContext& ctx) { - IPC::RequestParser rp{ctx}; - - const auto unknown_1 = rp.Pop<u64>(); - [[maybe_unused]] const auto unknown_2 = ctx.ReadBuffer(); - - LOG_WARNING(Service_AOC, "(STUBBED) called, unknown_1={}", unknown_1); - - IPC::ResponseBuilder rb{ctx, 2}; - rb.Push(ResultSuccess); - } - - void SetDeliveryTarget(HLERequestContext& ctx) { - IPC::RequestParser rp{ctx}; - - const auto unknown_1 = rp.Pop<u64>(); - [[maybe_unused]] const auto unknown_2 = ctx.ReadBuffer(); - - LOG_WARNING(Service_AOC, "(STUBBED) called, unknown_1={}", unknown_1); - - IPC::ResponseBuilder rb{ctx, 2}; - rb.Push(ResultSuccess); - } - - void GetPurchasedEventReadableHandle(HLERequestContext& ctx) { - LOG_WARNING(Service_AOC, "called"); - - IPC::ResponseBuilder rb{ctx, 2, 1}; - rb.Push(ResultSuccess); - rb.PushCopyObjects(purchased_event->GetReadableEvent()); - } - - void PopPurchasedProductInfo(HLERequestContext& ctx) { - LOG_DEBUG(Service_AOC, "(STUBBED) called"); - - IPC::ResponseBuilder rb{ctx, 2}; - rb.Push(ResultNoPurchasedProductInfoAvailable); - } - - void PopPurchasedProductInfoWithUid(HLERequestContext& ctx) { - LOG_DEBUG(Service_AOC, "(STUBBED) called"); - - IPC::ResponseBuilder rb{ctx, 2}; - rb.Push(ResultNoPurchasedProductInfoAvailable); - } - - KernelHelpers::ServiceContext service_context; - - Kernel::KEvent* purchased_event; -}; - AOC_U::AOC_U(Core::System& system_) : ServiceFramework{system_, "aoc:u"}, add_on_content{AccumulateAOCTitleIDs(system)}, service_context{system_, "aoc:u"} { diff --git a/src/core/hle/service/aoc/purchase_event_manager.cpp b/src/core/hle/service/aoc/purchase_event_manager.cpp new file mode 100644 index 000000000..83124cd21 --- /dev/null +++ b/src/core/hle/service/aoc/purchase_event_manager.cpp @@ -0,0 +1,79 @@ +// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "core/hle/service/aoc/purchase_event_manager.h" +#include "core/hle/service/ipc_helpers.h" + +namespace Service::AOC { + +constexpr Result ResultNoPurchasedProductInfoAvailable{ErrorModule::NIMShop, 400}; + +IPurchaseEventManager::IPurchaseEventManager(Core::System& system_) + : ServiceFramework{system_, "IPurchaseEventManager"}, + service_context{system, "IPurchaseEventManager"} { + // clang-format off + static const FunctionInfo functions[] = { + {0, &IPurchaseEventManager::SetDefaultDeliveryTarget, "SetDefaultDeliveryTarget"}, + {1, &IPurchaseEventManager::SetDeliveryTarget, "SetDeliveryTarget"}, + {2, &IPurchaseEventManager::GetPurchasedEventReadableHandle, "GetPurchasedEventReadableHandle"}, + {3, &IPurchaseEventManager::PopPurchasedProductInfo, "PopPurchasedProductInfo"}, + {4, &IPurchaseEventManager::PopPurchasedProductInfoWithUid, "PopPurchasedProductInfoWithUid"}, + }; + // clang-format on + + RegisterHandlers(functions); + + purchased_event = service_context.CreateEvent("IPurchaseEventManager:PurchasedEvent"); +} + +IPurchaseEventManager::~IPurchaseEventManager() { + service_context.CloseEvent(purchased_event); +} + +void IPurchaseEventManager::SetDefaultDeliveryTarget(HLERequestContext& ctx) { + IPC::RequestParser rp{ctx}; + + const auto unknown_1 = rp.Pop<u64>(); + [[maybe_unused]] const auto unknown_2 = ctx.ReadBuffer(); + + LOG_WARNING(Service_AOC, "(STUBBED) called, unknown_1={}", unknown_1); + + IPC::ResponseBuilder rb{ctx, 2}; + rb.Push(ResultSuccess); +} + +void IPurchaseEventManager::SetDeliveryTarget(HLERequestContext& ctx) { + IPC::RequestParser rp{ctx}; + + const auto unknown_1 = rp.Pop<u64>(); + [[maybe_unused]] const auto unknown_2 = ctx.ReadBuffer(); + + LOG_WARNING(Service_AOC, "(STUBBED) called, unknown_1={}", unknown_1); + + IPC::ResponseBuilder rb{ctx, 2}; + rb.Push(ResultSuccess); +} + +void IPurchaseEventManager::GetPurchasedEventReadableHandle(HLERequestContext& ctx) { + LOG_WARNING(Service_AOC, "called"); + + IPC::ResponseBuilder rb{ctx, 2, 1}; + rb.Push(ResultSuccess); + rb.PushCopyObjects(purchased_event->GetReadableEvent()); +} + +void IPurchaseEventManager::PopPurchasedProductInfo(HLERequestContext& ctx) { + LOG_DEBUG(Service_AOC, "(STUBBED) called"); + + IPC::ResponseBuilder rb{ctx, 2}; + rb.Push(ResultNoPurchasedProductInfoAvailable); +} + +void IPurchaseEventManager::PopPurchasedProductInfoWithUid(HLERequestContext& ctx) { + LOG_DEBUG(Service_AOC, "(STUBBED) called"); + + IPC::ResponseBuilder rb{ctx, 2}; + rb.Push(ResultNoPurchasedProductInfoAvailable); +} + +} // namespace Service::AOC diff --git a/src/core/hle/service/aoc/purchase_event_manager.h b/src/core/hle/service/aoc/purchase_event_manager.h new file mode 100644 index 000000000..efde3c8f3 --- /dev/null +++ b/src/core/hle/service/aoc/purchase_event_manager.h @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "core/hle/service/kernel_helpers.h" +#include "core/hle/service/os/event.h" +#include "core/hle/service/service.h" + +namespace Service::AOC { + +class IPurchaseEventManager final : public ServiceFramework<IPurchaseEventManager> { +public: + explicit IPurchaseEventManager(Core::System& system_); + ~IPurchaseEventManager() override; + + void SetDefaultDeliveryTarget(HLERequestContext& ctx); + void SetDeliveryTarget(HLERequestContext& ctx); + void GetPurchasedEventReadableHandle(HLERequestContext& ctx); + void PopPurchasedProductInfo(HLERequestContext& ctx); + void PopPurchasedProductInfoWithUid(HLERequestContext& ctx); + +private: + KernelHelpers::ServiceContext service_context; + Kernel::KEvent* purchased_event; +}; + +} // namespace Service::AOC |