From f3e41fe941ac91a758c21884e02df25fc537f4d5 Mon Sep 17 00:00:00 2001 From: wwylele Date: Sat, 9 Dec 2017 12:34:23 +0200 Subject: [PATCH] ir_u: convert to ServiceFramework --- src/core/hle/service/ir/ir.cpp | 5 +++- src/core/hle/service/ir/ir.h | 9 ++++-- src/core/hle/service/ir/ir_u.cpp | 47 +++++++++++++++----------------- src/core/hle/service/ir/ir_u.h | 9 ++---- src/core/hle/service/service.cpp | 1 + 5 files changed, 36 insertions(+), 35 deletions(-) diff --git a/src/core/hle/service/ir/ir.cpp b/src/core/hle/service/ir/ir.cpp index f06dd552f..b95b6b7da 100644 --- a/src/core/hle/service/ir/ir.cpp +++ b/src/core/hle/service/ir/ir.cpp @@ -13,7 +13,6 @@ namespace IR { void Init() { AddService(new IR_RST_Interface); - AddService(new IR_U_Interface); AddService(new IR_User_Interface); InitUser(); @@ -30,6 +29,10 @@ void ReloadInputDevices() { ReloadInputDevicesRST(); } +void InstallInterfaces(SM::ServiceManager& service_manager) { + std::make_shared()->InstallAsService(service_manager); +} + } // namespace IR } // namespace Service diff --git a/src/core/hle/service/ir/ir.h b/src/core/hle/service/ir/ir.h index 6be3e950c..0045e2a2e 100644 --- a/src/core/hle/service/ir/ir.h +++ b/src/core/hle/service/ir/ir.h @@ -4,10 +4,11 @@ #pragma once +namespace SM { +class ServiceManager; +} + namespace Service { - -class Interface; - namespace IR { /// Initialize IR service @@ -19,5 +20,7 @@ void Shutdown(); /// Reload input devices. Used when input configuration changed void ReloadInputDevices(); +void InstallInterfaces(SM::ServiceManager& service_manager); + } // namespace IR } // namespace Service diff --git a/src/core/hle/service/ir/ir_u.cpp b/src/core/hle/service/ir/ir_u.cpp index ce00d5732..23ccbf33f 100644 --- a/src/core/hle/service/ir/ir_u.cpp +++ b/src/core/hle/service/ir/ir_u.cpp @@ -7,31 +7,28 @@ namespace Service { namespace IR { -const Interface::FunctionInfo FunctionTable[] = { - // clang-format off - {0x00010000, nullptr, "Initialize"}, - {0x00020000, nullptr, "Shutdown"}, - {0x00030042, nullptr, "StartSendTransfer"}, - {0x00040000, nullptr, "WaitSendTransfer"}, - {0x000500C2, nullptr, "StartRecvTransfer"}, - {0x00060000, nullptr, "WaitRecvTransfer"}, - {0x00070080, nullptr, "GetRecvTransferCount"}, - {0x00080000, nullptr, "GetSendState"}, - {0x00090040, nullptr, "SetBitRate"}, - {0x000A0000, nullptr, "GetBitRate"}, - {0x000B0040, nullptr, "SetIRLEDState"}, - {0x000C0000, nullptr, "GetIRLEDRecvState"}, - {0x000D0000, nullptr, "GetSendFinishedEvent"}, - {0x000E0000, nullptr, "GetRecvFinishedEvent"}, - {0x000F0000, nullptr, "GetTransferState"}, - {0x00100000, nullptr, "GetErrorStatus"}, - {0x00110040, nullptr, "SetSleepModeActive"}, - {0x00120040, nullptr, "SetSleepModeState"}, - // clang-format on -}; - -IR_U_Interface::IR_U_Interface() { - Register(FunctionTable); +IR_U::IR_U() : ServiceFramework("ir:u", 1) { + static const FunctionInfo functions[] = { + {0x00010000, nullptr, "Initialize"}, + {0x00020000, nullptr, "Shutdown"}, + {0x00030042, nullptr, "StartSendTransfer"}, + {0x00040000, nullptr, "WaitSendTransfer"}, + {0x000500C2, nullptr, "StartRecvTransfer"}, + {0x00060000, nullptr, "WaitRecvTransfer"}, + {0x00070080, nullptr, "GetRecvTransferCount"}, + {0x00080000, nullptr, "GetSendState"}, + {0x00090040, nullptr, "SetBitRate"}, + {0x000A0000, nullptr, "GetBitRate"}, + {0x000B0040, nullptr, "SetIRLEDState"}, + {0x000C0000, nullptr, "GetIRLEDRecvState"}, + {0x000D0000, nullptr, "GetSendFinishedEvent"}, + {0x000E0000, nullptr, "GetRecvFinishedEvent"}, + {0x000F0000, nullptr, "GetTransferState"}, + {0x00100000, nullptr, "GetErrorStatus"}, + {0x00110040, nullptr, "SetSleepModeActive"}, + {0x00120040, nullptr, "SetSleepModeState"}, + }; + RegisterHandlers(functions); } } // namespace IR diff --git a/src/core/hle/service/ir/ir_u.h b/src/core/hle/service/ir/ir_u.h index 056d2ce1a..16c117fea 100644 --- a/src/core/hle/service/ir/ir_u.h +++ b/src/core/hle/service/ir/ir_u.h @@ -9,13 +9,10 @@ namespace Service { namespace IR { -class IR_U_Interface : public Service::Interface { +/// Interface to "ir:u" service +class IR_U final : public ServiceFramework { public: - IR_U_Interface(); - - std::string GetPortName() const override { - return "ir:u"; - } + IR_U(); }; } // namespace IR diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index 039c86a07..85dc36680 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp @@ -274,6 +274,7 @@ void Init() { FRD::Init(); HID::Init(); IR::Init(); + IR::InstallInterfaces(*SM::g_service_manager); MVD::Init(); NDM::Init(); NEWS::Init();