mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-10-31 02:34:11 +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/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 | ||||||
|  | |||||||
							
								
								
									
										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/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
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user