caps_u.cpp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include "common/logging/log.h"
  4. #include "core/hle/service/caps/caps_manager.h"
  5. #include "core/hle/service/caps/caps_types.h"
  6. #include "core/hle/service/caps/caps_u.h"
  7. #include "core/hle/service/ipc_helpers.h"
  8. namespace Service::Capture {
  9. IAlbumApplicationService::IAlbumApplicationService(Core::System& system_,
  10. std::shared_ptr<AlbumManager> album_manager)
  11. : ServiceFramework{system_, "caps:u"}, manager{album_manager} {
  12. // clang-format off
  13. static const FunctionInfo functions[] = {
  14. {32, &IAlbumApplicationService::SetShimLibraryVersion, "SetShimLibraryVersion"},
  15. {102, &IAlbumApplicationService::GetAlbumFileList0AafeAruidDeprecated, "GetAlbumFileList0AafeAruidDeprecated"},
  16. {103, nullptr, "DeleteAlbumFileByAruid"},
  17. {104, nullptr, "GetAlbumFileSizeByAruid"},
  18. {105, nullptr, "DeleteAlbumFileByAruidForDebug"},
  19. {110, nullptr, "LoadAlbumScreenShotImageByAruid"},
  20. {120, nullptr, "LoadAlbumScreenShotThumbnailImageByAruid"},
  21. {130, nullptr, "PrecheckToCreateContentsByAruid"},
  22. {140, nullptr, "GetAlbumFileList1AafeAruidDeprecated"},
  23. {141, nullptr, "GetAlbumFileList2AafeUidAruidDeprecated"},
  24. {142, &IAlbumApplicationService::GetAlbumFileList3AaeAruid, "GetAlbumFileList3AaeAruid"},
  25. {143, nullptr, "GetAlbumFileList4AaeUidAruid"},
  26. {144, nullptr, "GetAllAlbumFileList3AaeAruid"},
  27. {60002, nullptr, "OpenAccessorSessionForApplication"},
  28. };
  29. // clang-format on
  30. RegisterHandlers(functions);
  31. }
  32. IAlbumApplicationService::~IAlbumApplicationService() = default;
  33. void IAlbumApplicationService::SetShimLibraryVersion(HLERequestContext& ctx) {
  34. IPC::RequestParser rp{ctx};
  35. const auto library_version{rp.Pop<u64>()};
  36. const auto applet_resource_user_id{rp.Pop<u64>()};
  37. LOG_WARNING(Service_Capture, "(STUBBED) called. library_version={}, applet_resource_user_id={}",
  38. library_version, applet_resource_user_id);
  39. IPC::ResponseBuilder rb{ctx, 2};
  40. rb.Push(ResultSuccess);
  41. }
  42. void IAlbumApplicationService::GetAlbumFileList0AafeAruidDeprecated(HLERequestContext& ctx) {
  43. IPC::RequestParser rp{ctx};
  44. const auto pid{rp.Pop<s32>()};
  45. const auto content_type{rp.PopEnum<ContentType>()};
  46. const auto start_posix_time{rp.Pop<s64>()};
  47. const auto end_posix_time{rp.Pop<s64>()};
  48. const auto applet_resource_user_id{rp.Pop<u64>()};
  49. LOG_WARNING(Service_Capture,
  50. "(STUBBED) called. pid={}, content_type={}, start_posix_time={}, "
  51. "end_posix_time={}, applet_resource_user_id={}",
  52. pid, content_type, start_posix_time, end_posix_time, applet_resource_user_id);
  53. // TODO: Translate posix to DateTime
  54. std::vector<ApplicationAlbumFileEntry> entries;
  55. const Result result =
  56. manager->GetAlbumFileList(entries, content_type, {}, {}, applet_resource_user_id);
  57. if (!entries.empty()) {
  58. ctx.WriteBuffer(entries);
  59. }
  60. IPC::ResponseBuilder rb{ctx, 4};
  61. rb.Push(result);
  62. rb.Push<u64>(entries.size());
  63. }
  64. void IAlbumApplicationService::GetAlbumFileList3AaeAruid(HLERequestContext& ctx) {
  65. IPC::RequestParser rp{ctx};
  66. const auto pid{rp.Pop<s32>()};
  67. const auto content_type{rp.PopEnum<ContentType>()};
  68. const auto start_date_time{rp.PopRaw<AlbumFileDateTime>()};
  69. const auto end_date_time{rp.PopRaw<AlbumFileDateTime>()};
  70. const auto applet_resource_user_id{rp.Pop<u64>()};
  71. LOG_WARNING(Service_Capture,
  72. "(STUBBED) called. pid={}, content_type={}, applet_resource_user_id={}", pid,
  73. content_type, applet_resource_user_id);
  74. std::vector<ApplicationAlbumFileEntry> entries;
  75. const Result result = manager->GetAlbumFileList(entries, content_type, start_date_time,
  76. end_date_time, applet_resource_user_id);
  77. if (!entries.empty()) {
  78. ctx.WriteBuffer(entries);
  79. }
  80. IPC::ResponseBuilder rb{ctx, 4};
  81. rb.Push(result);
  82. rb.Push<u64>(entries.size());
  83. }
  84. } // namespace Service::Capture