Stub mii:e/mii:u

Needed for SSBU
This commit is contained in:
Dima 2022-11-30 19:57:52 +03:00 committed by Billy Laws
parent 69ee3cfc66
commit 68253fe995
6 changed files with 118 additions and 0 deletions

View File

@ -379,6 +379,8 @@ add_library(skyline SHARED
${source_DIR}/skyline/services/ssl/ISslContext.cpp
${source_DIR}/skyline/services/prepo/IPrepoService.cpp
${source_DIR}/skyline/services/mmnv/IRequest.cpp
${source_DIR}/skyline/services/mii/IStaticService.cpp
${source_DIR}/skyline/services/mii/IDatabaseService.cpp
)
target_include_directories(skyline PRIVATE ${source_DIR}/skyline)
# target_precompile_headers(skyline PRIVATE ${source_DIR}/skyline/common.h) # PCH will currently break Intellisense

View File

@ -0,0 +1,37 @@
// SPDX-License-Identifier: MPL-2.0
// Copyright © 2022 Skyline Team and Contributors (https://github.com/skyline-emu/)
#include "IDatabaseService.h"
namespace skyline::service::mii {
IDatabaseService::IDatabaseService(const DeviceState &state, ServiceManager &manager) : BaseService(state, manager) {}
Result IDatabaseService::IsUpdated(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
response.Push<u8>(0);
return {};
}
Result IDatabaseService::Get(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
return {};
}
Result IDatabaseService::Get1(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
return {};
}
Result IDatabaseService::BuildRandom(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
return {};
}
Result IDatabaseService::BuildDefault(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
return {};
}
Result IDatabaseService::SetInterfaceVersion(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
return {};
}
Result IDatabaseService::DeleteFile(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
return {};
}
}

View File

@ -0,0 +1,40 @@
// SPDX-License-Identifier: MPL-2.0
// Copyright © 2022 Skyline Team and Contributors (https://github.com/skyline-emu/)
#pragma once
#include <services/serviceman.h>
namespace skyline::service::mii {
/**
* @url https://switchbrew.org/wiki/Shared_Database_services#IDatabaseService
*/
class IDatabaseService : public BaseService {
public:
IDatabaseService(const DeviceState &state, ServiceManager &manager);
Result IsUpdated(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
Result Get(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
Result Get1(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
Result BuildRandom(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
Result BuildDefault(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
Result SetInterfaceVersion(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
Result DeleteFile(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
SERVICE_DECL(
SFUNC(0x0, IDatabaseService, IsUpdated),
SFUNC(0x3, IDatabaseService, Get),
SFUNC(0x4, IDatabaseService, Get1),
SFUNC(0x6, IDatabaseService, BuildRandom),
SFUNC(0x7, IDatabaseService, BuildDefault),
SFUNC(0x16, IDatabaseService, SetInterfaceVersion),
SFUNC(0x17, IDatabaseService, DeleteFile)
)
};
}

View File

@ -0,0 +1,14 @@
// SPDX-License-Identifier: MPL-2.0
// Copyright © 2022 Skyline Team and Contributors (https://github.com/skyline-emu/)
#include "IStaticService.h"
#include "IDatabaseService.h"
namespace skyline::service::mii {
IStaticService::IStaticService(const DeviceState &state, ServiceManager &manager) : BaseService(state, manager) {}
Result IStaticService::GetDatabaseService(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
manager.RegisterService(SRVREG(IDatabaseService), session, response);
return {};
}
}

View File

@ -0,0 +1,22 @@
// SPDX-License-Identifier: MPL-2.0
// Copyright © 2022 Skyline Team and Contributors (https://github.com/skyline-emu/)
#pragma once
#include <services/serviceman.h>
namespace skyline::service::mii {
/**
* @url https://switchbrew.org/wiki/Shared_Database_services#mii:u.2C_mii:e
*/
class IStaticService : public BaseService {
public:
IStaticService(const DeviceState &state, ServiceManager &manager);
Result GetDatabaseService(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
SERVICE_DECL(
SFUNC(0x0, IStaticService, GetDatabaseService)
)
};
}

View File

@ -54,6 +54,7 @@
#include "capsrv/IAlbumApplicationService.h"
#include "capsrv/IScreenShotApplicationService.h"
#include "ro/IRoInterface.h"
#include "mii/IStaticService.h"
#include "serviceman.h"
#define SERVICE_CASE(class, name, ...) \
@ -137,6 +138,8 @@ namespace skyline::service {
SERVICE_CASE(capsrv::IScreenShotApplicationService, "caps:su")
SERVICE_CASE(nim::IShopServiceAccessServerInterface, "nim:eca")
SERVICE_CASE(ro::IRoInterface, "ldr:ro")
SERVICE_CASE(mii::IStaticService, "mii:e")
SERVICE_CASE(mii::IStaticService, "mii:u")
default:
std::string_view nameString(span(reinterpret_cast<char *>(&name), sizeof(name)).as_string(true));
throw std::out_of_range(fmt::format("CreateService called with an unknown service name: {}", nameString));