acc.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // Copyright 2018 yuzu emulator team
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include "common/uuid.h"
  6. #include "core/hle/service/glue/glue_manager.h"
  7. #include "core/hle/service/service.h"
  8. namespace Service::Account {
  9. class ProfileManager;
  10. class Module final {
  11. public:
  12. class Interface : public ServiceFramework<Interface> {
  13. public:
  14. explicit Interface(std::shared_ptr<Module> module_,
  15. std::shared_ptr<ProfileManager> profile_manager_, Core::System& system_,
  16. const char* name);
  17. ~Interface() override;
  18. void GetUserCount(Kernel::HLERequestContext& ctx);
  19. void GetUserExistence(Kernel::HLERequestContext& ctx);
  20. void ListAllUsers(Kernel::HLERequestContext& ctx);
  21. void ListOpenUsers(Kernel::HLERequestContext& ctx);
  22. void GetLastOpenedUser(Kernel::HLERequestContext& ctx);
  23. void GetProfile(Kernel::HLERequestContext& ctx);
  24. void InitializeApplicationInfo(Kernel::HLERequestContext& ctx);
  25. void InitializeApplicationInfoRestricted(Kernel::HLERequestContext& ctx);
  26. void GetBaasAccountManagerForApplication(Kernel::HLERequestContext& ctx);
  27. void IsUserRegistrationRequestPermitted(Kernel::HLERequestContext& ctx);
  28. void TrySelectUserWithoutInteraction(Kernel::HLERequestContext& ctx);
  29. void IsUserAccountSwitchLocked(Kernel::HLERequestContext& ctx);
  30. void InitializeApplicationInfoV2(Kernel::HLERequestContext& ctx);
  31. void GetProfileEditor(Kernel::HLERequestContext& ctx);
  32. void ListQualifiedUsers(Kernel::HLERequestContext& ctx);
  33. void LoadOpenContext(Kernel::HLERequestContext& ctx);
  34. void ListOpenContextStoredUsers(Kernel::HLERequestContext& ctx);
  35. void StoreSaveDataThumbnailApplication(Kernel::HLERequestContext& ctx);
  36. void StoreSaveDataThumbnailSystem(Kernel::HLERequestContext& ctx);
  37. private:
  38. ResultCode InitializeApplicationInfoBase();
  39. void StoreSaveDataThumbnail(Kernel::HLERequestContext& ctx, const Common::UUID& uuid,
  40. const u64 tid);
  41. enum class ApplicationType : u32_le {
  42. GameCard = 0,
  43. Digital = 1,
  44. Unknown = 3,
  45. };
  46. struct ApplicationInfo {
  47. Service::Glue::ApplicationLaunchProperty launch_property;
  48. ApplicationType application_type;
  49. constexpr explicit operator bool() const {
  50. return launch_property.title_id != 0x0;
  51. }
  52. };
  53. ApplicationInfo application_info{};
  54. protected:
  55. std::shared_ptr<Module> module;
  56. std::shared_ptr<ProfileManager> profile_manager;
  57. };
  58. };
  59. /// Registers all ACC services with the specified service manager.
  60. void InstallInterfaces(Core::System& system);
  61. } // namespace Service::Account