Merge pull request #3470 from wwylele/news-framework
Service/NEWS: convert to ServiceFramework
This commit is contained in:
commit
42d68d6ea4
|
@ -3,7 +3,6 @@
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
#include "common/logging/log.h"
|
#include "common/logging/log.h"
|
||||||
#include "core/hle/service/news/news.h"
|
|
||||||
#include "core/hle/service/news/news_s.h"
|
#include "core/hle/service/news/news_s.h"
|
||||||
#include "core/hle/service/news/news_u.h"
|
#include "core/hle/service/news/news_u.h"
|
||||||
#include "core/hle/service/service.h"
|
#include "core/hle/service/service.h"
|
||||||
|
@ -11,15 +10,11 @@
|
||||||
namespace Service {
|
namespace Service {
|
||||||
namespace NEWS {
|
namespace NEWS {
|
||||||
|
|
||||||
void Init() {
|
void InstallInterfaces(SM::ServiceManager& service_manager) {
|
||||||
using namespace Kernel;
|
std::make_shared<NEWS_S>()->InstallAsService(service_manager);
|
||||||
|
std::make_shared<NEWS_U>()->InstallAsService(service_manager);
|
||||||
AddService(new NEWS_S_Interface);
|
|
||||||
AddService(new NEWS_U_Interface);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shutdown() {}
|
|
||||||
|
|
||||||
} // namespace NEWS
|
} // namespace NEWS
|
||||||
|
|
||||||
} // namespace Service
|
} // namespace Service
|
||||||
|
|
|
@ -7,11 +7,7 @@
|
||||||
namespace Service {
|
namespace Service {
|
||||||
namespace NEWS {
|
namespace NEWS {
|
||||||
|
|
||||||
/// Initialize NEWS service(s)
|
void InstallInterfaces(SM::ServiceManager& service_manager);
|
||||||
void Init();
|
|
||||||
|
|
||||||
/// Shutdown NEWS service(s)
|
|
||||||
void Shutdown();
|
|
||||||
|
|
||||||
} // namespace NEWS
|
} // namespace NEWS
|
||||||
} // namespace Service
|
} // namespace Service
|
||||||
|
|
|
@ -3,23 +3,13 @@
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
#include "core/hle/ipc_helpers.h"
|
#include "core/hle/ipc_helpers.h"
|
||||||
#include "core/hle/service/news/news.h"
|
|
||||||
#include "core/hle/service/news/news_s.h"
|
#include "core/hle/service/news/news_s.h"
|
||||||
|
|
||||||
namespace Service {
|
namespace Service {
|
||||||
namespace NEWS {
|
namespace NEWS {
|
||||||
|
|
||||||
/**
|
void NEWS_S::GetTotalNotifications(Kernel::HLERequestContext& ctx) {
|
||||||
* GetTotalNotifications service function.
|
IPC::RequestParser rp(ctx, 0x5, 0, 0);
|
||||||
* Inputs:
|
|
||||||
* 0 : 0x00050000
|
|
||||||
* Outputs:
|
|
||||||
* 0 : 0x00050080
|
|
||||||
* 1 : Result of function, 0 on success, otherwise error code
|
|
||||||
* 2 : Number of notifications
|
|
||||||
*/
|
|
||||||
static void GetTotalNotifications(Service::Interface* self) {
|
|
||||||
IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x5, 0, 0);
|
|
||||||
|
|
||||||
LOG_WARNING(Service, "(STUBBED) called");
|
LOG_WARNING(Service, "(STUBBED) called");
|
||||||
|
|
||||||
|
@ -29,9 +19,10 @@ static void GetTotalNotifications(Service::Interface* self) {
|
||||||
rb.Push<u32>(0);
|
rb.Push<u32>(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
const Interface::FunctionInfo FunctionTable[] = {
|
NEWS_S::NEWS_S() : ServiceFramework("news:s", 2) {
|
||||||
|
const FunctionInfo functions[] = {
|
||||||
{0x000100C6, nullptr, "AddNotification"},
|
{0x000100C6, nullptr, "AddNotification"},
|
||||||
{0x00050000, GetTotalNotifications, "GetTotalNotifications"},
|
{0x00050000, &NEWS_S::GetTotalNotifications, "GetTotalNotifications"},
|
||||||
{0x00060042, nullptr, "SetNewsDBHeader"},
|
{0x00060042, nullptr, "SetNewsDBHeader"},
|
||||||
{0x00070082, nullptr, "SetNotificationHeader"},
|
{0x00070082, nullptr, "SetNotificationHeader"},
|
||||||
{0x00080082, nullptr, "SetNotificationMessage"},
|
{0x00080082, nullptr, "SetNotificationMessage"},
|
||||||
|
@ -43,10 +34,8 @@ const Interface::FunctionInfo FunctionTable[] = {
|
||||||
{0x000E0040, nullptr, "SetInfoLEDPattern"},
|
{0x000E0040, nullptr, "SetInfoLEDPattern"},
|
||||||
{0x00120082, nullptr, "GetNotificationHeaderOther"},
|
{0x00120082, nullptr, "GetNotificationHeaderOther"},
|
||||||
{0x00130000, nullptr, "WriteNewsDBSavedata"},
|
{0x00130000, nullptr, "WriteNewsDBSavedata"},
|
||||||
};
|
};
|
||||||
|
RegisterHandlers(functions);
|
||||||
NEWS_S_Interface::NEWS_S_Interface() {
|
|
||||||
Register(FunctionTable);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace NEWS
|
} // namespace NEWS
|
||||||
|
|
|
@ -4,18 +4,27 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
#include "core/hle/service/service.h"
|
#include "core/hle/service/service.h"
|
||||||
|
|
||||||
namespace Service {
|
namespace Service {
|
||||||
namespace NEWS {
|
namespace NEWS {
|
||||||
|
|
||||||
class NEWS_S_Interface : public Service::Interface {
|
class NEWS_S final : public ServiceFramework<NEWS_S> {
|
||||||
public:
|
public:
|
||||||
NEWS_S_Interface();
|
NEWS_S();
|
||||||
|
|
||||||
std::string GetPortName() const override {
|
private:
|
||||||
return "news:s";
|
/**
|
||||||
}
|
* GetTotalNotifications service function.
|
||||||
|
* Inputs:
|
||||||
|
* 0 : 0x00050000
|
||||||
|
* Outputs:
|
||||||
|
* 0 : 0x00050080
|
||||||
|
* 1 : Result of function, 0 on success, otherwise error code
|
||||||
|
* 2 : Number of notifications
|
||||||
|
*/
|
||||||
|
void GetTotalNotifications(Kernel::HLERequestContext& ctx);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace NEWS
|
} // namespace NEWS
|
||||||
|
|
|
@ -7,12 +7,11 @@
|
||||||
namespace Service {
|
namespace Service {
|
||||||
namespace NEWS {
|
namespace NEWS {
|
||||||
|
|
||||||
const Interface::FunctionInfo FunctionTable[] = {
|
NEWS_U::NEWS_U() : ServiceFramework("news:u", 1) {
|
||||||
{0x000100C6, nullptr, "AddNotification"},
|
const FunctionInfo functions[] = {
|
||||||
};
|
{0x000100C8, nullptr, "AddNotification"},
|
||||||
|
};
|
||||||
NEWS_U_Interface::NEWS_U_Interface() {
|
RegisterHandlers(functions);
|
||||||
Register(FunctionTable);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace NEWS
|
} // namespace NEWS
|
||||||
|
|
|
@ -4,18 +4,15 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
#include "core/hle/service/service.h"
|
#include "core/hle/service/service.h"
|
||||||
|
|
||||||
namespace Service {
|
namespace Service {
|
||||||
namespace NEWS {
|
namespace NEWS {
|
||||||
|
|
||||||
class NEWS_U_Interface : public Service::Interface {
|
class NEWS_U final : public ServiceFramework<NEWS_U> {
|
||||||
public:
|
public:
|
||||||
NEWS_U_Interface();
|
NEWS_U();
|
||||||
|
|
||||||
std::string GetPortName() const override {
|
|
||||||
return "news:u";
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace NEWS
|
} // namespace NEWS
|
||||||
|
|
|
@ -250,7 +250,7 @@ void Init() {
|
||||||
IR::InstallInterfaces(*SM::g_service_manager);
|
IR::InstallInterfaces(*SM::g_service_manager);
|
||||||
MVD::Init();
|
MVD::Init();
|
||||||
NDM::Init();
|
NDM::Init();
|
||||||
NEWS::Init();
|
NEWS::InstallInterfaces(*SM::g_service_manager);
|
||||||
NFC::Init();
|
NFC::Init();
|
||||||
NIM::InstallInterfaces(*SM::g_service_manager);
|
NIM::InstallInterfaces(*SM::g_service_manager);
|
||||||
NWM::Init();
|
NWM::Init();
|
||||||
|
@ -272,7 +272,6 @@ void Init() {
|
||||||
/// Shutdown ServiceManager
|
/// Shutdown ServiceManager
|
||||||
void Shutdown() {
|
void Shutdown() {
|
||||||
NFC::Shutdown();
|
NFC::Shutdown();
|
||||||
NEWS::Shutdown();
|
|
||||||
NDM::Shutdown();
|
NDM::Shutdown();
|
||||||
DLP::Shutdown();
|
DLP::Shutdown();
|
||||||
CFG::Shutdown();
|
CFG::Shutdown();
|
||||||
|
|
Reference in New Issue