diff options
| author | mailwl <mailwl@gmail.com> | 2018-04-10 10:18:52 +0300 | 
|---|---|---|
| committer | mailwl <mailwl@gmail.com> | 2018-04-10 10:18:52 +0300 | 
| commit | 3769a80faca76c7ed77540607fef03ef26b28501 (patch) | |
| tree | 7ef4349f360eafd9ed9bbcbfeefb29969be4e324 /src/core/hle | |
| parent | 227bc78cbefef0866fc39db1383ea4f012583e11 (diff) | |
Service/ACC: convert to module, add acc:aa, acc:su, acc:u1 services
Diffstat (limited to 'src/core/hle')
| -rw-r--r-- | src/core/hle/service/acc/acc.cpp | 130 | ||||
| -rw-r--r-- | src/core/hle/service/acc/acc.h | 19 | ||||
| -rw-r--r-- | src/core/hle/service/acc/acc_aa.cpp | 22 | ||||
| -rw-r--r-- | src/core/hle/service/acc/acc_aa.h | 18 | ||||
| -rw-r--r-- | src/core/hle/service/acc/acc_su.cpp | 55 | ||||
| -rw-r--r-- | src/core/hle/service/acc/acc_su.h | 18 | ||||
| -rw-r--r-- | src/core/hle/service/acc/acc_u0.cpp | 113 | ||||
| -rw-r--r-- | src/core/hle/service/acc/acc_u0.h | 28 | ||||
| -rw-r--r-- | src/core/hle/service/acc/acc_u1.cpp | 42 | ||||
| -rw-r--r-- | src/core/hle/service/acc/acc_u1.h | 18 | 
10 files changed, 336 insertions, 127 deletions
| diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp index 5716577d6..cfb6e05a5 100644 --- a/src/core/hle/service/acc/acc.cpp +++ b/src/core/hle/service/acc/acc.cpp @@ -2,14 +2,142 @@  // 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/acc/acc.h" +#include "core/hle/service/acc/acc_aa.h" +#include "core/hle/service/acc/acc_su.h"  #include "core/hle/service/acc/acc_u0.h" +#include "core/hle/service/acc/acc_u1.h"  namespace Service {  namespace Account { +// TODO: RE this structure +struct UserData { +    INSERT_PADDING_WORDS(1); +    u32 icon_id; +    u8 bg_color_id; +    INSERT_PADDING_BYTES(0x7); +    INSERT_PADDING_BYTES(0x10); +    INSERT_PADDING_BYTES(0x60); +}; +static_assert(sizeof(UserData) == 0x80, "UserData structure has incorrect size"); + +struct ProfileBase { +    u8 user_id[0x10]; +    u64 timestamp; +    u8 username[0x20]; +}; +static_assert(sizeof(ProfileBase) == 0x38, "ProfileBase structure has incorrect size"); + +using Uid = std::array<u64, 2>; +static constexpr Uid DEFAULT_USER_ID{0x10ull, 0x20ull}; + +class IProfile final : public ServiceFramework<IProfile> { +public: +    IProfile() : ServiceFramework("IProfile") { +        static const FunctionInfo functions[] = { +            {1, &IProfile::GetBase, "GetBase"}, +        }; +        RegisterHandlers(functions); +    } + +private: +    void GetBase(Kernel::HLERequestContext& ctx) { +        LOG_WARNING(Service_ACC, "(STUBBED) called"); +        ProfileBase profile_base{}; +        IPC::ResponseBuilder rb{ctx, 16}; +        rb.Push(RESULT_SUCCESS); +        rb.PushRaw(profile_base); +    } +}; + +class IManagerForApplication final : public ServiceFramework<IManagerForApplication> { +public: +    IManagerForApplication() : ServiceFramework("IManagerForApplication") { +        static const FunctionInfo functions[] = { +            {0, &IManagerForApplication::CheckAvailability, "CheckAvailability"}, +            {1, &IManagerForApplication::GetAccountId, "GetAccountId"}, +        }; +        RegisterHandlers(functions); +    } + +private: +    void CheckAvailability(Kernel::HLERequestContext& ctx) { +        LOG_WARNING(Service_ACC, "(STUBBED) called"); +        IPC::ResponseBuilder rb{ctx, 3}; +        rb.Push(RESULT_SUCCESS); +        rb.Push(true); // TODO: Check when this is supposed to return true and when not +    } + +    void GetAccountId(Kernel::HLERequestContext& ctx) { +        LOG_WARNING(Service_ACC, "(STUBBED) called"); +        IPC::ResponseBuilder rb{ctx, 4}; +        rb.Push(RESULT_SUCCESS); +        rb.Push<u64>(0x12345678ABCDEF); +    } +}; + +void Module::Interface::GetUserExistence(Kernel::HLERequestContext& ctx) { +    LOG_WARNING(Service_ACC, "(STUBBED) called"); +    IPC::ResponseBuilder rb{ctx, 3}; +    rb.Push(RESULT_SUCCESS); +    rb.Push(true); // TODO: Check when this is supposed to return true and when not +} + +void Module::Interface::ListAllUsers(Kernel::HLERequestContext& ctx) { +    LOG_WARNING(Service_ACC, "(STUBBED) called"); +    constexpr std::array<u128, 10> user_ids{DEFAULT_USER_ID}; +    ctx.WriteBuffer(user_ids.data(), user_ids.size()); +    IPC::ResponseBuilder rb{ctx, 2}; +    rb.Push(RESULT_SUCCESS); +} + +void Module::Interface::ListOpenUsers(Kernel::HLERequestContext& ctx) { +    LOG_WARNING(Service_ACC, "(STUBBED) called"); +    constexpr std::array<u128, 10> user_ids{DEFAULT_USER_ID}; +    ctx.WriteBuffer(user_ids.data(), user_ids.size()); +    IPC::ResponseBuilder rb{ctx, 2}; +    rb.Push(RESULT_SUCCESS); +} + +void Module::Interface::GetProfile(Kernel::HLERequestContext& ctx) { +    IPC::ResponseBuilder rb{ctx, 2, 0, 1}; +    rb.Push(RESULT_SUCCESS); +    rb.PushIpcInterface<IProfile>(); +    LOG_DEBUG(Service_ACC, "called"); +} + +void Module::Interface::InitializeApplicationInfo(Kernel::HLERequestContext& ctx) { +    LOG_WARNING(Service_ACC, "(STUBBED) called"); +    IPC::ResponseBuilder rb{ctx, 2}; +    rb.Push(RESULT_SUCCESS); +} + +void Module::Interface::GetBaasAccountManagerForApplication(Kernel::HLERequestContext& ctx) { +    IPC::ResponseBuilder rb{ctx, 2, 0, 1}; +    rb.Push(RESULT_SUCCESS); +    rb.PushIpcInterface<IManagerForApplication>(); +    LOG_DEBUG(Service_ACC, "called"); +} + +void Module::Interface::GetLastOpenedUser(Kernel::HLERequestContext& ctx) { +    LOG_WARNING(Service_ACC, "(STUBBED) called"); +    IPC::ResponseBuilder rb{ctx, 6}; +    rb.Push(RESULT_SUCCESS); +    rb.PushRaw(DEFAULT_USER_ID); +} + +Module::Interface::Interface(std::shared_ptr<Module> module, const char* name) +    : ServiceFramework(name), module(std::move(module)) {} +  void InstallInterfaces(SM::ServiceManager& service_manager) { -    std::make_shared<ACC_U0>()->InstallAsService(service_manager); +    auto module = std::make_shared<Module>(); +    std::make_shared<ACC_AA>(module)->InstallAsService(service_manager); +    std::make_shared<ACC_SU>(module)->InstallAsService(service_manager); +    std::make_shared<ACC_U0>(module)->InstallAsService(service_manager); +    std::make_shared<ACC_U1>(module)->InstallAsService(service_manager);  }  } // namespace Account diff --git a/src/core/hle/service/acc/acc.h b/src/core/hle/service/acc/acc.h index 44d024f48..2d2f57b7d 100644 --- a/src/core/hle/service/acc/acc.h +++ b/src/core/hle/service/acc/acc.h @@ -9,6 +9,25 @@  namespace Service {  namespace Account { +class Module final { +public: +    class Interface : public ServiceFramework<Interface> { +    public: +        Interface(std::shared_ptr<Module> module, const char* name); + +        void GetUserExistence(Kernel::HLERequestContext& ctx); +        void ListAllUsers(Kernel::HLERequestContext& ctx); +        void ListOpenUsers(Kernel::HLERequestContext& ctx); +        void GetLastOpenedUser(Kernel::HLERequestContext& ctx); +        void GetProfile(Kernel::HLERequestContext& ctx); +        void InitializeApplicationInfo(Kernel::HLERequestContext& ctx); +        void GetBaasAccountManagerForApplication(Kernel::HLERequestContext& ctx); + +    protected: +        std::shared_ptr<Module> module; +    }; +}; +  /// Registers all ACC services with the specified service manager.  void InstallInterfaces(SM::ServiceManager& service_manager); diff --git a/src/core/hle/service/acc/acc_aa.cpp b/src/core/hle/service/acc/acc_aa.cpp new file mode 100644 index 000000000..76deaa07f --- /dev/null +++ b/src/core/hle/service/acc/acc_aa.cpp @@ -0,0 +1,22 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "core/hle/service/acc/acc_aa.h" + +namespace Service { +namespace Account { + +ACC_AA::ACC_AA(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "acc:aa") { +    static const FunctionInfo functions[] = { +        {0, nullptr, "EnsureCacheAsync"}, +        {1, nullptr, "LoadCache"}, +        {2, nullptr, "GetDeviceAccountId"}, +        {50, nullptr, "RegisterNotificationTokenAsync"}, +        {51, nullptr, "UnregisterNotificationTokenAsync"}, +    }; +    RegisterHandlers(functions); +} + +} // namespace Account +} // namespace Service diff --git a/src/core/hle/service/acc/acc_aa.h b/src/core/hle/service/acc/acc_aa.h new file mode 100644 index 000000000..5069c6890 --- /dev/null +++ b/src/core/hle/service/acc/acc_aa.h @@ -0,0 +1,18 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "core/hle/service/acc/acc.h" + +namespace Service { +namespace Account { + +class ACC_AA final : public Module::Interface { +public: +    explicit ACC_AA(std::shared_ptr<Module> module); +}; + +} // namespace Account +} // namespace Service diff --git a/src/core/hle/service/acc/acc_su.cpp b/src/core/hle/service/acc/acc_su.cpp new file mode 100644 index 000000000..538f9d9b1 --- /dev/null +++ b/src/core/hle/service/acc/acc_su.cpp @@ -0,0 +1,55 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "core/hle/service/acc/acc_su.h" + +namespace Service { +namespace Account { + +ACC_SU::ACC_SU(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "acc:su") { +    static const FunctionInfo functions[] = { +        {0, nullptr, "GetUserCount"}, +        {1, &ACC_SU::GetUserExistence, "GetUserExistence"}, +        {2, &ACC_SU::ListAllUsers, "ListAllUsers"}, +        {3, &ACC_SU::ListOpenUsers, "ListOpenUsers"}, +        {4, &ACC_SU::GetLastOpenedUser, "GetLastOpenedUser"}, +        {5, &ACC_SU::GetProfile, "GetProfile"}, +        {6, nullptr, "GetProfileDigest"}, +        {50, nullptr, "IsUserRegistrationRequestPermitted"}, +        {51, nullptr, "TrySelectUserWithoutInteraction"}, +        {60, nullptr, "ListOpenContextStoredUsers"}, +        {100, nullptr, "GetUserRegistrationNotifier"}, +        {101, nullptr, "GetUserStateChangeNotifier"}, +        {102, nullptr, "GetBaasAccountManagerForSystemService"}, +        {103, nullptr, "GetBaasUserAvailabilityChangeNotifier"}, +        {104, nullptr, "GetProfileUpdateNotifier"}, +        {105, nullptr, "CheckNetworkServiceAvailabilityAsync"}, +        {110, nullptr, "StoreSaveDataThumbnail"}, +        {111, nullptr, "ClearSaveDataThumbnail"}, +        {112, nullptr, "LoadSaveDataThumbnail"}, +        {113, nullptr, "GetSaveDataThumbnailExistence"}, +        {190, nullptr, "GetUserLastOpenedApplication"}, +        {191, nullptr, "ActivateOpenContextHolder"}, +        {200, nullptr, "BeginUserRegistration"}, +        {201, nullptr, "CompleteUserRegistration"}, +        {202, nullptr, "CancelUserRegistration"}, +        {203, nullptr, "DeleteUser"}, +        {204, nullptr, "SetUserPosition"}, +        {205, nullptr, "GetProfileEditor"}, +        {206, nullptr, "CompleteUserRegistrationForcibly"}, +        {210, nullptr, "CreateFloatingRegistrationRequest"}, +        {230, nullptr, "AuthenticateServiceAsync"}, +        {250, nullptr, "GetBaasAccountAdministrator"}, +        {290, nullptr, "ProxyProcedureForGuestLoginWithNintendoAccount"}, +        {291, nullptr, "ProxyProcedureForFloatingRegistrationWithNintendoAccount"}, +        {299, nullptr, "SuspendBackgroundDaemon"}, +        {997, nullptr, "DebugInvalidateTokenCacheForUser"}, +        {998, nullptr, "DebugSetUserStateClose"}, +        {999, nullptr, "DebugSetUserStateOpen"}, +    }; +    RegisterHandlers(functions); +} + +} // namespace Account +} // namespace Service diff --git a/src/core/hle/service/acc/acc_su.h b/src/core/hle/service/acc/acc_su.h new file mode 100644 index 000000000..3894a6991 --- /dev/null +++ b/src/core/hle/service/acc/acc_su.h @@ -0,0 +1,18 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "core/hle/service/acc/acc.h" + +namespace Service { +namespace Account { + +class ACC_SU final : public Module::Interface { +public: +    explicit ACC_SU(std::shared_ptr<Module> module); +}; + +} // namespace Account +} // namespace Service diff --git a/src/core/hle/service/acc/acc_u0.cpp b/src/core/hle/service/acc/acc_u0.cpp index 52c3491d5..7b9c667ef 100644 --- a/src/core/hle/service/acc/acc_u0.cpp +++ b/src/core/hle/service/acc/acc_u0.cpp @@ -2,120 +2,31 @@  // 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/acc/acc_u0.h"  namespace Service {  namespace Account { -using Uid = std::array<u64, 2>; -static constexpr Uid DEFAULT_USER_ID{0x10ull, 0x20ull}; - -class IProfile final : public ServiceFramework<IProfile> { -public: -    IProfile() : ServiceFramework("IProfile") { -        static const FunctionInfo functions[] = { -            {1, &IProfile::GetBase, "GetBase"}, -        }; -        RegisterHandlers(functions); -    } - -private: -    void GetBase(Kernel::HLERequestContext& ctx) { -        LOG_WARNING(Service_ACC, "(STUBBED) called"); -        ProfileBase profile_base{}; -        IPC::ResponseBuilder rb{ctx, 16}; -        rb.Push(RESULT_SUCCESS); -        rb.PushRaw(profile_base); -    } -}; - -class IManagerForApplication final : public ServiceFramework<IManagerForApplication> { -public: -    IManagerForApplication() : ServiceFramework("IManagerForApplication") { -        static const FunctionInfo functions[] = { -            {0, &IManagerForApplication::CheckAvailability, "CheckAvailability"}, -            {1, &IManagerForApplication::GetAccountId, "GetAccountId"}, -        }; -        RegisterHandlers(functions); -    } - -private: -    void CheckAvailability(Kernel::HLERequestContext& ctx) { -        LOG_WARNING(Service_ACC, "(STUBBED) called"); -        IPC::ResponseBuilder rb{ctx, 3}; -        rb.Push(RESULT_SUCCESS); -        rb.Push(true); // TODO: Check when this is supposed to return true and when not -    } - -    void GetAccountId(Kernel::HLERequestContext& ctx) { -        LOG_WARNING(Service_ACC, "(STUBBED) called"); -        IPC::ResponseBuilder rb{ctx, 4}; -        rb.Push(RESULT_SUCCESS); -        rb.Push<u64>(0x12345678ABCDEF); -    } -}; - -void ACC_U0::GetUserExistence(Kernel::HLERequestContext& ctx) { -    LOG_WARNING(Service_ACC, "(STUBBED) called"); -    IPC::ResponseBuilder rb{ctx, 3}; -    rb.Push(RESULT_SUCCESS); -    rb.Push(true); // TODO: Check when this is supposed to return true and when not -} - -void ACC_U0::ListAllUsers(Kernel::HLERequestContext& ctx) { -    LOG_WARNING(Service_ACC, "(STUBBED) called"); -    constexpr std::array<u128, 10> user_ids{DEFAULT_USER_ID}; -    ctx.WriteBuffer(user_ids.data(), user_ids.size()); -    IPC::ResponseBuilder rb{ctx, 2}; -    rb.Push(RESULT_SUCCESS); -} - -void ACC_U0::ListOpenUsers(Kernel::HLERequestContext& ctx) { -    LOG_WARNING(Service_ACC, "(STUBBED) called"); -    constexpr std::array<u128, 10> user_ids{DEFAULT_USER_ID}; -    ctx.WriteBuffer(user_ids.data(), user_ids.size()); -    IPC::ResponseBuilder rb{ctx, 2}; -    rb.Push(RESULT_SUCCESS); -} - -void ACC_U0::GetProfile(Kernel::HLERequestContext& ctx) { -    IPC::ResponseBuilder rb{ctx, 2, 0, 1}; -    rb.Push(RESULT_SUCCESS); -    rb.PushIpcInterface<IProfile>(); -    LOG_DEBUG(Service_ACC, "called"); -} - -void ACC_U0::InitializeApplicationInfo(Kernel::HLERequestContext& ctx) { -    LOG_WARNING(Service_ACC, "(STUBBED) called"); -    IPC::ResponseBuilder rb{ctx, 2}; -    rb.Push(RESULT_SUCCESS); -} - -void ACC_U0::GetBaasAccountManagerForApplication(Kernel::HLERequestContext& ctx) { -    IPC::ResponseBuilder rb{ctx, 2, 0, 1}; -    rb.Push(RESULT_SUCCESS); -    rb.PushIpcInterface<IManagerForApplication>(); -    LOG_DEBUG(Service_ACC, "called"); -} - -void ACC_U0::GetLastOpenedUser(Kernel::HLERequestContext& ctx) { -    LOG_WARNING(Service_ACC, "(STUBBED) called"); -    IPC::ResponseBuilder rb{ctx, 6}; -    rb.Push(RESULT_SUCCESS); -    rb.PushRaw(DEFAULT_USER_ID); -} - -ACC_U0::ACC_U0() : ServiceFramework("acc:u0") { +ACC_U0::ACC_U0(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "acc:u0") {      static const FunctionInfo functions[] = { +        {0, nullptr, "GetUserCount"},          {1, &ACC_U0::GetUserExistence, "GetUserExistence"},          {2, &ACC_U0::ListAllUsers, "ListAllUsers"},          {3, &ACC_U0::ListOpenUsers, "ListOpenUsers"},          {4, &ACC_U0::GetLastOpenedUser, "GetLastOpenedUser"},          {5, &ACC_U0::GetProfile, "GetProfile"}, +        {6, nullptr, "GetProfileDigest"}, +        {50, nullptr, "IsUserRegistrationRequestPermitted"}, +        {51, nullptr, "TrySelectUserWithoutInteraction"}, +        {60, nullptr, "ListOpenContextStoredUsers"},          {100, &ACC_U0::InitializeApplicationInfo, "InitializeApplicationInfo"},          {101, &ACC_U0::GetBaasAccountManagerForApplication, "GetBaasAccountManagerForApplication"}, +        {102, nullptr, "AuthenticateApplicationAsync"}, +        {103, nullptr, "CheckNetworkServiceAvailabilityAsync"}, +        {110, nullptr, "StoreSaveDataThumbnail"}, +        {111, nullptr, "ClearSaveDataThumbnail"}, +        {120, nullptr, "CreateGuestLoginRequest"}, +        {130, nullptr, "LoadOpenContext"},      };      RegisterHandlers(functions);  } diff --git a/src/core/hle/service/acc/acc_u0.h b/src/core/hle/service/acc/acc_u0.h index 222f37282..d4f36e172 100644 --- a/src/core/hle/service/acc/acc_u0.h +++ b/src/core/hle/service/acc/acc_u0.h @@ -4,36 +4,14 @@  #pragma once -#include "core/hle/service/service.h" +#include "core/hle/service/acc/acc.h"  namespace Service {  namespace Account { -// TODO: RE this structure -struct UserData { -    INSERT_PADDING_BYTES(0x80); -}; -static_assert(sizeof(UserData) == 0x80, "UserData structure has incorrect size"); - -// TODO: RE this structure -struct ProfileBase { -    INSERT_PADDING_BYTES(0x38); -}; -static_assert(sizeof(ProfileBase) == 0x38, "ProfileBase structure has incorrect size"); - -class ACC_U0 final : public ServiceFramework<ACC_U0> { +class ACC_U0 final : public Module::Interface {  public: -    ACC_U0(); -    ~ACC_U0() = default; - -private: -    void GetUserExistence(Kernel::HLERequestContext& ctx); -    void ListAllUsers(Kernel::HLERequestContext& ctx); -    void ListOpenUsers(Kernel::HLERequestContext& ctx); -    void GetLastOpenedUser(Kernel::HLERequestContext& ctx); -    void GetProfile(Kernel::HLERequestContext& ctx); -    void InitializeApplicationInfo(Kernel::HLERequestContext& ctx); -    void GetBaasAccountManagerForApplication(Kernel::HLERequestContext& ctx); +    explicit ACC_U0(std::shared_ptr<Module> module);  };  } // namespace Account diff --git a/src/core/hle/service/acc/acc_u1.cpp b/src/core/hle/service/acc/acc_u1.cpp new file mode 100644 index 000000000..dea353554 --- /dev/null +++ b/src/core/hle/service/acc/acc_u1.cpp @@ -0,0 +1,42 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "core/hle/service/acc/acc_u1.h" + +namespace Service { +namespace Account { + +ACC_U1::ACC_U1(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "acc:u1") { +    static const FunctionInfo functions[] = { +        {0, nullptr, "GetUserCount"}, +        {1, &ACC_U1::GetUserExistence, "GetUserExistence"}, +        {2, &ACC_U1::ListAllUsers, "ListAllUsers"}, +        {3, &ACC_U1::ListOpenUsers, "ListOpenUsers"}, +        {4, &ACC_U1::GetLastOpenedUser, "GetLastOpenedUser"}, +        {5, &ACC_U1::GetProfile, "GetProfile"}, +        {6, nullptr, "GetProfileDigest"}, +        {50, nullptr, "IsUserRegistrationRequestPermitted"}, +        {51, nullptr, "TrySelectUserWithoutInteraction"}, +        {60, nullptr, "ListOpenContextStoredUsers"}, +        {100, nullptr, "GetUserRegistrationNotifier"}, +        {101, nullptr, "GetUserStateChangeNotifier"}, +        {102, nullptr, "GetBaasAccountManagerForSystemService"}, +        {103, nullptr, "GetProfileUpdateNotifier"}, +        {104, nullptr, "CheckNetworkServiceAvailabilityAsync"}, +        {105, nullptr, "GetBaasUserAvailabilityChangeNotifier"}, +        {110, nullptr, "StoreSaveDataThumbnail"}, +        {111, nullptr, "ClearSaveDataThumbnail"}, +        {112, nullptr, "LoadSaveDataThumbnail"}, +        {113, nullptr, "GetSaveDataThumbnailExistence"}, +        {190, nullptr, "GetUserLastOpenedApplication"}, +        {191, nullptr, "ActivateOpenContextHolder"}, +        {997, nullptr, "DebugInvalidateTokenCacheForUser"}, +        {998, nullptr, "DebugSetUserStateClose"}, +        {999, nullptr, "DebugSetUserStateOpen"}, +    }; +    RegisterHandlers(functions); +} + +} // namespace Account +} // namespace Service diff --git a/src/core/hle/service/acc/acc_u1.h b/src/core/hle/service/acc/acc_u1.h new file mode 100644 index 000000000..432d5b3e9 --- /dev/null +++ b/src/core/hle/service/acc/acc_u1.h @@ -0,0 +1,18 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "core/hle/service/acc/acc.h" + +namespace Service { +namespace Account { + +class ACC_U1 final : public Module::Interface { +public: +    explicit ACC_U1(std::shared_ptr<Module> module); +}; + +} // namespace Account +} // namespace Service | 
