mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	service: Add fgm services
Adds the basic skeleton for the fgm services based off the information provided by Switch Brew.
This commit is contained in:
		
							parent
							
								
									bf9c62bc76
								
							
						
					
					
						commit
						268eeeb406
					
				@ -171,6 +171,7 @@ void FileBackend::Write(const Entry& entry) {
 | 
				
			|||||||
    SUB(Service, BCAT)                                                                             \
 | 
					    SUB(Service, BCAT)                                                                             \
 | 
				
			||||||
    SUB(Service, BTM)                                                                              \
 | 
					    SUB(Service, BTM)                                                                              \
 | 
				
			||||||
    SUB(Service, Fatal)                                                                            \
 | 
					    SUB(Service, Fatal)                                                                            \
 | 
				
			||||||
 | 
					    SUB(Service, FGM)                                                                              \
 | 
				
			||||||
    SUB(Service, Friend)                                                                           \
 | 
					    SUB(Service, Friend)                                                                           \
 | 
				
			||||||
    SUB(Service, FS)                                                                               \
 | 
					    SUB(Service, FS)                                                                               \
 | 
				
			||||||
    SUB(Service, HID)                                                                              \
 | 
					    SUB(Service, HID)                                                                              \
 | 
				
			||||||
 | 
				
			|||||||
@ -58,6 +58,7 @@ enum class Class : ClassType {
 | 
				
			|||||||
    Service_BCAT,      ///< The BCAT service
 | 
					    Service_BCAT,      ///< The BCAT service
 | 
				
			||||||
    Service_BTM,       ///< The BTM service
 | 
					    Service_BTM,       ///< The BTM service
 | 
				
			||||||
    Service_Fatal,     ///< The Fatal service
 | 
					    Service_Fatal,     ///< The Fatal service
 | 
				
			||||||
 | 
					    Service_FGM,       ///< The FGM service
 | 
				
			||||||
    Service_Friend,    ///< The friend service
 | 
					    Service_Friend,    ///< The friend service
 | 
				
			||||||
    Service_FS,        ///< The FS (Filesystem) service
 | 
					    Service_FS,        ///< The FS (Filesystem) service
 | 
				
			||||||
    Service_HID,       ///< The HID (Human interface device) service
 | 
					    Service_HID,       ///< The HID (Human interface device) service
 | 
				
			||||||
 | 
				
			|||||||
@ -160,6 +160,8 @@ add_library(core STATIC
 | 
				
			|||||||
    hle/service/filesystem/filesystem.h
 | 
					    hle/service/filesystem/filesystem.h
 | 
				
			||||||
    hle/service/filesystem/fsp_srv.cpp
 | 
					    hle/service/filesystem/fsp_srv.cpp
 | 
				
			||||||
    hle/service/filesystem/fsp_srv.h
 | 
					    hle/service/filesystem/fsp_srv.h
 | 
				
			||||||
 | 
					    hle/service/fgm/fgm.cpp
 | 
				
			||||||
 | 
					    hle/service/fgm/fgm.h
 | 
				
			||||||
    hle/service/friend/friend.cpp
 | 
					    hle/service/friend/friend.cpp
 | 
				
			||||||
    hle/service/friend/friend.h
 | 
					    hle/service/friend/friend.h
 | 
				
			||||||
    hle/service/friend/interface.cpp
 | 
					    hle/service/friend/interface.cpp
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										75
									
								
								src/core/hle/service/fgm/fgm.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								src/core/hle/service/fgm/fgm.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,75 @@
 | 
				
			|||||||
 | 
					// Copyright 2018 yuzu emulator team
 | 
				
			||||||
 | 
					// Licensed under GPLv2 or any later version
 | 
				
			||||||
 | 
					// Refer to the license.txt file included.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <memory>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "core/hle/ipc_helpers.h"
 | 
				
			||||||
 | 
					#include "core/hle/kernel/hle_ipc.h"
 | 
				
			||||||
 | 
					#include "core/hle/service/fgm/fgm.h"
 | 
				
			||||||
 | 
					#include "core/hle/service/service.h"
 | 
				
			||||||
 | 
					#include "core/hle/service/sm/sm.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Service::FGM {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class IRequest final : public ServiceFramework<IRequest> {
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    explicit IRequest() : ServiceFramework{"IRequest"} {
 | 
				
			||||||
 | 
					        // clang-format off
 | 
				
			||||||
 | 
					        static const FunctionInfo functions[] = {
 | 
				
			||||||
 | 
					            {0, nullptr, "Initialize"},
 | 
				
			||||||
 | 
					            {1, nullptr, "Set"},
 | 
				
			||||||
 | 
					            {2, nullptr, "Get"},
 | 
				
			||||||
 | 
					            {3, nullptr, "Cancel"},
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        // clang-format on
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        RegisterHandlers(functions);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class FGM final : public ServiceFramework<FGM> {
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    explicit FGM(const char* name) : ServiceFramework{name} {
 | 
				
			||||||
 | 
					        // clang-format off
 | 
				
			||||||
 | 
					        static const FunctionInfo functions[] = {
 | 
				
			||||||
 | 
					            {0, &FGM::Initialize, "Initialize"},
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        // clang-format on
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        RegisterHandlers(functions);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    void Initialize(Kernel::HLERequestContext& ctx) {
 | 
				
			||||||
 | 
					        IPC::ResponseBuilder rb{ctx, 2, 0, 1};
 | 
				
			||||||
 | 
					        rb.Push(RESULT_SUCCESS);
 | 
				
			||||||
 | 
					        rb.PushIpcInterface<IRequest>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        LOG_DEBUG(Service_FGM, "called");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class FGM_DBG final : public ServiceFramework<FGM_DBG> {
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    explicit FGM_DBG() : ServiceFramework{"fgm:dbg"} {
 | 
				
			||||||
 | 
					        // clang-format off
 | 
				
			||||||
 | 
					        static const FunctionInfo functions[] = {
 | 
				
			||||||
 | 
					            {0, nullptr, "Initialize"},
 | 
				
			||||||
 | 
					            {1, nullptr, "Read"},
 | 
				
			||||||
 | 
					            {2, nullptr, "Cancel"},
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        // clang-format on
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        RegisterHandlers(functions);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void InstallInterfaces(SM::ServiceManager& sm) {
 | 
				
			||||||
 | 
					    std::make_shared<FGM>("fgm")->InstallAsService(sm);
 | 
				
			||||||
 | 
					    std::make_shared<FGM>("fgm:0")->InstallAsService(sm);
 | 
				
			||||||
 | 
					    std::make_shared<FGM>("fgm:9")->InstallAsService(sm);
 | 
				
			||||||
 | 
					    std::make_shared<FGM_DBG>()->InstallAsService(sm);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} // namespace Service::FGM
 | 
				
			||||||
							
								
								
									
										15
									
								
								src/core/hle/service/fgm/fgm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/core/hle/service/fgm/fgm.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					// Copyright 2018 yuzu emulator team
 | 
				
			||||||
 | 
					// Licensed under GPLv2 or any later version
 | 
				
			||||||
 | 
					// Refer to the license.txt file included.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Service::SM {
 | 
				
			||||||
 | 
					class ServiceManager;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Service::FGM {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void InstallInterfaces(SM::ServiceManager& sm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} // namespace Service::FGM
 | 
				
			||||||
@ -27,6 +27,7 @@
 | 
				
			|||||||
#include "core/hle/service/es/es.h"
 | 
					#include "core/hle/service/es/es.h"
 | 
				
			||||||
#include "core/hle/service/eupld/eupld.h"
 | 
					#include "core/hle/service/eupld/eupld.h"
 | 
				
			||||||
#include "core/hle/service/fatal/fatal.h"
 | 
					#include "core/hle/service/fatal/fatal.h"
 | 
				
			||||||
 | 
					#include "core/hle/service/fgm/fgm.h"
 | 
				
			||||||
#include "core/hle/service/filesystem/filesystem.h"
 | 
					#include "core/hle/service/filesystem/filesystem.h"
 | 
				
			||||||
#include "core/hle/service/friend/friend.h"
 | 
					#include "core/hle/service/friend/friend.h"
 | 
				
			||||||
#include "core/hle/service/grc/grc.h"
 | 
					#include "core/hle/service/grc/grc.h"
 | 
				
			||||||
@ -208,6 +209,7 @@ void Init(std::shared_ptr<SM::ServiceManager>& sm) {
 | 
				
			|||||||
    ES::InstallInterfaces(*sm);
 | 
					    ES::InstallInterfaces(*sm);
 | 
				
			||||||
    EUPLD::InstallInterfaces(*sm);
 | 
					    EUPLD::InstallInterfaces(*sm);
 | 
				
			||||||
    Fatal::InstallInterfaces(*sm);
 | 
					    Fatal::InstallInterfaces(*sm);
 | 
				
			||||||
 | 
					    FGM::InstallInterfaces(*sm);
 | 
				
			||||||
    FileSystem::InstallInterfaces(*sm);
 | 
					    FileSystem::InstallInterfaces(*sm);
 | 
				
			||||||
    Friend::InstallInterfaces(*sm);
 | 
					    Friend::InstallInterfaces(*sm);
 | 
				
			||||||
    GRC::InstallInterfaces(*sm);
 | 
					    GRC::InstallInterfaces(*sm);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user