diff options
Diffstat (limited to 'src/core/hle/service/caps/caps_u.cpp')
-rw-r--r-- | src/core/hle/service/caps/caps_u.cpp | 110 |
1 files changed, 25 insertions, 85 deletions
diff --git a/src/core/hle/service/caps/caps_u.cpp b/src/core/hle/service/caps/caps_u.cpp index b6b33fb2f..40d4d05fe 100644 --- a/src/core/hle/service/caps/caps_u.cpp +++ b/src/core/hle/service/caps/caps_u.cpp @@ -5,6 +5,7 @@ #include "core/hle/service/caps/caps_manager.h" #include "core/hle/service/caps/caps_types.h" #include "core/hle/service/caps/caps_u.h" +#include "core/hle/service/cmif_serialization.h" #include "core/hle/service/ipc_helpers.h" namespace Service::Capture { @@ -14,8 +15,8 @@ IAlbumApplicationService::IAlbumApplicationService(Core::System& system_, : ServiceFramework{system_, "caps:u"}, manager{album_manager} { // clang-format off static const FunctionInfo functions[] = { - {32, &IAlbumApplicationService::SetShimLibraryVersion, "SetShimLibraryVersion"}, - {102, &IAlbumApplicationService::GetAlbumFileList0AafeAruidDeprecated, "GetAlbumFileList0AafeAruidDeprecated"}, + {32, C<&IAlbumApplicationService::SetShimLibraryVersion>, "SetShimLibraryVersion"}, + {102, C<&IAlbumApplicationService::GetAlbumFileList0AafeAruidDeprecated>, "GetAlbumFileList0AafeAruidDeprecated"}, {103, nullptr, "DeleteAlbumFileByAruid"}, {104, nullptr, "GetAlbumFileSizeByAruid"}, {105, nullptr, "DeleteAlbumFileByAruidForDebug"}, @@ -24,7 +25,7 @@ IAlbumApplicationService::IAlbumApplicationService(Core::System& system_, {130, nullptr, "PrecheckToCreateContentsByAruid"}, {140, nullptr, "GetAlbumFileList1AafeAruidDeprecated"}, {141, nullptr, "GetAlbumFileList2AafeUidAruidDeprecated"}, - {142, &IAlbumApplicationService::GetAlbumFileList3AaeAruid, "GetAlbumFileList3AaeAruid"}, + {142, C<&IAlbumApplicationService::GetAlbumFileList3AaeAruid>, "GetAlbumFileList3AaeAruid"}, {143, nullptr, "GetAlbumFileList4AaeUidAruid"}, {144, nullptr, "GetAllAlbumFileList3AaeAruid"}, {60002, nullptr, "OpenAccessorSessionForApplication"}, @@ -36,101 +37,40 @@ IAlbumApplicationService::IAlbumApplicationService(Core::System& system_, IAlbumApplicationService::~IAlbumApplicationService() = default; -void IAlbumApplicationService::SetShimLibraryVersion(HLERequestContext& ctx) { - IPC::RequestParser rp{ctx}; - const auto library_version{rp.Pop<u64>()}; - const auto applet_resource_user_id{rp.Pop<u64>()}; - +Result IAlbumApplicationService::SetShimLibraryVersion(ShimLibraryVersion library_version, + ClientAppletResourceUserId aruid) { LOG_WARNING(Service_Capture, "(STUBBED) called. library_version={}, applet_resource_user_id={}", - library_version, applet_resource_user_id); - - IPC::ResponseBuilder rb{ctx, 2}; - rb.Push(ResultSuccess); + library_version, aruid.pid); + R_SUCCEED(); } -void IAlbumApplicationService::GetAlbumFileList0AafeAruidDeprecated(HLERequestContext& ctx) { - IPC::RequestParser rp{ctx}; - struct Parameters { - ContentType content_type; - INSERT_PADDING_BYTES(7); - s64 start_posix_time; - s64 end_posix_time; - u64 applet_resource_user_id; - }; - static_assert(sizeof(Parameters) == 0x20, "Parameters has incorrect size."); - - const auto parameters{rp.PopRaw<Parameters>()}; - +Result IAlbumApplicationService::GetAlbumFileList0AafeAruidDeprecated( + Out<u64> out_entries_count, ContentType content_type, s64 start_posix_time, s64 end_posix_time, + ClientAppletResourceUserId aruid, + OutArray<ApplicationAlbumFileEntry, BufferAttr_HipcMapAlias> out_entries) { LOG_WARNING(Service_Capture, "(STUBBED) called. content_type={}, start_posix_time={}, end_posix_time={}, " "applet_resource_user_id={}", - parameters.content_type, parameters.start_posix_time, parameters.end_posix_time, - parameters.applet_resource_user_id); - - Result result = ResultSuccess; - - if (result.IsSuccess()) { - result = manager->IsAlbumMounted(AlbumStorage::Sd); - } - - std::vector<ApplicationAlbumFileEntry> entries; - if (result.IsSuccess()) { - result = manager->GetAlbumFileList(entries, parameters.content_type, - parameters.start_posix_time, parameters.end_posix_time, - parameters.applet_resource_user_id); - } + content_type, start_posix_time, end_posix_time, aruid.pid); - if (!entries.empty()) { - ctx.WriteBuffer(entries); - } - - IPC::ResponseBuilder rb{ctx, 4}; - rb.Push(result); - rb.Push<u64>(entries.size()); + R_TRY(manager->IsAlbumMounted(AlbumStorage::Sd)); + R_RETURN(manager->GetAlbumFileList(out_entries, *out_entries_count, content_type, + start_posix_time, end_posix_time, aruid.pid)); } -void IAlbumApplicationService::GetAlbumFileList3AaeAruid(HLERequestContext& ctx) { - IPC::RequestParser rp{ctx}; - struct Parameters { - ContentType content_type; - INSERT_PADDING_BYTES(1); - AlbumFileDateTime start_date_time; - AlbumFileDateTime end_date_time; - INSERT_PADDING_BYTES(6); - u64 applet_resource_user_id; - }; - static_assert(sizeof(Parameters) == 0x20, "Parameters has incorrect size."); - - const auto parameters{rp.PopRaw<Parameters>()}; - +Result IAlbumApplicationService::GetAlbumFileList3AaeAruid( + Out<u64> out_entries_count, ContentType content_type, AlbumFileDateTime start_date_time, + AlbumFileDateTime end_date_time, ClientAppletResourceUserId aruid, + OutArray<ApplicationAlbumEntry, BufferAttr_HipcMapAlias> out_entries) { LOG_WARNING(Service_Capture, "(STUBBED) called. content_type={}, start_date={}/{}/{}, " "end_date={}/{}/{}, applet_resource_user_id={}", - parameters.content_type, parameters.start_date_time.year, - parameters.start_date_time.month, parameters.start_date_time.day, - parameters.end_date_time.year, parameters.end_date_time.month, - parameters.end_date_time.day, parameters.applet_resource_user_id); - - Result result = ResultSuccess; - - if (result.IsSuccess()) { - result = manager->IsAlbumMounted(AlbumStorage::Sd); - } - - std::vector<ApplicationAlbumEntry> entries; - if (result.IsSuccess()) { - result = - manager->GetAlbumFileList(entries, parameters.content_type, parameters.start_date_time, - parameters.end_date_time, parameters.applet_resource_user_id); - } - - if (!entries.empty()) { - ctx.WriteBuffer(entries); - } + content_type, start_date_time.year, start_date_time.month, start_date_time.day, + end_date_time.year, end_date_time.month, end_date_time.day, aruid.pid); - IPC::ResponseBuilder rb{ctx, 4}; - rb.Push(result); - rb.Push<u64>(entries.size()); + R_TRY(manager->IsAlbumMounted(AlbumStorage::Sd)); + R_RETURN(manager->GetAlbumFileList(out_entries, *out_entries_count, content_type, + start_date_time, end_date_time, aruid.pid)); } } // namespace Service::Capture |