From 3e42b361b1cc245b5ae31f7baccf56d9cdfae03b Mon Sep 17 00:00:00 2001 From: NarcolepticK Date: Fri, 29 Jun 2018 04:13:56 -0400 Subject: [PATCH] service/qtm: Migrate to ServiceFramework (#3892) * service/qtm: Migrate to ServiceFramework * service/qtm: Fix clang format --- src/core/CMakeLists.txt | 2 ++ src/core/hle/service/qtm/qtm.cpp | 11 ++++++----- src/core/hle/service/qtm/qtm.h | 4 +++- src/core/hle/service/qtm/qtm_c.cpp | 24 ++++++++++++++++++++++++ src/core/hle/service/qtm/qtm_c.h | 19 +++++++++++++++++++ src/core/hle/service/qtm/qtm_s.cpp | 19 ++++++++++--------- src/core/hle/service/qtm/qtm_s.h | 7 ++----- src/core/hle/service/qtm/qtm_sp.cpp | 19 ++++++++++--------- src/core/hle/service/qtm/qtm_sp.h | 7 ++----- src/core/hle/service/qtm/qtm_u.cpp | 19 ++++++++++--------- src/core/hle/service/qtm/qtm_u.h | 7 ++----- src/core/hle/service/service.cpp | 2 +- 12 files changed, 91 insertions(+), 49 deletions(-) create mode 100644 src/core/hle/service/qtm/qtm_c.cpp create mode 100644 src/core/hle/service/qtm/qtm_c.h diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index f16e3dcd7..2da700455 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -342,6 +342,8 @@ add_library(core STATIC hle/service/pxi/pxi.h hle/service/qtm/qtm.cpp hle/service/qtm/qtm.h + hle/service/qtm/qtm_c.cpp + hle/service/qtm/qtm_c.h hle/service/qtm/qtm_s.cpp hle/service/qtm/qtm_s.h hle/service/qtm/qtm_sp.cpp diff --git a/src/core/hle/service/qtm/qtm.cpp b/src/core/hle/service/qtm/qtm.cpp index f11542263..7c1eba2d6 100644 --- a/src/core/hle/service/qtm/qtm.cpp +++ b/src/core/hle/service/qtm/qtm.cpp @@ -3,18 +3,19 @@ // Refer to the license.txt file included. #include "core/hle/service/qtm/qtm.h" +#include "core/hle/service/qtm/qtm_c.h" #include "core/hle/service/qtm/qtm_s.h" #include "core/hle/service/qtm/qtm_sp.h" #include "core/hle/service/qtm/qtm_u.h" -#include "core/hle/service/service.h" namespace Service { namespace QTM { -void Init() { - AddService(new QTM_S()); - AddService(new QTM_SP()); - AddService(new QTM_U()); +void InstallInterfaces(SM::ServiceManager& service_manager) { + std::make_shared()->InstallAsService(service_manager); + std::make_shared()->InstallAsService(service_manager); + std::make_shared()->InstallAsService(service_manager); + std::make_shared()->InstallAsService(service_manager); } } // namespace QTM diff --git a/src/core/hle/service/qtm/qtm.h b/src/core/hle/service/qtm/qtm.h index 33b774c79..6cf50e5f2 100644 --- a/src/core/hle/service/qtm/qtm.h +++ b/src/core/hle/service/qtm/qtm.h @@ -4,11 +4,13 @@ #pragma once +#include "core/hle/service/service.h" + namespace Service { namespace QTM { /// Initializes all QTM services. -void Init(); +void InstallInterfaces(SM::ServiceManager& service_manager); } // namespace QTM } // namespace Service diff --git a/src/core/hle/service/qtm/qtm_c.cpp b/src/core/hle/service/qtm/qtm_c.cpp new file mode 100644 index 000000000..2f617f8b0 --- /dev/null +++ b/src/core/hle/service/qtm/qtm_c.cpp @@ -0,0 +1,24 @@ +// Copyright 2016 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "core/hle/ipc_helpers.h" +#include "core/hle/service/qtm/qtm_c.h" + +namespace Service { +namespace QTM { + +QTM_C::QTM_C() : ServiceFramework("qtm:c", 2) { + static const FunctionInfo functions[] = { + // clang-format off + // qtm calibration commands + {0x00010000, nullptr, "InitializeHardwareCheck"}, + {0x00050040, nullptr, "SetIrLedCheck"}, + // clang-format on + }; + + RegisterHandlers(functions); +}; + +} // namespace QTM +} // namespace Service diff --git a/src/core/hle/service/qtm/qtm_c.h b/src/core/hle/service/qtm/qtm_c.h new file mode 100644 index 000000000..0abd6da88 --- /dev/null +++ b/src/core/hle/service/qtm/qtm_c.h @@ -0,0 +1,19 @@ +// Copyright 2016 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 QTM { + +class QTM_C final : public ServiceFramework { +public: + QTM_C(); + ~QTM_C() = default; +}; + +} // namespace QTM +} // namespace Service diff --git a/src/core/hle/service/qtm/qtm_s.cpp b/src/core/hle/service/qtm/qtm_s.cpp index ad7df24a0..b9069e69d 100644 --- a/src/core/hle/service/qtm/qtm_s.cpp +++ b/src/core/hle/service/qtm/qtm_s.cpp @@ -2,21 +2,22 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include "core/hle/ipc_helpers.h" #include "core/hle/service/qtm/qtm_s.h" namespace Service { namespace QTM { -const Interface::FunctionInfo FunctionTable[] = { - // clang-format off - // qtm common commands - {0x00010080, nullptr, "GetHeadtrackingInfoRaw"}, - {0x00020080, nullptr, "GetHeadtrackingInfo"}, - // clang-format on -}; +QTM_S::QTM_S() : ServiceFramework("qtm:s", 2) { + static const FunctionInfo functions[] = { + // clang-format off + // qtm common commands + {0x00010080, nullptr, "GetHeadtrackingInfoRaw"}, + {0x00020080, nullptr, "GetHeadtrackingInfo"}, + // clang-format on + }; -QTM_S::QTM_S() { - Register(FunctionTable); + RegisterHandlers(functions); } } // namespace QTM diff --git a/src/core/hle/service/qtm/qtm_s.h b/src/core/hle/service/qtm/qtm_s.h index e66138ed0..290c5728f 100644 --- a/src/core/hle/service/qtm/qtm_s.h +++ b/src/core/hle/service/qtm/qtm_s.h @@ -9,13 +9,10 @@ namespace Service { namespace QTM { -class QTM_S final : public Interface { +class QTM_S final : public ServiceFramework { public: QTM_S(); - - std::string GetPortName() const override { - return "qtm:s"; - } + ~QTM_S() = default; }; } // namespace QTM diff --git a/src/core/hle/service/qtm/qtm_sp.cpp b/src/core/hle/service/qtm/qtm_sp.cpp index 6e0695d34..955313a16 100644 --- a/src/core/hle/service/qtm/qtm_sp.cpp +++ b/src/core/hle/service/qtm/qtm_sp.cpp @@ -2,21 +2,22 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include "core/hle/ipc_helpers.h" #include "core/hle/service/qtm/qtm_sp.h" namespace Service { namespace QTM { -const Interface::FunctionInfo FunctionTable[] = { - // clang-format off - // qtm common commands - {0x00010080, nullptr, "GetHeadtrackingInfoRaw"}, - {0x00020080, nullptr, "GetHeadtrackingInfo"}, - // clang-format on -}; +QTM_SP::QTM_SP() : ServiceFramework("qtm:sp", 2) { + static const FunctionInfo functions[] = { + // clang-format off + // qtm common commands + {0x00010080, nullptr, "GetHeadtrackingInfoRaw"}, + {0x00020080, nullptr, "GetHeadtrackingInfo"}, + // clang-format on + }; -QTM_SP::QTM_SP() { - Register(FunctionTable); + RegisterHandlers(functions); } } // namespace QTM diff --git a/src/core/hle/service/qtm/qtm_sp.h b/src/core/hle/service/qtm/qtm_sp.h index 0ae0618fc..622e90ad0 100644 --- a/src/core/hle/service/qtm/qtm_sp.h +++ b/src/core/hle/service/qtm/qtm_sp.h @@ -9,13 +9,10 @@ namespace Service { namespace QTM { -class QTM_SP final : public Interface { +class QTM_SP final : public ServiceFramework { public: QTM_SP(); - - std::string GetPortName() const override { - return "qtm:sp"; - } + ~QTM_SP() = default; }; } // namespace QTM diff --git a/src/core/hle/service/qtm/qtm_u.cpp b/src/core/hle/service/qtm/qtm_u.cpp index a0f808432..c8756d308 100644 --- a/src/core/hle/service/qtm/qtm_u.cpp +++ b/src/core/hle/service/qtm/qtm_u.cpp @@ -2,21 +2,22 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include "core/hle/ipc_helpers.h" #include "core/hle/service/qtm/qtm_u.h" namespace Service { namespace QTM { -const Interface::FunctionInfo FunctionTable[] = { - // clang-format off - // qtm common commands - {0x00010080, nullptr, "GetHeadtrackingInfoRaw"}, - {0x00020080, nullptr, "GetHeadtrackingInfo"}, - // clang-format on -}; +QTM_U::QTM_U() : ServiceFramework("qtm:u", 2) { + static const FunctionInfo functions[] = { + // clang-format off + // qtm common commands + {0x00010080, nullptr, "GetHeadtrackingInfoRaw"}, + {0x00020080, nullptr, "GetHeadtrackingInfo"}, + // clang-format on + }; -QTM_U::QTM_U() { - Register(FunctionTable); + RegisterHandlers(functions); } } // namespace QTM diff --git a/src/core/hle/service/qtm/qtm_u.h b/src/core/hle/service/qtm/qtm_u.h index 1ed4c0adc..78d611081 100644 --- a/src/core/hle/service/qtm/qtm_u.h +++ b/src/core/hle/service/qtm/qtm_u.h @@ -9,13 +9,10 @@ namespace Service { namespace QTM { -class QTM_U final : public Interface { +class QTM_U final : public ServiceFramework { public: QTM_U(); - - std::string GetPortName() const override { - return "qtm:u"; - } + ~QTM_U() = default; }; } // namespace QTM diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index 477f7e8e4..b5f96602f 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp @@ -254,7 +254,7 @@ void Init(std::shared_ptr& sm) { NIM::InstallInterfaces(*sm); NWM::Init(); PTM::InstallInterfaces(*sm); - QTM::Init(); + QTM::InstallInterfaces(*sm); AddService(new CSND::CSND_SND); AddService(new DSP_DSP::Interface);