acc: Return a unique value per account for GetAccountId

This commit is contained in:
David Marcec 2020-04-29 21:09:53 +10:00
parent 8e64fb3225
commit 1417849a2b
2 changed files with 13 additions and 5 deletions

View File

@ -40,6 +40,11 @@ struct UUID {
uuid = INVALID_UUID; uuid = INVALID_UUID;
} }
// TODO(ogniK): Properly generate a Nintendo ID
constexpr u64 GetNintendoID() const {
return uuid[0];
}
std::string Format() const; std::string Format() const;
std::string FormatSwitch() const; std::string FormatSwitch() const;
}; };

View File

@ -228,7 +228,8 @@ public:
class IManagerForApplication final : public ServiceFramework<IManagerForApplication> { class IManagerForApplication final : public ServiceFramework<IManagerForApplication> {
public: public:
IManagerForApplication() : ServiceFramework("IManagerForApplication") { explicit IManagerForApplication(Common::UUID user_id)
: ServiceFramework("IManagerForApplication"), user_id(user_id) {
// clang-format off // clang-format off
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {
{0, &IManagerForApplication::CheckAvailability, "CheckAvailability"}, {0, &IManagerForApplication::CheckAvailability, "CheckAvailability"},
@ -254,12 +255,14 @@ private:
} }
void GetAccountId(Kernel::HLERequestContext& ctx) { void GetAccountId(Kernel::HLERequestContext& ctx) {
LOG_WARNING(Service_ACC, "(STUBBED) called"); LOG_DEBUG(Service_ACC, "called");
// Should return a nintendo account ID
IPC::ResponseBuilder rb{ctx, 4}; IPC::ResponseBuilder rb{ctx, 4};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
rb.PushRaw<u64>(1); rb.PushRaw<u64>(user_id.GetNintendoID());
} }
Common::UUID user_id;
}; };
void Module::Interface::GetUserCount(Kernel::HLERequestContext& ctx) { void Module::Interface::GetUserCount(Kernel::HLERequestContext& ctx) {
@ -389,7 +392,7 @@ void Module::Interface::GetBaasAccountManagerForApplication(Kernel::HLERequestCo
LOG_DEBUG(Service_ACC, "called"); LOG_DEBUG(Service_ACC, "called");
IPC::ResponseBuilder rb{ctx, 2, 0, 1}; IPC::ResponseBuilder rb{ctx, 2, 0, 1};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
rb.PushIpcInterface<IManagerForApplication>(); rb.PushIpcInterface<IManagerForApplication>(profile_manager->GetLastOpenedUser());
} }
void Module::Interface::IsUserAccountSwitchLocked(Kernel::HLERequestContext& ctx) { void Module::Interface::IsUserAccountSwitchLocked(Kernel::HLERequestContext& ctx) {