Services/NS: Port ns:s to the new service framework.

master
Subv 2017-08-28 20:26:07 +07:00
parent 4693d23efb
commit 3d86e3afc4
7 changed files with 77 additions and 42 deletions

@ -135,7 +135,8 @@ set(SRCS
hle/service/nim/nim_aoc.cpp hle/service/nim/nim_aoc.cpp
hle/service/nim/nim_s.cpp hle/service/nim/nim_s.cpp
hle/service/nim/nim_u.cpp hle/service/nim/nim_u.cpp
hle/service/ns_s.cpp hle/service/ns/ns.cpp
hle/service/ns/ns_s.cpp
hle/service/nwm/nwm.cpp hle/service/nwm/nwm.cpp
hle/service/nwm/nwm_cec.cpp hle/service/nwm/nwm_cec.cpp
hle/service/nwm/nwm_ext.cpp hle/service/nwm/nwm_ext.cpp
@ -334,7 +335,8 @@ set(HEADERS
hle/service/nim/nim_aoc.h hle/service/nim/nim_aoc.h
hle/service/nim/nim_s.h hle/service/nim/nim_s.h
hle/service/nim/nim_u.h hle/service/nim/nim_u.h
hle/service/ns_s.h hle/service/ns/ns.h
hle/service/ns/ns_s.h
hle/service/nwm/nwm.h hle/service/nwm/nwm.h
hle/service/nwm/nwm_cec.h hle/service/nwm/nwm_cec.h
hle/service/nwm/nwm_ext.h hle/service/nwm/nwm_ext.h

@ -0,0 +1,16 @@
// Copyright 2017 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/hle/service/ns/ns.h"
#include "core/hle/service/ns/ns_s.h"
namespace Service {
namespace NS {
void InstallInterfaces(SM::ServiceManager& service_manager) {
std::make_shared<NS_S>()->InstallAsService(service_manager);
}
} // namespace NS
} // namespace Service

@ -0,0 +1,16 @@
// Copyright 2017 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
#include "core/hle/service/service.h"
namespace Service {
namespace NS {
/// Registers all NS services with the specified service manager.
void InstallInterfaces(SM::ServiceManager& service_manager);
} // namespace NS
} // namespace Service

@ -0,0 +1,34 @@
// Copyright 2015 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/hle/service/ns/ns_s.h"
namespace Service {
namespace NS {
NS_S::NS_S() : ServiceFramework("ns:s", 2) {
static const FunctionInfo functions[] = {
{0x000100C0, nullptr, "LaunchFIRM"},
{0x000200C0, nullptr, "LaunchTitle"},
{0x00030000, nullptr, "TerminateApplication"},
{0x00040040, nullptr, "TerminateProcess"},
{0x000500C0, nullptr, "LaunchApplicationFIRM"},
{0x00060042, nullptr, "SetFIRMParams4A0"},
{0x00070042, nullptr, "CardUpdateInitialize"},
{0x00080000, nullptr, "CardUpdateShutdown"},
{0x000D0140, nullptr, "SetTWLBannerHMAC"},
{0x000E0000, nullptr, "ShutdownAsync"},
{0x00100180, nullptr, "RebootSystem"},
{0x00110100, nullptr, "TerminateTitle"},
{0x001200C0, nullptr, "SetApplicationCpuTimeLimit"},
{0x00150140, nullptr, "LaunchApplication"},
{0x00160000, nullptr, "RebootSystemClean"},
};
RegisterHandlers(functions);
}
NS_S::~NS_S() = default;
} // namespace NS
} // namespace Service

@ -4,18 +4,17 @@
#pragma once #pragma once
#include "core/hle/kernel/kernel.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Service { namespace Service {
namespace NS { namespace NS {
class NS_S final : public Interface { /// Interface to "ns:s" service
class NS_S final : public ServiceFramework<NS_S> {
public: public:
NS_S(); NS_S();
~NS_S();
std::string GetPortName() const override {
return "ns:s";
}
}; };
} // namespace NS } // namespace NS

@ -1,33 +0,0 @@
// Copyright 2015 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/hle/service/ns_s.h"
namespace Service {
namespace NS {
const Interface::FunctionInfo FunctionTable[] = {
{0x000100C0, nullptr, "LaunchFIRM"},
{0x000200C0, nullptr, "LaunchTitle"},
{0x00030000, nullptr, "TerminateApplication"},
{0x00040040, nullptr, "TerminateProcess"},
{0x000500C0, nullptr, "LaunchApplicationFIRM"},
{0x00060042, nullptr, "SetFIRMParams4A0"},
{0x00070042, nullptr, "CardUpdateInitialize"},
{0x00080000, nullptr, "CardUpdateShutdown"},
{0x000D0140, nullptr, "SetTWLBannerHMAC"},
{0x000E0000, nullptr, "ShutdownAsync"},
{0x00100180, nullptr, "RebootSystem"},
{0x00110100, nullptr, "TerminateTitle"},
{0x001200C0, nullptr, "SetApplicationCpuTimeLimit"},
{0x00150140, nullptr, "LaunchApplication"},
{0x00160000, nullptr, "RebootSystemClean"},
};
NS_S::NS_S() {
Register(FunctionTable);
}
} // namespace NS
} // namespace Service

@ -38,7 +38,7 @@
#include "core/hle/service/news/news.h" #include "core/hle/service/news/news.h"
#include "core/hle/service/nfc/nfc.h" #include "core/hle/service/nfc/nfc.h"
#include "core/hle/service/nim/nim.h" #include "core/hle/service/nim/nim.h"
#include "core/hle/service/ns_s.h" #include "core/hle/service/ns/ns.h"
#include "core/hle/service/nwm/nwm.h" #include "core/hle/service/nwm/nwm.h"
#include "core/hle/service/pm_app.h" #include "core/hle/service/pm_app.h"
#include "core/hle/service/ptm/ptm.h" #include "core/hle/service/ptm/ptm.h"
@ -215,6 +215,8 @@ void Init() {
SM::g_service_manager = std::make_shared<SM::ServiceManager>(); SM::g_service_manager = std::make_shared<SM::ServiceManager>();
SM::ServiceManager::InstallInterfaces(SM::g_service_manager); SM::ServiceManager::InstallInterfaces(SM::g_service_manager);
NS::InstallInterfaces(*SM::g_service_manager);
AddNamedPort(new ERR::ERR_F); AddNamedPort(new ERR::ERR_F);
FS::ArchiveInit(); FS::ArchiveInit();
@ -246,7 +248,6 @@ void Init() {
AddService(new HTTP::HTTP_C); AddService(new HTTP::HTTP_C);
AddService(new LDR::LDR_RO); AddService(new LDR::LDR_RO);
AddService(new MIC::MIC_U); AddService(new MIC::MIC_U);
AddService(new NS::NS_S);
AddService(new PM::PM_APP); AddService(new PM::PM_APP);
AddService(new SOC::SOC_U); AddService(new SOC::SOC_U);
AddService(new SSL::SSL_C); AddService(new SSL::SSL_C);