ns: rewrite IDocumentInterface
This commit is contained in:
parent
04887953ff
commit
bb59940b03
|
@ -745,6 +745,8 @@ add_library(core STATIC
|
||||||
hle/service/ns/application_version_interface.h
|
hle/service/ns/application_version_interface.h
|
||||||
hle/service/ns/content_management_interface.cpp
|
hle/service/ns/content_management_interface.cpp
|
||||||
hle/service/ns/content_management_interface.h
|
hle/service/ns/content_management_interface.h
|
||||||
|
hle/service/ns/document_interface.cpp
|
||||||
|
hle/service/ns/document_interface.h
|
||||||
hle/service/ns/ecommerce_interface.cpp
|
hle/service/ns/ecommerce_interface.cpp
|
||||||
hle/service/ns/ecommerce_interface.h
|
hle/service/ns/ecommerce_interface.h
|
||||||
hle/service/ns/factory_reset_interface.cpp
|
hle/service/ns/factory_reset_interface.cpp
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#include "core/core.h"
|
||||||
|
#include "core/hle/service/cmif_serialization.h"
|
||||||
|
#include "core/hle/service/ns/document_interface.h"
|
||||||
|
|
||||||
|
namespace Service::NS {
|
||||||
|
|
||||||
|
IDocumentInterface::IDocumentInterface(Core::System& system_)
|
||||||
|
: ServiceFramework{system_, "IDocumentInterface"} {
|
||||||
|
// clang-format off
|
||||||
|
static const FunctionInfo functions[] = {
|
||||||
|
{21, nullptr, "GetApplicationContentPath"},
|
||||||
|
{23, D<&IDocumentInterface::ResolveApplicationContentPath>, "ResolveApplicationContentPath"},
|
||||||
|
{92, D<&IDocumentInterface::GetRunningApplicationProgramId>, "GetRunningApplicationProgramId"},
|
||||||
|
};
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
|
RegisterHandlers(functions);
|
||||||
|
}
|
||||||
|
|
||||||
|
IDocumentInterface::~IDocumentInterface() = default;
|
||||||
|
|
||||||
|
Result IDocumentInterface::ResolveApplicationContentPath(ContentPath content_path) {
|
||||||
|
LOG_WARNING(Service_NS, "(STUBBED) called, file_system_proxy_type={}, program_id={:016X}",
|
||||||
|
content_path.file_system_proxy_type, content_path.program_id);
|
||||||
|
R_SUCCEED();
|
||||||
|
}
|
||||||
|
|
||||||
|
Result IDocumentInterface::GetRunningApplicationProgramId(Out<u64> out_program_id,
|
||||||
|
u64 caller_program_id) {
|
||||||
|
LOG_WARNING(Service_NS, "(STUBBED) called, caller_program_id={:016X}", caller_program_id);
|
||||||
|
*out_program_id = system.GetApplicationProcessProgramID();
|
||||||
|
R_SUCCEED();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace Service::NS
|
|
@ -0,0 +1,22 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "core/hle/service/cmif_types.h"
|
||||||
|
#include "core/hle/service/ns/ns_types.h"
|
||||||
|
#include "core/hle/service/service.h"
|
||||||
|
|
||||||
|
namespace Service::NS {
|
||||||
|
|
||||||
|
class IDocumentInterface final : public ServiceFramework<IDocumentInterface> {
|
||||||
|
public:
|
||||||
|
explicit IDocumentInterface(Core::System& system_);
|
||||||
|
~IDocumentInterface() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Result ResolveApplicationContentPath(ContentPath content_path);
|
||||||
|
Result GetRunningApplicationProgramId(Out<u64> out_program_id, u64 caller_program_id);
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace Service::NS
|
|
@ -14,6 +14,7 @@
|
||||||
#include "core/hle/service/ns/account_proxy_interface.h"
|
#include "core/hle/service/ns/account_proxy_interface.h"
|
||||||
#include "core/hle/service/ns/application_version_interface.h"
|
#include "core/hle/service/ns/application_version_interface.h"
|
||||||
#include "core/hle/service/ns/content_management_interface.h"
|
#include "core/hle/service/ns/content_management_interface.h"
|
||||||
|
#include "core/hle/service/ns/document_interface.h"
|
||||||
#include "core/hle/service/ns/ecommerce_interface.h"
|
#include "core/hle/service/ns/ecommerce_interface.h"
|
||||||
#include "core/hle/service/ns/factory_reset_interface.h"
|
#include "core/hle/service/ns/factory_reset_interface.h"
|
||||||
#include "core/hle/service/ns/language.h"
|
#include "core/hle/service/ns/language.h"
|
||||||
|
@ -465,47 +466,6 @@ Result IApplicationManagerInterface::ConvertApplicationLanguageToLanguageCode(
|
||||||
return ResultSuccess;
|
return ResultSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
IDocumentInterface::IDocumentInterface(Core::System& system_)
|
|
||||||
: ServiceFramework{system_, "IDocumentInterface"} {
|
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{21, nullptr, "GetApplicationContentPath"},
|
|
||||||
{23, &IDocumentInterface::ResolveApplicationContentPath, "ResolveApplicationContentPath"},
|
|
||||||
{92, &IDocumentInterface::GetRunningApplicationProgramId, "GetRunningApplicationProgramId"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
|
||||||
|
|
||||||
IDocumentInterface::~IDocumentInterface() = default;
|
|
||||||
|
|
||||||
void IDocumentInterface::ResolveApplicationContentPath(HLERequestContext& ctx) {
|
|
||||||
struct ContentPath {
|
|
||||||
u8 file_system_proxy_type;
|
|
||||||
u64 program_id;
|
|
||||||
};
|
|
||||||
static_assert(sizeof(ContentPath) == 0x10, "ContentPath has wrong size");
|
|
||||||
|
|
||||||
IPC::RequestParser rp{ctx};
|
|
||||||
auto content_path = rp.PopRaw<ContentPath>();
|
|
||||||
LOG_WARNING(Service_NS, "(STUBBED) called, file_system_proxy_type={}, program_id={:016X}",
|
|
||||||
content_path.file_system_proxy_type, content_path.program_id);
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
|
||||||
rb.Push(ResultSuccess);
|
|
||||||
}
|
|
||||||
|
|
||||||
void IDocumentInterface::GetRunningApplicationProgramId(HLERequestContext& ctx) {
|
|
||||||
IPC::RequestParser rp{ctx};
|
|
||||||
const auto caller_program_id = rp.PopRaw<u64>();
|
|
||||||
LOG_WARNING(Service_NS, "(STUBBED) called, caller_program_id={:016X}", caller_program_id);
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 4};
|
|
||||||
rb.Push(ResultSuccess);
|
|
||||||
rb.Push<u64>(system.GetApplicationProcessProgramID());
|
|
||||||
}
|
|
||||||
|
|
||||||
IDownloadTaskInterface::IDownloadTaskInterface(Core::System& system_)
|
IDownloadTaskInterface::IDownloadTaskInterface(Core::System& system_)
|
||||||
: ServiceFramework{system_, "IDownloadTaskInterface"} {
|
: ServiceFramework{system_, "IDownloadTaskInterface"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
|
|
|
@ -32,16 +32,6 @@ private:
|
||||||
void ConvertApplicationLanguageToLanguageCode(HLERequestContext& ctx);
|
void ConvertApplicationLanguageToLanguageCode(HLERequestContext& ctx);
|
||||||
};
|
};
|
||||||
|
|
||||||
class IDocumentInterface final : public ServiceFramework<IDocumentInterface> {
|
|
||||||
public:
|
|
||||||
explicit IDocumentInterface(Core::System& system_);
|
|
||||||
~IDocumentInterface() override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
void ResolveApplicationContentPath(HLERequestContext& ctx);
|
|
||||||
void GetRunningApplicationProgramId(HLERequestContext& ctx);
|
|
||||||
};
|
|
||||||
|
|
||||||
class IDownloadTaskInterface final : public ServiceFramework<IDownloadTaskInterface> {
|
class IDownloadTaskInterface final : public ServiceFramework<IDownloadTaskInterface> {
|
||||||
public:
|
public:
|
||||||
explicit IDownloadTaskInterface(Core::System& system_);
|
explicit IDownloadTaskInterface(Core::System& system_);
|
||||||
|
|
|
@ -73,4 +73,9 @@ struct ApplicationOccupiedSize {
|
||||||
std::array<ApplicationOccupiedSizeEntity, 4> entities;
|
std::array<ApplicationOccupiedSizeEntity, 4> entities;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct ContentPath {
|
||||||
|
u8 file_system_proxy_type;
|
||||||
|
u64 program_id;
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace Service::NS
|
} // namespace Service::NS
|
||||||
|
|
Reference in New Issue