From c8846ca07bc7654fc37d9334d04cb83d8df85776 Mon Sep 17 00:00:00 2001 From: Billy Laws Date: Sun, 16 Feb 2020 19:11:43 +0000 Subject: [PATCH] Refactor service manager services Use the new service naming convention. Fix some small code style issues with {} on if statements --- app/CMakeLists.txt | 2 +- app/src/main/cpp/skyline/kernel/svc.cpp | 2 +- .../main/cpp/skyline/services/base_service.h | 2 +- .../main/cpp/skyline/services/serviceman.cpp | 6 ++--- .../skyline/services/sm/IUserInterface.cpp | 24 +++++++++++++++++++ .../services/sm/{sm.h => IUserInterface.h} | 6 ++--- app/src/main/cpp/skyline/services/sm/sm.cpp | 24 ------------------- 7 files changed, 33 insertions(+), 33 deletions(-) create mode 100644 app/src/main/cpp/skyline/services/sm/IUserInterface.cpp rename app/src/main/cpp/skyline/services/sm/{sm.h => IUserInterface.h} (73%) delete mode 100644 app/src/main/cpp/skyline/services/sm/sm.cpp diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index f918dbb3..1e656849 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -50,7 +50,7 @@ add_library(skyline SHARED ${source_DIR}/skyline/kernel/types/KTransferMemory.cpp ${source_DIR}/skyline/kernel/types/KPrivateMemory.cpp ${source_DIR}/skyline/services/serviceman.cpp - ${source_DIR}/skyline/services/sm/sm.cpp + ${source_DIR}/skyline/services/sm/IUserInterface.cpp ${source_DIR}/skyline/services/fatal/fatal.cpp ${source_DIR}/skyline/services/audout/audout.cpp ${source_DIR}/skyline/services/audren/IAudioRendererManager.cpp diff --git a/app/src/main/cpp/skyline/kernel/svc.cpp b/app/src/main/cpp/skyline/kernel/svc.cpp index d8410ec7..34adae3a 100644 --- a/app/src/main/cpp/skyline/kernel/svc.cpp +++ b/app/src/main/cpp/skyline/kernel/svc.cpp @@ -500,7 +500,7 @@ namespace skyline::kernel::svc { state.process->ReadMemory(port, state.ctx->registers.x1, constant::PortSize); handle_t handle{}; if (std::strcmp(port, "sm:") == 0) { - handle = state.os->serviceManager.NewSession(service::Service::sm); + handle = state.os->serviceManager.NewSession(service::Service::sm_IUserInterface); } else { state.logger->Warn("svcConnectToNamedPort: Connecting to invalid port: '{}'", port); state.ctx->registers.w0 = constant::status::NotFound; diff --git a/app/src/main/cpp/skyline/services/base_service.h b/app/src/main/cpp/skyline/services/base_service.h index 796478c7..5b66a089 100644 --- a/app/src/main/cpp/skyline/services/base_service.h +++ b/app/src/main/cpp/skyline/services/base_service.h @@ -18,7 +18,7 @@ namespace skyline::service { * @brief This contains an enum for every service that's present */ enum class Service { - sm, + sm_IUserInterface, fatal_u, set_sys, apm, diff --git a/app/src/main/cpp/skyline/services/serviceman.cpp b/app/src/main/cpp/skyline/services/serviceman.cpp index 4349b134..25b4c548 100644 --- a/app/src/main/cpp/skyline/services/serviceman.cpp +++ b/app/src/main/cpp/skyline/services/serviceman.cpp @@ -1,6 +1,6 @@ #include #include -#include "sm/sm.h" +#include "sm/IUserInterface.h" #include "set/sys.h" #include "apm/apm.h" #include "am/applet.h" @@ -23,8 +23,8 @@ namespace skyline::service { std::shared_ptr serviceObj; switch (serviceType) { - case Service::sm: - serviceObj = std::make_shared(state, *this); + case Service::sm_IUserInterface: + serviceObj = std::make_shared(state, *this); break; case Service::fatal_u: serviceObj = std::make_shared(state, *this); diff --git a/app/src/main/cpp/skyline/services/sm/IUserInterface.cpp b/app/src/main/cpp/skyline/services/sm/IUserInterface.cpp new file mode 100644 index 00000000..815e2cd8 --- /dev/null +++ b/app/src/main/cpp/skyline/services/sm/IUserInterface.cpp @@ -0,0 +1,24 @@ +#include "IUserInterface.h" + +namespace skyline::service::sm { + IUserInterface::IUserInterface(const DeviceState &state, ServiceManager &manager) : BaseService(state, manager, Service::sm_IUserInterface, "IUserInterface:IUserInterface", { + {0x0, SFUNC(IUserInterface::Initialize)}, + {0x1, SFUNC(IUserInterface::GetService)} + }) {} + + void IUserInterface::Initialize(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {} + + void IUserInterface::GetService(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) { + std::string serviceName(reinterpret_cast(request.cmdArg)); + if (serviceName.empty()) { + response.errorCode = constant::status::ServiceInvName; + } else { + try { + manager.NewService(serviceName, session, response); + } catch (std::out_of_range &) { + response.errorCode = constant::status::ServiceNotReg; + state.logger->Warn("Service has not been implemented: \"{}\"", serviceName); + } + } + } +} diff --git a/app/src/main/cpp/skyline/services/sm/sm.h b/app/src/main/cpp/skyline/services/sm/IUserInterface.h similarity index 73% rename from app/src/main/cpp/skyline/services/sm/sm.h rename to app/src/main/cpp/skyline/services/sm/IUserInterface.h index b6ab50d2..159d6b51 100644 --- a/app/src/main/cpp/skyline/services/sm/sm.h +++ b/app/src/main/cpp/skyline/services/sm/IUserInterface.h @@ -5,11 +5,11 @@ namespace skyline::service::sm { /** - * @brief sm: or Service Manager is responsible for providing handles to services (https://switchbrew.org/wiki/Services_API) + * @brief IUserInterface or sm: is responsible for providing handles to services (https://switchbrew.org/wiki/Services_API) */ - class sm : public BaseService { + class IUserInterface : public BaseService { public: - sm(const DeviceState &state, ServiceManager &manager); + IUserInterface(const DeviceState &state, ServiceManager &manager); /** * @brief This initializes the sm: service. It doesn't actually do anything. (https://switchbrew.org/wiki/Services_API#Initialize) diff --git a/app/src/main/cpp/skyline/services/sm/sm.cpp b/app/src/main/cpp/skyline/services/sm/sm.cpp deleted file mode 100644 index eeb6ed87..00000000 --- a/app/src/main/cpp/skyline/services/sm/sm.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "sm.h" - -namespace skyline::service::sm { - sm::sm(const DeviceState &state, ServiceManager &manager) : BaseService(state, manager, Service::sm, "sm", { - {0x0, SFUNC(sm::Initialize)}, - {0x1, SFUNC(sm::GetService)} - }) {} - - void sm::Initialize(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {} - - void sm::GetService(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) { - std::string serviceName(reinterpret_cast(request.cmdArg)); - if (serviceName.empty()) - response.errorCode = constant::status::ServiceInvName; - else { - try { - manager.NewService(serviceName, session, response); - } catch (std::out_of_range &) { - response.errorCode = constant::status::ServiceNotReg; - state.logger->Warn("Service has not been implemented: \"{}\"", serviceName); - } - } - } -}