mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2025-07-21 00:35:47 +00:00
Qlauncher firmware 19
This commit is contained in:
parent
d6eff706f2
commit
b66ebe638b
15 changed files with 288 additions and 67 deletions
|
@ -99,6 +99,7 @@ public:
|
|||
{140, nullptr, "GetNetworkServiceLicenseCache"}, // 5.0.0+
|
||||
{141, nullptr, "RefreshNetworkServiceLicenseCacheAsync"}, // 5.0.0+
|
||||
{142, nullptr, "RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed"}, // 5.0.0+
|
||||
{143, D<&IManagerForSystemService::GetNetworkServiceLicenseCacheEx>, "GetNetworkServiceLicenseCacheEx"}, // 15.0.0+
|
||||
{150, nullptr, "CreateAuthorizationRequest"},
|
||||
{160, nullptr, "RequiresUpdateNetworkServiceAccountIdTokenCache"},
|
||||
{161, nullptr, "RequireReauthenticationOfNetworkServiceAccount"},
|
||||
|
@ -122,6 +123,14 @@ private:
|
|||
R_SUCCEED();
|
||||
}
|
||||
|
||||
Result GetNetworkServiceLicenseCacheEx() {
|
||||
LOG_DEBUG(Service_ACC, "(STUBBED) called.");
|
||||
|
||||
// TODO (jarrodnorwell)
|
||||
|
||||
R_RETURN(ResultUnknown);
|
||||
}
|
||||
|
||||
Common::UUID account_id;
|
||||
};
|
||||
|
||||
|
@ -318,30 +327,73 @@ public:
|
|||
explicit IProfileCommon(Core::System& system_, const char* name, bool editor_commands,
|
||||
Common::UUID user_id_, ProfileManager& profile_manager_)
|
||||
: ServiceFramework{system_, name}, profile_manager{profile_manager_}, user_id{user_id_} {
|
||||
// clang-format off
|
||||
static const FunctionInfo functions[] = {
|
||||
{0, &IProfileCommon::Get, "Get"},
|
||||
{1, &IProfileCommon::GetBase, "GetBase"},
|
||||
{10, &IProfileCommon::GetImageSize, "GetImageSize"},
|
||||
{11, &IProfileCommon::LoadImage, "LoadImage"},
|
||||
{20, nullptr, "GetLargeImageSize"}, // 18.0.0+
|
||||
{21, nullptr, "LoadLargeImage"}, // 18.0.0+
|
||||
{30, nullptr, "GetImageId"} // 18.0.0+
|
||||
{20, &IProfileCommon::Unknown20, "Unknown20"},
|
||||
{21, &IProfileCommon::Unknown21, "Unknown21"},
|
||||
{30, &IProfileCommon::Unknown30, "Unknown30"}
|
||||
};
|
||||
|
||||
// clang-format on
|
||||
RegisterHandlers(functions);
|
||||
|
||||
if (editor_commands) {
|
||||
// clang-format off
|
||||
static const FunctionInfo editor_functions[] = {
|
||||
{100, &IProfileCommon::Store, "Store"},
|
||||
{101, &IProfileCommon::StoreWithImage, "StoreWithImage"},
|
||||
{110, nullptr, "StoreWithLargeImage"} // 18.0.0+
|
||||
{110, &IProfileCommon::Unknown110, "Unknown110"}
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
RegisterHandlers(editor_functions);
|
||||
}
|
||||
}
|
||||
|
||||
protected:
|
||||
void Unknown20(HLERequestContext& ctx) {
|
||||
LOG_DEBUG(Service_ACC, "(STUBBED) called.");
|
||||
|
||||
// TODO (jarrodnorwell)
|
||||
// inbytes: 0x0, outbytes: 0x4
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(ResultSuccess);
|
||||
}
|
||||
|
||||
void Unknown21(HLERequestContext& ctx) {
|
||||
LOG_DEBUG(Service_ACC, "(STUBBED) called.");
|
||||
|
||||
// TODO (jarrodnorwell)
|
||||
// buffers: [0x6], inbytes: 0x0, outbytes: 0x4
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(ResultSuccess);
|
||||
}
|
||||
|
||||
void Unknown30(HLERequestContext& ctx) {
|
||||
LOG_DEBUG(Service_ACC, "(STUBBED) called.");
|
||||
|
||||
// TODO (jarrodnorwell)
|
||||
// inbytes: 0x0, outbytes: 0x10
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(ResultSuccess);
|
||||
}
|
||||
|
||||
void Unknown110(HLERequestContext& ctx) {
|
||||
LOG_DEBUG(Service_ACC, "(STUBBED) called.");
|
||||
|
||||
// TODO (jarrodnorwell)
|
||||
// buffer_entry_sizes: [0x80, 0x0], buffers: [0x19, 0x5], inbytes: 0x38, outbytes: 0x0
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(ResultSuccess);
|
||||
}
|
||||
|
||||
void Get(HLERequestContext& ctx) {
|
||||
LOG_DEBUG(Service_ACC, "called user_id=0x{}", user_id.RawString());
|
||||
ProfileBase profile_base{};
|
||||
|
@ -1020,6 +1072,29 @@ void Module::Interface::StoreSaveDataThumbnail(HLERequestContext& ctx, const Com
|
|||
rb.Push(ResultSuccess);
|
||||
}
|
||||
|
||||
void Module::Interface::TrySelectUserWithoutInteractionDeprecated(HLERequestContext& ctx) {
|
||||
LOG_DEBUG(Service_ACC, "called");
|
||||
// A u8 is passed into this function which we can safely ignore. It's to determine if we have
|
||||
// access to use the network or not by the looks of it
|
||||
IPC::ResponseBuilder rb{ctx, 6};
|
||||
if (profile_manager->GetUserCount() != 1) {
|
||||
rb.Push(ResultSuccess);
|
||||
rb.PushRaw(Common::InvalidUUID);
|
||||
return;
|
||||
}
|
||||
|
||||
const auto user_list = profile_manager->GetAllUsers();
|
||||
if (std::ranges::all_of(user_list, [](const auto& user) { return user.IsInvalid(); })) {
|
||||
rb.Push(ResultUnknown); // TODO(ogniK): Find the correct error code
|
||||
rb.PushRaw(Common::InvalidUUID);
|
||||
return;
|
||||
}
|
||||
|
||||
// Select the first user we have
|
||||
rb.Push(ResultSuccess);
|
||||
rb.PushRaw(profile_manager->GetUser(0)->uuid);
|
||||
}
|
||||
|
||||
void Module::Interface::TrySelectUserWithoutInteraction(HLERequestContext& ctx) {
|
||||
LOG_DEBUG(Service_ACC, "called");
|
||||
// A u8 is passed into this function which we can safely ignore. It's to determine if we have
|
||||
|
@ -1046,8 +1121,8 @@ void Module::Interface::TrySelectUserWithoutInteraction(HLERequestContext& ctx)
|
|||
Module::Interface::Interface(std::shared_ptr<Module> module_,
|
||||
std::shared_ptr<ProfileManager> profile_manager_,
|
||||
Core::System& system_, const char* name)
|
||||
: ServiceFramework{system_, name}, module{std::move(module_)}, profile_manager{std::move(
|
||||
profile_manager_)} {}
|
||||
: ServiceFramework{system_, name}, module{std::move(module_)},
|
||||
profile_manager{std::move(profile_manager_)} {}
|
||||
|
||||
Module::Interface::~Interface() = default;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue