|
|
@ -4,7 +4,8 @@ |
|
|
|
|
|
|
|
|
#include "common/logging/log.h"
|
|
|
#include "common/logging/log.h"
|
|
|
#include "core/hle/ipc_helpers.h"
|
|
|
#include "core/hle/ipc_helpers.h"
|
|
|
#include "core/hle/service/pctl/pctl_a.h"
|
|
|
|
|
|
|
|
|
#include "core/hle/service/pctl/module.h"
|
|
|
|
|
|
#include "core/hle/service/pctl/pctl.h"
|
|
|
|
|
|
|
|
|
namespace Service::PCTL { |
|
|
namespace Service::PCTL { |
|
|
|
|
|
|
|
|
@ -12,7 +13,7 @@ class IParentalControlService final : public ServiceFramework<IParentalControlSe |
|
|
public: |
|
|
public: |
|
|
IParentalControlService() : ServiceFramework("IParentalControlService") { |
|
|
IParentalControlService() : ServiceFramework("IParentalControlService") { |
|
|
static const FunctionInfo functions[] = { |
|
|
static const FunctionInfo functions[] = { |
|
|
{1, nullptr, "Initialize"}, |
|
|
|
|
|
|
|
|
{1, &IParentalControlService::Initialize, "Initialize"}, |
|
|
{1001, nullptr, "CheckFreeCommunicationPermission"}, |
|
|
{1001, nullptr, "CheckFreeCommunicationPermission"}, |
|
|
{1002, nullptr, "ConfirmLaunchApplicationPermission"}, |
|
|
{1002, nullptr, "ConfirmLaunchApplicationPermission"}, |
|
|
{1003, nullptr, "ConfirmResumeApplicationPermission"}, |
|
|
{1003, nullptr, "ConfirmResumeApplicationPermission"}, |
|
|
@ -108,20 +109,38 @@ public: |
|
|
}; |
|
|
}; |
|
|
RegisterHandlers(functions); |
|
|
RegisterHandlers(functions); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
|
void Initialize(Kernel::HLERequestContext& ctx) { |
|
|
|
|
|
NGLOG_WARNING(Service_PCTL, "(STUBBED) called"); |
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 0}; |
|
|
|
|
|
rb.Push(RESULT_SUCCESS); |
|
|
|
|
|
} |
|
|
}; |
|
|
}; |
|
|
void PCTL_A::CreateService(Kernel::HLERequestContext& ctx) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Module::Interface::CreateService(Kernel::HLERequestContext& ctx) { |
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
|
|
|
|
|
rb.Push(RESULT_SUCCESS); |
|
|
|
|
|
rb.PushIpcInterface<IParentalControlService>(); |
|
|
|
|
|
NGLOG_DEBUG(Service_PCTL, "called"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void Module::Interface::CreateServiceWithoutInitialize(Kernel::HLERequestContext& ctx) { |
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
|
|
rb.Push(RESULT_SUCCESS); |
|
|
rb.Push(RESULT_SUCCESS); |
|
|
rb.PushIpcInterface<IParentalControlService>(); |
|
|
rb.PushIpcInterface<IParentalControlService>(); |
|
|
NGLOG_DEBUG(Service_PCTL, "called"); |
|
|
NGLOG_DEBUG(Service_PCTL, "called"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
PCTL_A::PCTL_A() : ServiceFramework("pctl:a") { |
|
|
|
|
|
static const FunctionInfo functions[] = { |
|
|
|
|
|
{0, &PCTL_A::CreateService, "CreateService"}, |
|
|
|
|
|
{1, nullptr, "CreateServiceWithoutInitialize"}, |
|
|
|
|
|
}; |
|
|
|
|
|
RegisterHandlers(functions); |
|
|
|
|
|
|
|
|
Module::Interface::Interface(std::shared_ptr<Module> module, const char* name) |
|
|
|
|
|
: ServiceFramework(name), module(std::move(module)) {} |
|
|
|
|
|
|
|
|
|
|
|
void InstallInterfaces(SM::ServiceManager& service_manager) { |
|
|
|
|
|
auto module = std::make_shared<Module>(); |
|
|
|
|
|
std::make_shared<PCTL>(module, "pctl")->InstallAsService(service_manager); |
|
|
|
|
|
std::make_shared<PCTL>(module, "pctl:a")->InstallAsService(service_manager); |
|
|
|
|
|
std::make_shared<PCTL>(module, "pctl:r")->InstallAsService(service_manager); |
|
|
|
|
|
std::make_shared<PCTL>(module, "pctl:s")->InstallAsService(service_manager); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} // namespace Service::PCTL
|
|
|
} // namespace Service::PCTL
|