mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-10-30 18:24:15 +01:00 
			
		
		
		
	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/content_management_interface.cpp | ||||
|     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.h | ||||
|     hle/service/ns/factory_reset_interface.cpp | ||||
|  | ||||
							
								
								
									
										38
									
								
								src/core/hle/service/ns/document_interface.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								src/core/hle/service/ns/document_interface.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -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
 | ||||
							
								
								
									
										22
									
								
								src/core/hle/service/ns/document_interface.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/core/hle/service/ns/document_interface.h
									
									
									
									
									
										Normal file
									
								
							| @ -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/application_version_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/factory_reset_interface.h" | ||||
| #include "core/hle/service/ns/language.h" | ||||
| @ -465,47 +466,6 @@ Result IApplicationManagerInterface::ConvertApplicationLanguageToLanguageCode( | ||||
|     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_) | ||||
|     : ServiceFramework{system_, "IDownloadTaskInterface"} { | ||||
|     // clang-format off
 | ||||
|  | ||||
| @ -32,16 +32,6 @@ private: | ||||
|     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> { | ||||
| public: | ||||
|     explicit IDownloadTaskInterface(Core::System& system_); | ||||
|  | ||||
| @ -73,4 +73,9 @@ struct ApplicationOccupiedSize { | ||||
|     std::array<ApplicationOccupiedSizeEntity, 4> entities; | ||||
| }; | ||||
| 
 | ||||
| struct ContentPath { | ||||
|     u8 file_system_proxy_type; | ||||
|     u64 program_id; | ||||
| }; | ||||
| 
 | ||||
| } // namespace Service::NS
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user