mirror of
https://github.com/skyline-emu/skyline.git
synced 2024-12-23 21:11:53 +01:00
Stub ldn:u service
This commit is contained in:
parent
77d76ed05a
commit
5b72be88c3
@ -335,6 +335,8 @@ add_library(skyline SHARED
|
|||||||
${source_DIR}/skyline/services/pctl/IParentalControlService.cpp
|
${source_DIR}/skyline/services/pctl/IParentalControlService.cpp
|
||||||
${source_DIR}/skyline/services/lm/ILogService.cpp
|
${source_DIR}/skyline/services/lm/ILogService.cpp
|
||||||
${source_DIR}/skyline/services/lm/ILogger.cpp
|
${source_DIR}/skyline/services/lm/ILogger.cpp
|
||||||
|
${source_DIR}/skyline/services/ldn/IUserServiceCreator.cpp
|
||||||
|
${source_DIR}/skyline/services/ldn/IUserLocalCommunicationService.cpp
|
||||||
${source_DIR}/skyline/services/account/IAccountServiceForApplication.cpp
|
${source_DIR}/skyline/services/account/IAccountServiceForApplication.cpp
|
||||||
${source_DIR}/skyline/services/account/IManagerForApplication.cpp
|
${source_DIR}/skyline/services/account/IManagerForApplication.cpp
|
||||||
${source_DIR}/skyline/services/account/IProfile.cpp
|
${source_DIR}/skyline/services/account/IProfile.cpp
|
||||||
|
@ -0,0 +1,35 @@
|
|||||||
|
// SPDX-License-Identifier: MPL-2.0
|
||||||
|
// Copyright © 2022 Skyline Team and Contributors (https://github.com/skyline-emu/)
|
||||||
|
|
||||||
|
#include "IUserLocalCommunicationService.h"
|
||||||
|
|
||||||
|
namespace skyline::service::ldn {
|
||||||
|
IUserLocalCommunicationService::IUserLocalCommunicationService(const DeviceState &state, ServiceManager &manager)
|
||||||
|
: BaseService(state, manager),
|
||||||
|
event{std::make_shared<type::KEvent>(state, false)} {}
|
||||||
|
|
||||||
|
Result IUserLocalCommunicationService::GetState(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
|
||||||
|
static constexpr u32 StateNone{0x0};
|
||||||
|
response.Push<u32>(StateNone);
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
Result IUserLocalCommunicationService::AttachStateChangeEvent(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
|
||||||
|
auto handle{state.process->InsertItem(event)};
|
||||||
|
Logger::Debug("LDN State Change Event Handle: 0x{:X}", handle);
|
||||||
|
response.copyHandles.push_back(handle);
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
Result IUserLocalCommunicationService::InitializeSystem(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
|
||||||
|
return result::DeviceDisabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
Result IUserLocalCommunicationService::FinalizeSystem(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
Result IUserLocalCommunicationService::InitializeSystem2(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
|
||||||
|
return result::DeviceDisabled;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,57 @@
|
|||||||
|
// 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::ldn {
|
||||||
|
namespace result {
|
||||||
|
static constexpr Result DeviceDisabled{203, 22};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief IUserLocalCommunicationService is used by applications to manage LDN sessions
|
||||||
|
* @url https://switchbrew.org/wiki/LDN_services#IUserLocalCommunicationService
|
||||||
|
*/
|
||||||
|
class IUserLocalCommunicationService : public BaseService {
|
||||||
|
private:
|
||||||
|
std::shared_ptr<type::KEvent> event; //!< The KEvent that is signalled on state changes
|
||||||
|
|
||||||
|
public:
|
||||||
|
IUserLocalCommunicationService(const DeviceState &state, ServiceManager &manager);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @url https://switchbrew.org/wiki/LDN_services#GetState
|
||||||
|
*/
|
||||||
|
Result GetState(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @url https://switchbrew.org/wiki/LDN_services#AttachStateChangeEvent
|
||||||
|
*/
|
||||||
|
Result AttachStateChangeEvent(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @url https://switchbrew.org/wiki/LDN_services#InitializeSystem
|
||||||
|
*/
|
||||||
|
Result InitializeSystem(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @url https://switchbrew.org/wiki/LDN_services#FinalizeSystem
|
||||||
|
*/
|
||||||
|
Result FinalizeSystem(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @url https://switchbrew.org/wiki/LDN_services#InitializeSystem2
|
||||||
|
*/
|
||||||
|
Result InitializeSystem2(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
|
||||||
|
|
||||||
|
SERVICE_DECL(
|
||||||
|
SFUNC(0x0, IUserLocalCommunicationService, GetState),
|
||||||
|
SFUNC(0x64, IUserLocalCommunicationService, AttachStateChangeEvent),
|
||||||
|
SFUNC(0x190, IUserLocalCommunicationService, InitializeSystem),
|
||||||
|
SFUNC(0x191, IUserLocalCommunicationService, FinalizeSystem),
|
||||||
|
SFUNC(0x192, IUserLocalCommunicationService, InitializeSystem2),
|
||||||
|
)
|
||||||
|
};
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
// SPDX-License-Identifier: MPL-2.0
|
||||||
|
// Copyright © 2022 Skyline Team and Contributors (https://github.com/skyline-emu/)
|
||||||
|
|
||||||
|
#include "IUserLocalCommunicationService.h"
|
||||||
|
#include "IUserServiceCreator.h"
|
||||||
|
|
||||||
|
namespace skyline::service::ldn {
|
||||||
|
IUserServiceCreator::IUserServiceCreator(const DeviceState &state, ServiceManager &manager) : BaseService(state, manager) {}
|
||||||
|
|
||||||
|
Result IUserServiceCreator::CreateUserLocalCommunicationService(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
|
||||||
|
manager.RegisterService(SRVREG(IUserLocalCommunicationService), session, response);
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
}
|
23
app/src/main/cpp/skyline/services/ldn/IUserServiceCreator.h
Normal file
23
app/src/main/cpp/skyline/services/ldn/IUserServiceCreator.h
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
// 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::ldn {
|
||||||
|
/**
|
||||||
|
* @brief IUserServiceCreator or ldn:u is used by applications to open a channel to manage LDN sessions
|
||||||
|
* @url https://switchbrew.org/wiki/LDN_services#CreateUserLocalCommunicationService
|
||||||
|
*/
|
||||||
|
class IUserServiceCreator : public BaseService {
|
||||||
|
public:
|
||||||
|
IUserServiceCreator(const DeviceState &state, ServiceManager &manager);
|
||||||
|
|
||||||
|
Result CreateUserLocalCommunicationService(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
|
||||||
|
|
||||||
|
SERVICE_DECL(
|
||||||
|
SFUNC(0x0, IUserServiceCreator, CreateUserLocalCommunicationService)
|
||||||
|
)
|
||||||
|
};
|
||||||
|
}
|
@ -34,6 +34,7 @@
|
|||||||
#include "aocsrv/IAddOnContentManager.h"
|
#include "aocsrv/IAddOnContentManager.h"
|
||||||
#include "pctl/IParentalControlServiceFactory.h"
|
#include "pctl/IParentalControlServiceFactory.h"
|
||||||
#include "lm/ILogService.h"
|
#include "lm/ILogService.h"
|
||||||
|
#include "ldn/IUserServiceCreator.h"
|
||||||
#include "account/IAccountServiceForApplication.h"
|
#include "account/IAccountServiceForApplication.h"
|
||||||
#include "friends/IServiceCreator.h"
|
#include "friends/IServiceCreator.h"
|
||||||
#include "nfp/IUserManager.h"
|
#include "nfp/IUserManager.h"
|
||||||
@ -106,6 +107,7 @@ namespace skyline::service {
|
|||||||
SERVICE_CASE(pctl::IParentalControlServiceFactory, "pctl:s")
|
SERVICE_CASE(pctl::IParentalControlServiceFactory, "pctl:s")
|
||||||
SERVICE_CASE(pctl::IParentalControlServiceFactory, "pctl:r")
|
SERVICE_CASE(pctl::IParentalControlServiceFactory, "pctl:r")
|
||||||
SERVICE_CASE(lm::ILogService, "lm")
|
SERVICE_CASE(lm::ILogService, "lm")
|
||||||
|
SERVICE_CASE(ldn::IUserServiceCreator, "ldn:u")
|
||||||
SERVICE_CASE(account::IAccountServiceForApplication, "acc:u0")
|
SERVICE_CASE(account::IAccountServiceForApplication, "acc:u0")
|
||||||
SERVICE_CASE(friends::IServiceCreator, "friend:u")
|
SERVICE_CASE(friends::IServiceCreator, "friend:u")
|
||||||
SERVICE_CASE(nfp::IUserManager, "nfp:user")
|
SERVICE_CASE(nfp::IUserManager, "nfp:user")
|
||||||
|
Loading…
Reference in New Issue
Block a user