From c7c180fdf1075827075e7aad6f821cafd09f02f3 Mon Sep 17 00:00:00 2001 From: Rozlette Date: Thu, 18 Jan 2018 10:58:29 -0600 Subject: [PATCH 1/2] time: Refactor time:* to use a single shared module --- src/core/CMakeLists.txt | 4 ++++ src/core/hle/service/time/time.cpp | 28 +++++++++++----------------- src/core/hle/service/time/time.h | 20 ++++++++++++-------- src/core/hle/service/time/time_s.cpp | 20 ++++++++++++++++++++ src/core/hle/service/time/time_s.h | 18 ++++++++++++++++++ src/core/hle/service/time/time_u.cpp | 23 +++++++++++++++++++++++ src/core/hle/service/time/time_u.h | 18 ++++++++++++++++++ 7 files changed, 106 insertions(+), 25 deletions(-) create mode 100644 src/core/hle/service/time/time_s.cpp create mode 100644 src/core/hle/service/time/time_s.h create mode 100644 src/core/hle/service/time/time_u.cpp create mode 100644 src/core/hle/service/time/time_u.h diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index c05244b7e0..98fd2a4ccd 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -130,6 +130,10 @@ add_library(core STATIC hle/service/sm/sm.h hle/service/time/time.cpp hle/service/time/time.h + hle/service/time/time_s.cpp + hle/service/time/time_s.h + hle/service/time/time_u.cpp + hle/service/time/time_u.h hle/service/vi/vi.cpp hle/service/vi/vi.h hle/service/vi/vi_m.cpp diff --git a/src/core/hle/service/time/time.cpp b/src/core/hle/service/time/time.cpp index 674b59509e..1d08e968f9 100644 --- a/src/core/hle/service/time/time.cpp +++ b/src/core/hle/service/time/time.cpp @@ -8,6 +8,8 @@ #include "core/hle/kernel/client_port.h" #include "core/hle/kernel/client_session.h" #include "core/hle/service/time/time.h" +#include "core/hle/service/time/time_s.h" +#include "core/hle/service/time/time_u.h" namespace Service { namespace Time { @@ -72,7 +74,7 @@ private: } }; -void TIME::GetStandardUserSystemClock(Kernel::HLERequestContext& ctx) { +void Module::Interface::GetStandardUserSystemClock(Kernel::HLERequestContext& ctx) { auto client_port = std::make_shared()->CreatePort(); auto session = client_port->Connect(); if (session.Succeeded()) { @@ -86,7 +88,7 @@ void TIME::GetStandardUserSystemClock(Kernel::HLERequestContext& ctx) { } } -void TIME::GetStandardNetworkSystemClock(Kernel::HLERequestContext& ctx) { +void Module::Interface::GetStandardNetworkSystemClock(Kernel::HLERequestContext& ctx) { auto client_port = std::make_shared()->CreatePort(); auto session = client_port->Connect(); if (session.Succeeded()) { @@ -100,7 +102,7 @@ void TIME::GetStandardNetworkSystemClock(Kernel::HLERequestContext& ctx) { } } -void TIME::GetStandardSteadyClock(Kernel::HLERequestContext& ctx) { +void Module::Interface::GetStandardSteadyClock(Kernel::HLERequestContext& ctx) { auto client_port = std::make_shared()->CreatePort(); auto session = client_port->Connect(); if (session.Succeeded()) { @@ -114,28 +116,20 @@ void TIME::GetStandardSteadyClock(Kernel::HLERequestContext& ctx) { } } -void TIME::GetTimeZoneService(Kernel::HLERequestContext& ctx) { +void Module::Interface::GetTimeZoneService(Kernel::HLERequestContext& ctx) { IPC::RequestBuilder rb{ctx, 2, 0, 0, 1}; rb.Push(RESULT_SUCCESS); rb.PushIpcInterface(); LOG_DEBUG(Service, "called"); } -TIME::TIME(const char* name) : ServiceFramework(name) { - static const FunctionInfo functions[] = { - {0x00000000, &TIME::GetStandardUserSystemClock, "GetStandardUserSystemClock"}, - {0x00000001, &TIME::GetStandardNetworkSystemClock, "GetStandardNetworkSystemClock"}, - {0x00000002, &TIME::GetStandardSteadyClock, "GetStandardSteadyClock"}, - {0x00000003, &TIME::GetTimeZoneService, "GetTimeZoneService"}, - }; - RegisterHandlers(functions); -} +Module::Interface::Interface(std::shared_ptr time, const char* name) + : ServiceFramework(name), time(std::move(time)) {} void InstallInterfaces(SM::ServiceManager& service_manager) { - std::make_shared