Skip to content
Snippets Groups Projects
Commit 268eeeb4 authored by Lioncash's avatar Lioncash
Browse files

service: Add fgm services

Adds the basic skeleton for the fgm services based off the information
provided by Switch Brew.
parent bf9c62bc
No related branches found
No related tags found
No related merge requests found
......@@ -171,6 +171,7 @@ void FileBackend::Write(const Entry& entry) {
SUB(Service, BCAT) \
SUB(Service, BTM) \
SUB(Service, Fatal) \
SUB(Service, FGM) \
SUB(Service, Friend) \
SUB(Service, FS) \
SUB(Service, HID) \
......
......@@ -58,6 +58,7 @@ enum class Class : ClassType {
Service_BCAT, ///< The BCAT service
Service_BTM, ///< The BTM service
Service_Fatal, ///< The Fatal service
Service_FGM, ///< The FGM service
Service_Friend, ///< The friend service
Service_FS, ///< The FS (Filesystem) 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/fsp_srv.cpp
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.h
hle/service/friend/interface.cpp
......
// 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
// 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/eupld/eupld.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/friend/friend.h"
#include "core/hle/service/grc/grc.h"
......@@ -208,6 +209,7 @@ void Init(std::shared_ptr<SM::ServiceManager>& sm) {
ES::InstallInterfaces(*sm);
EUPLD::InstallInterfaces(*sm);
Fatal::InstallInterfaces(*sm);
FGM::InstallInterfaces(*sm);
FileSystem::InstallInterfaces(*sm);
Friend::InstallInterfaces(*sm);
GRC::InstallInterfaces(*sm);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment