// Copyright 2020 yuzu Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. #include "common/logging/log.h" #include "core/hle/ipc_helpers.h" #include "core/hle/service/caps/caps.h" #include "core/hle/service/caps/caps_u.h" namespace Service::Capture { class IAlbumAccessorApplicationSession final : public ServiceFramework { public: explicit IAlbumAccessorApplicationSession() : ServiceFramework{"IAlbumAccessorApplicationSession"} { // clang-format off static const FunctionInfo functions[] = { {2001, nullptr, "OpenAlbumMovieReadStream"}, {2002, nullptr, "CloseAlbumMovieReadStream"}, {2003, nullptr, "GetAlbumMovieReadStreamMovieDataSize"}, {2004, nullptr, "ReadMovieDataFromAlbumMovieReadStream"}, {2005, nullptr, "GetAlbumMovieReadStreamBrokenReason"}, }; // clang-format on RegisterHandlers(functions); } }; CAPS_U::CAPS_U() : ServiceFramework("caps:u") { // clang-format off static const FunctionInfo functions[] = { {31, nullptr, "GetShimLibraryVersion"}, {32, nullptr, "SetShimLibraryVersion"}, {102, &CAPS_U::GetAlbumContentsFileListForApplication, "GetAlbumContentsFileListForApplication"}, {103, nullptr, "DeleteAlbumContentsFileForApplication"}, {104, nullptr, "GetAlbumContentsFileSizeForApplication"}, {105, nullptr, "DeleteAlbumFileByAruidForDebug"}, {110, nullptr, "LoadAlbumContentsFileScreenShotImageForApplication"}, {120, nullptr, "LoadAlbumContentsFileThumbnailImageForApplication"}, {130, nullptr, "PrecheckToCreateContentsForApplication"}, {140, nullptr, "GetAlbumFileList1AafeAruidDeprecated"}, {141, nullptr, "GetAlbumFileList2AafeUidAruidDeprecated"}, {142, nullptr, "GetAlbumFileList3AaeAruid"}, {143, nullptr, "GetAlbumFileList4AaeUidAruid"}, {60002, nullptr, "OpenAccessorSessionForApplication"}, }; // clang-format on RegisterHandlers(functions); } CAPS_U::~CAPS_U() = default; void CAPS_U::GetAlbumContentsFileListForApplication(Kernel::HLERequestContext& ctx) { // Takes a type-0x6 output buffer containing an array of ApplicationAlbumFileEntry, a PID, an // u8 ContentType, two s64s, and an u64 AppletResourceUserId. Returns an output u64 for total // output entries (which is copied to a s32 by official SW). IPC::RequestParser rp{ctx}; [[maybe_unused]] const auto application_album_file_entries = rp.PopRaw>(); const auto pid = rp.Pop(); const auto content_type = rp.PopRaw(); [[maybe_unused]] const auto start_datetime = rp.PopRaw(); [[maybe_unused]] const auto end_datetime = rp.PopRaw(); const auto applet_resource_user_id = rp.Pop(); LOG_WARNING(Service_Capture, "(STUBBED) called. pid={}, content_type={}, applet_resource_user_id={}", pid, content_type, applet_resource_user_id); IPC::ResponseBuilder rb{ctx, 3}; rb.Push(RESULT_SUCCESS); rb.Push(0); } } // namespace Service::Capture