diff options
Diffstat (limited to 'src/core/hle/service/aoc/addon_content_manager.h')
-rw-r--r-- | src/core/hle/service/aoc/addon_content_manager.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/core/hle/service/aoc/addon_content_manager.h b/src/core/hle/service/aoc/addon_content_manager.h new file mode 100644 index 000000000..91857df4c --- /dev/null +++ b/src/core/hle/service/aoc/addon_content_manager.h @@ -0,0 +1,51 @@ +// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "core/hle/service/cmif_types.h" +#include "core/hle/service/kernel_helpers.h" +#include "core/hle/service/service.h" + +namespace Core { +class System; +} + +namespace Kernel { +class KEvent; +} + +namespace Service::AOC { + +class IPurchaseEventManager; + +class IAddOnContentManager final : public ServiceFramework<IAddOnContentManager> { +public: + explicit IAddOnContentManager(Core::System& system); + ~IAddOnContentManager() override; + + Result CountAddOnContent(Out<u32> out_count, ClientProcessId process_id); + Result ListAddOnContent(Out<u32> out_count, OutBuffer<BufferAttr_HipcMapAlias> out_addons, + u32 offset, u32 count, ClientProcessId process_id); + Result GetAddOnContentBaseId(Out<u64> out_title_id, ClientProcessId process_id); + Result PrepareAddOnContent(s32 addon_index, ClientProcessId process_id); + Result GetAddOnContentListChangedEvent(OutCopyHandle<Kernel::KReadableEvent> out_event); + Result GetAddOnContentListChangedEventWithProcessId( + OutCopyHandle<Kernel::KReadableEvent> out_event, ClientProcessId process_id); + Result NotifyMountAddOnContent(); + Result NotifyUnmountAddOnContent(); + Result CheckAddOnContentMountStatus(); + Result CreateEcPurchasedEventManager(OutInterface<IPurchaseEventManager> out_interface); + Result CreatePermanentEcPurchasedEventManager( + OutInterface<IPurchaseEventManager> out_interface); + +private: + std::vector<u64> add_on_content; + KernelHelpers::ServiceContext service_context; + + Kernel::KEvent* aoc_change_event; +}; + +void LoopProcess(Core::System& system); + +} // namespace Service::AOC |