// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include "common/uuid.h" #include "core/hle/service/am/am_types.h" #include "core/hle/service/cmif_types.h" #include "core/hle/service/service.h" namespace FileSys { enum class SaveDataType : u8; } namespace Kernel { class KReadableEvent; } namespace Service::AM { struct Applet; class IStorage; class IApplicationFunctions final : public ServiceFramework { public: explicit IApplicationFunctions(Core::System& system_, std::shared_ptr applet); ~IApplicationFunctions() override; private: Result PopLaunchParameter(Out> out_storage, LaunchParameterKind launch_parameter_kind); Result EnsureSaveData(Out out_size, Common::UUID user_id); Result GetDesiredLanguage(Out out_language_code); Result SetTerminateResult(Result terminate_result); Result GetDisplayVersion(Out out_display_version); Result ExtendSaveData(Out out_required_size, FileSys::SaveDataType type, Common::UUID user_id, u64 normal_size, u64 journal_size); Result GetSaveDataSize(Out out_normal_size, Out out_journal_size, FileSys::SaveDataType type, Common::UUID user_id); Result CreateCacheStorage(Out out_target_media, Out out_required_size, u16 index, u64 normal_size, u64 journal_size); Result GetSaveDataSizeMax(Out out_max_normal_size, Out out_max_journal_size); Result GetCacheStorageMax(Out out_cache_storage_index_max, Out out_max_journal_size); Result BeginBlockingHomeButtonShortAndLongPressed(s64 unused); Result EndBlockingHomeButtonShortAndLongPressed(); Result BeginBlockingHomeButton(s64 timeout_ns); Result EndBlockingHomeButton(); Result NotifyRunning(Out out_became_running); Result GetPseudoDeviceId(Out out_pseudo_device_id); Result IsGamePlayRecordingSupported(Out out_is_game_play_recording_supported); Result InitializeGamePlayRecording( u64 transfer_memory_size, InCopyHandle transfer_memory_handle); Result SetGamePlayRecordingState(GamePlayRecordingState game_play_recording_state); Result EnableApplicationCrashReport(bool enabled); Result InitializeApplicationCopyrightFrameBuffer( s32 width, s32 height, u64 transfer_memory_size, InCopyHandle transfer_memory_handle); Result SetApplicationCopyrightImage( s32 x, s32 y, s32 width, s32 height, WindowOriginMode window_origin_mode, InBuffer image_data); Result SetApplicationCopyrightVisibility(bool visible); Result QueryApplicationPlayStatistics( Out out_entries, OutArray out_play_statistics, InArray application_ids); Result QueryApplicationPlayStatisticsByUid( Out out_entries, OutArray out_play_statistics, Common::UUID user_id, InArray application_ids); Result ExecuteProgram(ProgramSpecifyKind kind, u64 value); Result ClearUserChannel(); Result UnpopToUserChannel(SharedPointer storage); Result GetPreviousProgramIndex(Out out_previous_program_index); Result GetGpuErrorDetectedSystemEvent(OutCopyHandle out_event); Result GetFriendInvitationStorageChannelEvent(OutCopyHandle out_event); Result TryPopFromFriendInvitationStorageChannel(Out> out_storage); Result GetNotificationStorageChannelEvent(OutCopyHandle out_event); Result GetHealthWarningDisappearedSystemEvent(OutCopyHandle out_event); Result PrepareForJit(); const std::shared_ptr m_applet; }; } // namespace Service::AM